메모리에서 사용중인 인덱스를 유지할 수 없다면 MongoDB의 속도가 느려진다는 것을 알 수 있습니다. 샤딩과 어떻게 다른가? Sharded는 메모리에 자신의 BTree만을 유지합니까? 아니면 모든 Shard가 전체 컬렉션의 인덱스를 메모리에 유지해야합니까?Sharing을 사용한 메모리의 MongoDB 인덱스
2
A
답변
5
가 분산됩니다 만 메모리에 자신의 BTREE을 유지합니까 ...?
예, 각 샤드는 자체 색인을 관리합니다.
거리의 단어는 메모리에서 사용중인 색인을 유지할 수없는 경우 MongoDB가 느려진다는 것입니다.
샤딩 및 보조 색인을 사용할 때 실제로 악화 될 수 있습니다. 중요한 문제는 라우터 프로세스 (mongos
)가 보조 인덱스의 데이터에 대해 아무 것도 모르는 것입니다.
샤드 키를 사용하여 쿼리를 수행하면 올바른 서버로 직접 라우팅됩니다. 대부분의 경우 작업 부하를 평준화합니다. 따라서 100 개의 쿼리를 100 개의 서버에 분산시킬 수 있으며 각 서버는 1 개의 쿼리에만 응답합니다.
그러나 보조 키를 사용하여 쿼리를 수행하는 경우 해당 쿼리는 모든 서버로 이동해야합니다. 따라서 라우터에 대한 100 개의 쿼리는 100 개의 서버에서 10,000 개의 쿼리를 생성하거나 서버 당 100 개의 쿼리를 생성합니다. 더 많은 서버를 추가 할 때 이러한 "비 shardkey"쿼리는 점점 더 효율적이지 않게됩니다. 작업량이 이 아니고이 더 균형을 이룹니다.
일부 자세한 내용은 MongoDB 문서 here에서 확인할 수 있습니다.
0
인덱스의 자체 부분 (다른 샤드의 데이터는 알 수 없음). 스케일링은 잘 작동하지 않을 것입니다. 샤딩에 대한 몇 가지 자세한 내용은이 문서를 참조하십시오 : http://www.mongodb.org/display/DOCS/Sharding+Introduction
관련 문제
- 1. MongoDB 인덱스/RAM 관계
- 2. mongodb 인덱스 데이터 구조
- 3. MongoDB 배열 인덱스 검색
- 4. MongoDB - 하나의 콜렉션 인덱스 사용하기
- 5. mongodb 또는 cassandra를 사용한 공간 데이터
- 6. Grails Gorm MongoDB 인덱스 임베디드 String Map
- 7. MongoDB 컬렉션 해시 필드에 인덱스 추가
- 8. 정규 표현식 쿼리에서 MongoDB 인덱스 사용
- 9. MongoDB : 인덱스 순서와 쿼리 순서가 일치해야합니까?
- 10. PHP를 사용한 고전적인 평균 미적분과 MongoDB 감소
- 11. 루비와 몽고 (mongodb)를 사용한 공간 클러스터링
- 12. 이전의 유사 요소를 사용한 Z- 인덱스
- 13. MongoDB 또는 Mongoid에서 해시 필드를 어떻게 인덱스 할 수 있습니까?
- 14. MongoDB - 인덱스 오류가없는 sort()에 대한 데이터가 너무 많습니다.
- 15. 실제 메모리의 크기가 2^32-1이면 가상 메모리의 크기는 얼마입니까?
- 16. 메모리의 연관 배열 조회
- 17. 메모리의 데이터 레이아웃
- 18. 가상 메모리의 두 프로세스
- 19. 리눅스 : 메모리의 페이지 식별
- 20. 메모리의 대형 도메인 모델
- 21. 메모리의 Hadoop Reducer 값?
- 22. 힙 메모리의 이상한 문제!
- 23. 메인 메모리의 프로그램 요소
- 24. 메모리의 체크섬 객체
- 25. C++ 메모리의 프로그램 크기
- 26. 4k 메모리의 암호화 알고리즘
- 27. .net 힙 메모리의 아키텍처
- 28. 정적 메모리의 동적 구조?
- 29. Redis, MongoDB, ServiceStack을 사용한 .NET 세션 상태 캐싱
- 30. EC2의 MongoDB RAID : mke2fs를 사용한 잘못된 블록 수
두 개 이상의 키를 공유하는 경우 여전히 모든 키에 대해 효율적인 쿼리를 수행 할 수 있습니까? – nnythm
예, 복합 키의 색인 및 정렬 제한 사항이 있습니다. 이것을 테스트해야하고 어떤 쿼리가 작동하는지 알면 키 순서가 매우 중요합니다. –