Zrozumienie indeksowania w MongoDB

TLDR: Indeksowanie jest po prostu sposobem grupowania dokumentów, dzielenia kolekcji na grupy w celu przyspieszenia działania

Przegląd

Indeksy zwiększają wydajność zapytań, jak również są używane do wyszukiwania

Pomysł indeksowania w MongoDB jest podobny do indeksu każdej książki, zwiększają one szybkość znajdowania strony. Indeks w MongoDB zwiększa szybkość znajdowania dokumentów

Jak działają indeksy?

Po pierwsze, zrozummy jak deklaruje się indeks w MongoDB

collectionName.createIndex({field:value}) //for creating indexcollectionName.dropIndex({field:value}) //for removing index

Tutaj pole jest „fieldName”, które będzie indeksowane. „Value” może być -1 lub 1 lub „text”.

To definiuje typ indeksu, 1 lub -1 zwiększają wydajność zapytania find() podczas gdy „text” jest używany do wyszukiwania.

1 i -1 dają kolejność indeksu. Ascending = -1 & Descending =1

Teraz, jak indeksy działają pod maską?

Wyobraźmy sobie kolekcję użytkowników, każdy dokument zawierający różne informacje, jedną z nich jest wynik.

Powiedzmy, że chcemy, aby wszyscy użytkownicy uzyskali wynik 23.

Gdy nie istnieje żaden indeks, MongoDB przechodzi przez każdy dokument, aby znaleźć żądany dokument, To jest nazywane skanowaniem kolekcji, MongoDB ma skrót dla tego COLLSCAN (To jest nazywane skanowaniem tabeli w relacyjnych bazach danych)

Jak możemy to zoptymalizować?

Aby to zoptymalizować, możemy utworzyć tabelę z jedną kolumną dla wyniku i inną kolumną dla referencji, która będzie zawierać identyfikatory dokumentów z tym konkretnym wynikiem. Teraz musimy przeskanować tylko tę tabelę, zamiast skanować całą bazę danych. Jest to znacznie szybsze. To jest dokładnie to, czym jest indeks.

Indeksy pomagają MongoDB zawęzić zbiór danych, który będzie musiał przeskanować. Nazywa się to skanowaniem indeksowym, MongoDB ma na to również skrót IXNSCAN

Tutaj jest wizualna reprezentacja wyniku Indeksu i jego mapowania.

Poprawa wydajności przez Indeks jest widoczna tylko wtedy, gdy liczba dokumentów przekracza 100K lub więcej.

Możesz sam to porównać porównując dwa zapytania jedno z indeksowanym polem i jedno bez Indeksu

db.<collection name>.find(query).explain()

Zwrócony zostanie obiekt

object.winingPlan.stage poda typ skanowania COLLSCAN lub IXNSCAN

ale nie poda czasu wykonania

stosuj metodę explain(’executionStat’) przed metodą zapytania jak find

.

db.<collection name>explain('executionStat').find(query)

executionTimeMillis powie ci czas potrzebny na wykonanie

Downsides of Index

Indeksy nie są darmowe, Indeksy kosztują miejsce. Indeksy mogą zwiększyć prędkość odczytu, ale za każdym razem, gdy coś jest napisane, indeks musi zostać zaktualizowany, aby to rozwiązać, używamy drzewa B, wykonujemy pewne obliczenia przed wstawieniem, więc jest to szybsze.

Drzewo B

Indeksy nie są tabelą grup, koncepcyjnie jest to właściwie drzewo B (drzewo binarne), nie tylko MongoDB, baza danych SQL również używa drzewa B do indeksowania

to wideo najlepiej wyjaśnia drzewo B

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.