2013-11-21 2 views
0

샤딩을 시작하려고합니다. 샤드 키는 매우 중요합니다. 찾았습니다. MongoDB doesn't ensure unique _id field values when using a shard key other than _id._id와 함께 복합 샤드 키를 사용할 때 MongoDB가 고유 한 _id 필드 값을 보장합니까?

우리 컬렉션에는 사용자 이름이 샤드 키가됩니다. 복합 샤드 키를 만들고 샤드 키의 두 번째 부분으로 _id를 사용하면 mongoDB가 _id의 고유성을 보장합니까?

+1

사용자 이름과 _id 조합이 고유하지만 반드시 _id가 아닌지 확인하십시오. – Sammaye

답변

1

MongoDB를이 파편에서 고유 _id 필드를 확인하지 않습니다.

The documentation 상태 :

MongoDB를가 샤드 키에 대한 고유성을 적용 할 수 있습니다. 복합 shard 키의 경우 MongoDB는 샤드 키의 특정 구성 요소이 아닌 및 전체 키 조합에 대해 고유성을 적용합니다.

mongo가 전자 메일의 고유성을 적용하려면 전자 메일을 샤드 키로 사용하십시오.

전자 메일 주소의 임의성이 다소 좋지만 (_id has some predictability이 내장되어 있음) 전자 메일 필드를 hashed shard key으로 사용하는 것이 좋습니다.

+0

예를 들어,'email'을 사용하는 샤드 키가 유일해야합니까? 감사 – mils

0

MongoDB는 복합 키의 모든 필드에 대해 고유성을 보장합니다. 그러나 이것이 당신이 찾고 있는지 확실하지 않습니다. 이 서류가 있으면 어떻게됩니까? {_id : 12345, 이메일 : "[email protected]"} 및 {_id : 4567, 이메일 : "[email protected]"}. 공유 키는 고유하지만 동일한 이메일을 두 번 사용합니다.

모든 조각에 대해 고유 한 이메일을 찾고있는 경우 고유 색인을 사용하여 프록시 모음을 만들 수 있습니다. 복합 키로 사용하는 경우

You have more information here

+0

제공된 링크가 답변을 모순됩니다. "MongoDB는 전체 키 조합에 고유성을 적용하고 ** 특정 구성 요소에는 고유성을 적용하지 않습니다 ** 샤드 키의 ". @ Sammaye의 코멘트는 정답입니다. – ixe013

+0

어쩌면 내 영어로는 충분하지 않지만 나는 무엇을 말하는지 볼 수 없다. Sharded 키의 고유성은 두 필드의 조합으로 보장되므로이 예에서는 두 개의 고유 한 샤드 키가 있음을 이해합니다. 그러나 중복 된 이메일을 원하지 않으면 어떻게됩니까? – rubenfa

관련 문제