각 샤드는 샤드 키(shard key)로 구분되는 도큐먼트를 분배해서 가집니다. 마찬가지로 mongod.exe가 그대로 사용됩니다. 그러면 도큐먼트는 어느 샤드에 저장될까요? 이는 샤드 키를 해시 함수를 사용하여 나온 값에 근거해서 결정됩니다. 예를 들어 샤드 키로 Name을 지정하고 도큐먼트의 Name이 John일 때 MongoDB는 John에 대한 해시 함수를 실행합니다. 그리고 이 해시 함수에서 나온 정수 값을 사용하여 John이 담긴 샤드를 찾고, 그 샤드에서 여러분 질의 명령을 실행합니다.
샤드 키가 없는 질의 명령을 실행하면, mongos는 모든 샤드에 질의 명령을 던지는 브로드캐스트(broadcast) 기법으로 실행합니다. 당연히 성능이 큰 폭으로 떨어지므로 주의해야 합니다.
Tip
모든 샤드 안의 도큐먼트는 같은 샤드 키를 가지는 것이 둘 이상 있어서는 안 됩니다. 즉, 샤드 키는 샤드 클러스터 안에서 유니크해야 합니다.
Conf igDB는 모든 샤드에 관한 설정 정보 등을 가집니다. 한마디로 시스템 설정입니다.
Conf igDB는 MongoDB 자체의 내부 정보를 담고 있으므로 내용을 변경하는 대신 MongoDB 샤드 관련 명령을 실행해야 합니다.
Conf igDB가 죽으면 다른 모든 샤드도 사용할 수 없는 상태가 됩니다. 따라서 Conf igDB는 별도의 서버 기기에 설치하는 것을 권장합니다. Conf igDB는 필수적으로 이중화, 즉 replica set 구성을 하도록 되어 있습니다.