programing

Django에서 매일 데이터베이스에 새 테이블을 만드는 방법

randomtip 2023. 1. 5. 20:32
반응형

Django에서 매일 데이터베이스에 새 테이블을 만드는 방법

Django나 데이터베이스에서 데이터를 어떻게 관리해야 할지 고민 중이어서 이해가 되는 질문이 있습니다.

하루에 약 2000줄, 8줄로 된 테이블입니다.지난 10년간의 일별 데이터를 모두 데이터베이스에 저장하고 매일 새로운 데이터를 추가하고 싶습니다.매일 데이터베이스 테이블을 작성하는 것이 좋습니다.장고에서는 모델별로 표가 만들어지지만 발명가가 5000개의 모델을 만드는 것은 아니다.

테이블 작성에 원시 SQL을 사용하는 유일한 방법입니까?아니면 문서에서 발견하지 못한 방법이 있습니까?

질문에 대한 간단한 답변은 "예, 가장 빠른 방법은 원시 SQL을 사용하는 것입니다." 또는 새로운 모델을 동적으로 만들고 make migration을 실행하는 변형입니다.

즉, 문제나 태스크에 대한 자세한 내용이 없는 경우 테이블을 동적으로 작성하려는 이유에 대해 즉시 질문해야 합니다.우선, Django가 제공하는 훌륭한 ORM 접속을 잃게 됩니다(자동 생성 모델, 매일 이행, 이행 중 데이터 위치가 잘못될 수 있는 데이터, 고객측 전용 코드 등).생각:

  1. 용량이 최소인 거의 모든 웹 기반 프로젝트에서 2000개의 행은 거의 아무것도 아닙니다.하루에 한 번이라도.꼬박 1년이 지나면 73만 줄밖에 안 돼요적절한 스키마인덱스와 액세스패턴의 정규화를 전제로 해도, RDBMS 에서는 무시할 수 있는 것으로 간주됩니다.
  2. 정말로 샤딩을 계획할 필요가 있는 경우는, 연간 또는 10년 단위로 실시하는 것을 고려해 주세요.730K * 10년은 730만 에 불과하며, 이는 일반적으로 여전히 무시할 수 있는 영역(적절한 정규화와 인덱스가 주어짐)으로 간주됩니다.

이 질문의 전제가 속도 문제라면 데이터 모델의 정규화에 대해 잘 생각해 보고 인덱스를 추가해야 할 부분을 생각해 보는 것이 좋습니다.예를 들어 기본 데이터 모델에 적절한 인덱스가 없는 경우 @lodb의 (빠른 손가락!) 제안을 사용하여 수동으로 Django의 ORM에 인덱스를 작성하도록 지시합니다.

class Meta:
    indexes = [
        models.Index(fields=['day',]),
    ]

솔직히 하루에 한 테이블은 전체 프레임워크를 사용하기 훨씬 더 어렵게 만들기 때문에 Django에서 가는 가장 좋은 방법은 아닙니다.

  • 매일 새로운 모델을 만들어야 합니다.
  • 매일 이행과 이행이 필요합니다.
  • 아니면 ORM 사용을 아예 생략할 수 있습니다.

속도가 하루에 테이블을 유지하는 이유라면, 데이필드에 데이터베이스 인덱스가 있는 테이블을 1개만 사용합니다.조금 더 느릴 수도 있지만, 여러분의 삶을 훨씬 더 편하게 해줄 거예요.

모델 정의에 다음을 추가해야 합니다.

class Meta:
    indexes = [
        models.Index(fields=['day',]),
    ]

상세한 것에 대하여는, 다음의 메뉴얼을 참조해 주세요.

언급URL : https://stackoverflow.com/questions/47018556/how-to-create-new-tables-in-database-for-each-day-in-django

반응형