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

MongoDB Wiele indeksów a pojedynczy indeks na tablicy poddokumentów?

To w zasadzie sprowadza się do tego, że 10 indeksów o rozmiarze N jest bardziej wydajnych niż jeden indeks o rozmiarze N * 10. Jeśli patrzysz tylko na odczyty, oddzielne indeksy zawsze powinny być szybsze. Powiązane spacery b-drzewa zbadają mniejszy zestaw kluczy itp.

Należy jednak wziąć pod uwagę kilka punktów:

  • Indeksy w polach tablicy zasadniczo indeksują każdy element tablicy osobno. W związku z tym przeglądanie będzie co najwyżej 1-2 dodatkowe kroki podczas spaceru b-drzewa, co jest znikomym hitem wydajności. Innymi słowy, będą prawie tak samo szybkie.
  • Posiadanie 10 indeksów może oznaczać, że każda aktualizacja/wstawienie będzie wymagać zaktualizowania więcej niż jednego indeksu (w zależności od tego, czy indeksy współdzielą pole, czy aktualizujesz więcej niż 1 sygnaturę czasową naraz). Jest to istotna kwestia dotycząca wydajności.
  • Korzystanie z indeksu tablicy ułatwia dodawanie dodatkowych znaczników czasu (np. Timestamp10).
  • Istnieje ograniczenie liczby przestrzeni nazw, których można użyć na bazę danych (24 KB), a każdy indeks zajmuje jeden. Jeśli utworzysz oddzielny indeks dla każdego pola, może to stać się problemem.
  • Co najważniejsze, indeks tablicy jest znacznie prostszy i uprości Twój kod, a tym samym ułatwi utrzymanie. Biorąc pod uwagę ograniczone różnice w wydajności, powiedziałbym, że jest to najsilniejsza motywacja do skorzystania z indeksu tablicy.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Relacje MongoDB:osadzanie czy odwołanie?

  2. Jak zwrócić tylko wartość w MongoDB?

  3. Aktualizacja tablicy w MongoDB za pomocą sterownika Java

  4. Bezpłatne wdrażanie i monitorowanie baz danych Open Source za pomocą ClusterControl Community Edition

  5. Wyszukiwanie geoprzestrzenne Mongoose:odległość nie działa