2013-08-22 2 views
1

좋은 성능의 mongodb 모델을 얻는데 어려움이 있습니다. 2 백만 명의 직원이 있습니다. 직원에게 액세스 할 수있는 수퍼바이저 ID 배열을 저장해야합니다. 이런 그림 데이터는 ..문서 내에서 큰 배열로 mongodb 성능이 발생했습니다.

{ 
'fullName':'Jonathan Smith', 
'employeeId':'8675309', 
'supervisors':[1234,7654,45676,34543,56545] 
} 

각 배열에는 수백 개의 요소가있을 수 있습니다. 요소는 또한 변동될 수 있습니다. 따라서 배열에서 요소를 더하거나 뺄 때 빠른 $ puts 및 $ pulls를 수행해야합니다.

나는 훌륭한 예가 될 것입니다. 이제 55 만 명의 직원이 있으며, 현재 55 만 명의 직원이 있습니다. 따라서 직원 510,000 명을 업데이트해야합니다. 직원 어레이에 5555 명이 추가됩니다.

그러면 관리자가 5555 관리자에게 모든 액세스 권한을 부여합니다.

더 좋은 방법은이 방법이 있습니까? 공연을 보장하기 위해 할 수있는 일이 있습니까?

답변

1

실제로 510,000 명의 직원이 단순히 "감독자 5555가 관리하는 직원"이 아닌 다른 클래스 또는 엔티티에 속한 것처럼 들립니다. 이 클래스를 "A"라고합니다. 직원은 클래스 "A"(및 다른 클래스)에 속하는 것으로 표시되며 5555는 "A"의 관리자로 표시되지만 개별 직원의 관리자는 표시되지 않습니다. 그것은 클래스 "A"의 관리자가 클래스 "A"에서 빠져 나가는 51 만 명의 모든 직원보다 더 많이 변경 될 가능성이 있다고 가정합니다.

+0

나는 당신이 말하는 것을보고 있습니다. 이것은 수퍼바이저가 아마도 같은 그룹 A를 가질 수 있기 때문에 목록 요소를 더 작게 유지할 것입니다. 그래서이 접근 방식을 취했다고 말할 수 있습니다. 아직도 2 백만 명의 직원이 있으며 이러한 직원들에게 그룹 ID를 추가하여 밀어 넣기 및 풀 작업을 수행해야하는 경우는 어떨까요? 실적에 문제가 있습니까? – FarscapePROJ

+0

2 백만 건의 문서가 그리 많지 않습니다. 대화식 응답을 사용하여 실시간으로 이러한 모든 문서를 자주 업데이트해야하는 경우가 아니라면 큰 문제는 아닙니다. 초당 수천 개의 문서를 업데이트 할 수 있어야합니다. – drmirror

+1

최근 MongoDB에서 배열을 늘리는 블로그 게시물을 작성했습니다. http://goo.gl/eDcV5z이 동작에 대한 벤치 마크를 볼 수 있습니다. –