컬렉션을 사용하는 경우 각 문서에는 문서 유형이 소득 세부정보인지 지원 세부정보인지 식별하는 필드가 있어야 합니다.
두 개의 컬렉션을 사용하는 경우 수입 및 지출 내역을 표시할 때 두 개의 쿼리를 통해 수입 컬렉션과 지출 컬렉션을 별도로 쿼리한 후 병합하여 표시해야 합니다.
귀하의 질문에 포함된 비특정 요구 사항을 자세히 분석해 보겠습니다.
컬렉션의 경우 각 수입 및 지출 기록은 컬렉션에 배치되는 문서입니다. 다양한 유형의 문서는 무료 스키마이므로 데이터 저장에 문제가 없습니다. 다양한 유형의 데이터를 처리하고 표시하려면 수입 및 지출 내역의 데이터 구조와 필드 구성을 잘 정의해야 합니다. 조회는 매우 쉽습니다. 시간을 기준으로 조회한 후 수입 및 지출 유형을 식별하는 필드에 따라 결과를 별도로 표시할 수 있습니다.
두 개의 컬렉션으로 나누면 서로 다른 유형의 데이터를 별도로 저장하기 때문에 문제가 되지 않습니다. 이때 컬렉션은 기본적으로 관계 DB에서 각각 자체 데이터를 포함하는 두 개의 서로 다른 테이블입니다. 쿼리의 경우 일반적으로 mongodb에서 시간에 따라 두 번에 걸쳐 수입 내역과 지출 내역을 가져와서 시간순으로 병합하고 정렬해야 합니다. 시간이 지나면 정렬 워크로드가 mongodb에서 애플리케이션 측으로 이전됩니다.
두 가지 옵션 모두 장단점이 있습니다. 보유하고 있는 데이터의 양이 그리 많지 않다면 컬렉션에 저장되어 있어 접근하기 쉬운 첫 번째 옵션을 사용하는 것이 좋습니다. 규모가 크면 두 번째 옵션을 채택할 수 있습니다. 결국 데이터베이스 확장보다 애플리케이션 확장이 더 편리합니다.
제 개인적인 의견은 컬렉션에 저장되는 첫 번째 솔루션을 사용하는 것입니다. 데이터의 양이 많지 않으면 수입과 지출 내역이 다르므로 부담이 없습니다. 기간은 시간에 따라 여러 번 저장될 수 있습니다. 컬렉션은 프런트 엔드에 표시될 때 기간에 따라 표시됩니다. 이 경우 시간이 지남에 따라 컬렉션을 수평적으로 늘리기만 하면 되며, 데이터 액세스 코드를 변경할 필요는 없습니다. 쿼리할 때 쿼리 기간에 따라 다른 컬렉션을 전환하기만 하면 됩니다. 간단하고 효율적입니다.
직관적인 아이디어:
귀하의 질문에 포함된 비특정 요구 사항을 자세히 분석해 보겠습니다.