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

Indeks w MongoDB

Indeks to typowy sposób na przyspieszenie zapytań w normalnym systemie bazodanowym. Nie ma różnicy między MongoDB a systemem baz danych opartym na dokumentach. Ten artykuł zawiera informacje na temat indeksu w MongoDB w celu optymalizacji zapytań.

Indeks w Mongo:

Domyślny

_id to obiekt ObjectId, 12-bajtowy typ BSON, który gwarantuje unikalność w ramach kolekcji. ObjectId jest generowany na podstawie znacznika czasu, identyfikatora maszyny, identyfikatora procesu i lokalnego licznika przyrostowego procesu.

Pojedyncze pole

W przypadku indeksu jednopolowego i operacji sortowania kolejność sortowania (tj. rosnąco lub malejąco) klucza indeksu nie ma znaczenia, ponieważ MongoDB może przeszukiwać indeks w dowolnym kierunku. Wartość indeksu jest rodzajem indeksu. Na przykład 1 oznacza kolejność rosnącą, a -1 kolejność malejącą.

db.friends.createIndex( { "name" : 1 } )

Pole złożone

Znaczenie ma kolejność pól wymienionych w indeksie złożonym. Na przykład, jeśli indeks złożony składa się z { userid:1, score:-1 }, indeks jest najpierw sortowany według identyfikatora użytkownika, a następnie, w ramach każdej wartości identyfikatora użytkownika, sortowany jest według wyniku.

db.products.createIndex( { "item": 1, "stock": 1 } )

Wiele kluczy

MongoDB używa wielu indeksów do indeksowania zawartości w tablicy. MongoDB tworzy oddzielne wpisy indeksu dla każdego elementu tablicy. Nie musisz jawnie tworzyć wielu kluczy.

Indeks tekstowy

Zbiór może mieć co najwyżej jeden indeks tekstowy.
Koszt wydajności indeksu tekstowego:
indeksy tekstowe mogą być duże. Zawierają one po jednym wpisie indeksu dla każdego unikalnego słowa końcowego w każdym indeksowanym polu dla każdego wstawionego dokumentu.
indeksy tekstowe wpłyną na przepustowość wstawiania, ponieważ MongoDB musi dodać wpis indeksu dla każdego unikalnego słowa z posttematem w każdym indeksowanym polu każdego nowego dokumentu źródłowego.

db.reviews.createIndex( { comments: "text" } )

Indeks skrótu

Zapytanie o zawartość według jej wartości zahaszowanej. Hash to funkcja, którą oblicza się na podstawie jego wartości. Zahaszowana wartość ma być odrębną wartością. Jedyną zaletą jest to, że jest tak szybki, że zajmuje co najwyżej O(1), ale zgodnie z kontraktem normalne drzewo wyszukiwania binarnego zajmie O(Log(N)). Hash będzie teoretycznie szybszy niż normalna implementacja drzewa wyszukiwania binarnego. Ale wadą jest to, że indeks skrótu, który przeszukuje zakres, będzie bardzo powolny niż normalny indeks.

To jest przykład w Pythonie do zbudowania indeksu skrótu

db.active.createIndex( { a: "hashed" } )

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak znaleźć nieużywane indeksy w MongoDB?

  2. C# - MongoDB - Zaktualizuj element wewnątrz zagnieżdżonego dokumentu

  3. Jak zoptymalizować wydajność ClusterControl i jego komponentów?

  4. mangusta :znajdź dane, zapętlając tablicę modeli

  5. Jak złapać wyjątek podczas tworzenia instancji MongoClient?