mongodb의 데이터베이스에 "사용자"컬렉션이 있습니다. 나는 샤딩을 사용할 것입니다.샤 도드 구성에서 다중 고유 인덱스가있는 Mongodb 데이터베이스
표준 _id 이외의 다른 세 가지 필드 (사용자 이름, 전자 메일 및 계정 번호)는 인덱싱되고 고유해야합니다. 이 필드 3 개는 모든 사용자 문서에 반드시 존재하는 것은 아니며 일부 경우에는 존재하지 않을 수도 있습니다.
사용자가이 필드 중 하나를 자주 훑어 볼 수 있기 때문에 필드를 인덱싱하고 싶습니다. 이 필드는 고유해야하므로이 논리가 클라이언트 측에서 처리되지는 않을 것이므로 필요합니다.
다른 데이터베이스와 마찬가지로 mongodb에는 한계가 있다는 것을 알고 있습니다 만, 웹 응용 프로그램에 대한 일반적인 설정이기 때문에 해결책이 있기를 바랍니다.
이 시나리오에 대한 우아한 해결책이 있습니까?
(데이터베이스 구조와 관련되어 있으므로)이 질문에 중요한지는 확실하지 않지만 공식 mongodb C# 드라이버를 사용하고 있습니다.
sharding을 효율적으로하기 위해서는 mongos 프로세스가 문서에만 기반하여 shard를 선택할 수 있어야하고, 그 shard에만 write를 보내야합니다. 문서에 샤드 인덱스가 아닌 고유 한 키가 있어야한다는 요구 사항에 따라 모든 샤드를 검사해야합니다. 결과적으로 가장 느린 조각만큼 느린 성능을 나타내는 인서트가 생성됩니다. 이 테이블을 분류 할 충분한 사용자가 실제로 있습니까? –