2012-11-09 4 views
1

많은 수의 사용자가 내 데이터베이스에 메시지를 저장하려는 프로젝트를 진행 중입니다. 텍스트와 바이너리 데이터 (전자 메일이라고 생각하는)가 혼합 된 이러한 메시지는 개별 사용자와 다 대일 관계를 가질 것입니다. mongo db는 개별 문서에 대해 16MB의 문서 크기 제한이 있으므로 링크를 통해 연결해야 할 필요가 있다고 생각했습니다.메시징 시스템 용 MongoDb 스키마 설계

이렇게하면 더 많은 왕복 및 성능 저하를 의미하는 두 개의 별도 수집이 필요합니다. 내가 생각하지 못하는 대안이 있습니까?

답변

2

글쎄,별로 선택의 여지가 없습니다. 링크 또는 포함은 표준 선택 사항입니다. 그러나 경우에 따라 하이브리드 방식을 구현하는 것이 유익 할 수 있습니다. 나는 그것을 "일괄 처리"라고 부른다.

접근 방식의 핵심은 삽입과 마찬가지로 많은 메시지를 단일 문서에 스틱킹하는 것입니다. 해당 문서가 오버플로하려고하면 두 번째 문서에 쓰기 시작하고 첫 번째 문서 링크가 생깁니다.

이렇게하면 단일 링크 된 문서보다 대량 읽기 성능이 향상되지만 효율적으로 쿼리 할 수는 없습니다 (메시지이므로 여러 문서를 쿼리하는 것이 좋을 것이라고 생각합니다) .

쿼리 패턴을 평가하고 현명하게 선택하십시오.

+0

모든 메시지를 검색하려면 전체 링크 된 목록을 탐색해야합니까? – secretformula

+0

필요한 것에 따라 다릅니다. –