MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Różnica wydajności Mongodb między indeksami Hash i Ascending (jest jakiś powód, aby nie używać hash w polu nieuporządkowanym?)

Biorąc pod uwagę to pole key jest indeksowany w obu przypadkach, samo wyszukiwanie indeksu złożoności byłby bardzo podobny. Jako wartość a byłoby hasowane i przechowywane w drzewie indeksów.

Jeśli szukamy całkowitego kosztu wydajności, wersja zaszyfrowana poniosłaby dodatkowy (nieistotny) koszt haszowania wartości a przed dopasowaniem wartości w drzewie indeksów. Zobacz także mongo/db/index /hash_access_method.h

Ponadto indeks haszowany nie będzie mógł korzystać z kompresji prefiksu indeksu ( WiredTiger) . Kompresja prefiksu indeksu jest szczególnie skuteczna w przypadku niektórych zestawów danych, takich jak te o małej liczności (np. kraj) lub z powtarzającymi się wartościami, takimi jak numery telefonów, kody ubezpieczenia społecznego i współrzędne geograficzne. Jest to szczególnie skuteczne w przypadku indeksów złożonych , gdzie pierwsze pole jest powtarzane ze wszystkimi unikalnymi wartościami drugiego pola.

Generalnie nie ma powodu, aby haszować wartość spoza zakresu. Aby wybrać klucz fragmentu, rozważ liczność , częstotliwość oraz szybkość zmian wartości.

Indeks haszowany jest powszechnie używany w konkretnym przypadku shardingu . Gdy klucz fragmentu wartość to monotonicznie wzrastające/malejące wartość, dystrybucja danych prawdopodobnie przejdzie tylko do jednego fragmentu. W tym miejscu zaszyfrowany klucz fragmentu mógłby poprawić dystrybucję zapisów. To drobny kompromis, który znacznie ulepszy twój klaster shardingu. Zobacz też Hashed vs Ranged Sharding .

To, czy warto, zależy od przypadku użycia. Niestandardowa wartość skrótu oznaczałaby, że każde zapytanie o wartość skrótu musiałoby przejść przez niestandardowy kod skrótu, tj. aplikację.

Zaletą korzystania z wbudowanej funkcji skrótu jest to, że MongoDB automatycznie oblicza skróty podczas rozwiązywania zapytań przy użyciu indeksów skrótu. Dlatego aplikacje nie muszą obliczać skrótów.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Agregacja Mongo i MongoError:wyjątek:BufBuilder próbował zwiększyć() do 134217728 bajtów, przekraczając limit 64 MB

  2. MongoDB znajdź i usuń - najszybszy sposób

  3. Mongoid znajduje osadzony dokument

  4. Nie chcę zaczynać mongod od `sudo mongod`

  5. Analizuj ciąg daty ISO8601 do tej pory ze strefą czasową UTC