2013-03-09 11 views
5

Nie mogę znaleźć dokumentacji dotyczącej algorytmu używanego przez mongodb do zbierania lub odszyfrowywania kluczy.algorytm mieszania kluczy mongodb shard

Czy ktoś może w tym pomóc lub zamieścić referencję?

+3

Możesz pobrać źródło i przeczytać. – bmargulies

+0

Czy możesz wyjaśnić, czego szukasz? Czy chcesz zrozumieć, w jaki sposób działa funkcja mieszania hash, lub w jaki sposób ogólnie działa zbiór odcisków palców? Twój tytuł odnosi się do "hash", który jest specyficznym rodzajem odtrącania, podczas gdy twój opis pytania odnosi się do tego, jak ogólnie działają zbuforowane kolekcje. –

+0

To powinno Ci zacząć, http://docs.mongodb.org/manual/core/sharding-shard-key/ od MangoDB 2.4 możesz użyć wbudowanego klawisza skrótu, ale jeśli chcesz mieć większą kontrolę nad kluczem do shardowania, potrafisz zbudować własny –

Odpowiedz

2

Jeśli jesteś bardziej zainteresowany tym, jak indeksowanie w pracach ogólnych sprawdź tę prezentację o wnętrzach: http://www.mongodb.com/presentations/storage-engine-internals lub ten http://www.mongodb.com/presentations/mongodbs-storage-engine-bit-bit

Jako indywidualny fragment nie wie wiele o całej strukturze klastra, wykorzystuje on ten sam algorytm indeksowania wewnętrznie, po prostu istnieje warstwa metadanych, która wie, która datapart jest powiązana z konkretnym fragmentem.

Istnieją pewne szczególne przypadki, które są opisane w tej docs: http://docs.mongodb.org/manual/core/indexes/ Więc który nie jest objęty w ten sposób w prezentacjach powyżej są geoprzestrzennych indeksy i wyjątkowy, który jest indeksem zaszyfrowaną (DOCS). Ten jest również może być używany jako klucz Shard i nazywa wskaźnik mieszany i w tym przypadku sharding hash jest oparty sharding.check THIS i THIS

O algorytm mieszający, który jest używany do tego jest: md5 wykorzystywane w tym pliku: https://github.com/mongodb/mongo/blob/master/src/mongo/db/hasher.cpp

realizowane tutaj: https://github.com/mongodb/mongo/blob/master/src/mongo/util/md5.cpp

Obecnie działa tylko dla pojedynczego pola jako klucza Shard przynajmniej mogłoby być odczytane z komentarzy w pliku https://github.com/mongodb/mongo/blob/master/src/mongo/db/index/hash_access_method.cpp źródłowego.

Powiązane problemy