2014-06-20 9 views
0

나는 다음과 같은 모델이 고려 중첩 된 모델 대 다수의 컬렉션 : 회사 & 다음과 같이 내가 CompanySchema 기본 을 만들 것MongoDB의 스키마 디자인 -

직원 :

{ 
    "CompanyId":Guid, 
    "Name":String, 
    "IconUrl":String, 
    "Employees":[{ 
     "EmployeeId":Guid, 
     "Name":String, 
     "EmployeeIds":[] 
    }] 
} 

그래서 종업원을 중첩 된 컬렉션에 있고 다른 직원과 직접적인 관계가 있어야합니다.

예를 들어, 직원이 회사 당 50,000 개 이상의 레코드를 얻을 수있는 경우. 2 개의 개별 컬렉션 또는 1 개의 중첩 컬렉션을 갖는 것이 더 좋을까요?

두 개의 콜렉션이있는 경우 직원을 조회 할 때 IconUrl을 사용하도록 회사를 캐시 할 수 있습니다. 나는 또한 회사 간 종업원에 대한 분류 작업을하고 싶다.

테스트를 마친 사람이나 이전 경험을 가진 사람이 지혜를 공유 할 수 있다면 좋을 것입니다.

답변

1

예제에서 두 개의 별도 컬렉션을 만드는 것이 더 바람직합니다.

문서를 포함시키는 것은 어떤 경우에는 매우 유용하지만은 총알이 아닙니다. MongoDB는 문서 당 16MB의 limit on a document size입니다. 따라서 배열에 많은 하위 문서가 포함될 것이라는 것을 알고 있다면 두 개의 모음으로 분할하는 것이 현명 할 것입니다. 당신은 항상에 유용 문서를 디자인가되면

또한, 내장 된 문서 작업을하는 것은 때로는 일반 문서 (I 페이징에 대해 이야기 등 여러 하위 문서를 통해 업데이트)

을 가진만큼 간단하지 않다 사용법에 대해 생각하고 더 합리적인 것을 생각하십시오. 항상 회사의 모든 직원을로드해야합니까 아니면 개별 직원을 더 자주 받아야합니까? 그것들을 갱신하는 것은 어떨까요? 기타

Data Modeling에 대한 자세한 내용은 MongoDB 문서를 참조하십시오.

+0

감사합니다. 예, 대부분의 경우 회사 및 모든 직원이 동일한 요청에로드 될 필요는 없습니다. – seogrady