2013-03-09 14 views
5

Non riesco a trovare la documentazione dell'algoritmo che mongodb sta usando per le chiavi di raccolta o shard.Algoritmo di hash della chiave shardb shard

Qualcuno può aiutare con questo o pubblicare un riferimento?

+3

È possibile scaricare la fonte e leggerla. – bmargulies

+0

Puoi chiarire cosa stai cercando? Stai cercando di capire come funziona l'hash sharding, o semplicemente come funzionano le raccolte di sharding in generale? Il titolo si riferisce a "hash", che è un tipo specifico di sharding mentre la descrizione della tua domanda si riferisce a come le raccolte di sharding funzionano in generale. –

+0

Questo dovrebbe iniziare, http://docs.mongodb.org/manual/core/sharding-shard-key/ poiché MangoDB 2.4 è possibile utilizzare la chiave hash incorporata, sebbene se si desidera un maggiore controllo sulla chiave di sharding, si puoi costruire il tuo –

risposta

2

Se siete più interessati a come indicizzazione in lavori generali controlla questa presentazione sugli interni: http://www.mongodb.com/presentations/storage-engine-internals o questo http://www.mongodb.com/presentations/mongodbs-storage-engine-bit-bit

Come un singolo frammento sa molto sull'intera struttura del cluster, utilizza lo stesso algoritmo di indicizzazione internamente solo che esiste un livello di metadati che conosce quale datapart correlato al frammento specifico.

Ci sono alcuni casi particolari, che vengono descritti in questa documentazione: http://docs.mongodb.org/manual/core/indexes/ Così che non è coperto in questo modo nelle presentazioni di cui sopra sono gli indici geospaziali e la particolare uno che è l'indice di hash (DOCS). Questo è anche potrebbe essere utilizzato come chiave shard e chiamato indice di hash e in questo caso lo sharding è hash basato sharding.check THIS e THIS

Chi l'algoritmo di hash che viene utilizzato per questo è: md5 utilizzato in questo file: https://github.com/mongodb/mongo/blob/master/src/mongo/db/hasher.cpp

implementato qui: https://github.com/mongodb/mongo/blob/master/src/mongo/util/md5.cpp

Attualmente funziona solo per un singolo campo come chiave frammento almeno questo potrebbe essere letto dai commenti nel file https://github.com/mongodb/mongo/blob/master/src/mongo/db/index/hash_access_method.cpp sorgente.

Problemi correlati