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

Niebezpieczeństwa związane z indeksami budowlanymi na MongoDB

Indeksy są krytyczną częścią każdej operacji bazy danych. Zdefiniowanie właściwych indeksów może mieć ogromny wpływ na wydajność serwerów baz danych. Jednak tworzenie indeksów w MongoDB wiąże się z kilkoma pułapkami, o których należy pamiętać podczas codziennych operacji. MongoDB na wysokim poziomie obsługuje trzy techniki tworzenia indeksów w Twoich kolekcjach.

1. Budowa indeksu pierwszego planu

Gdy budujesz indeks na pierwszym planie, blokuje on wszystkie inne operacje na bazie danych – w przypadku dużej kolekcji może to zająć kilka godzin. Oznacza to, że Twoja baza danych nie działa na czas budowania indeksu. Biorąc pod uwagę, że jest to domyślny tryb budowania indeksów, nie dziwi fakt, że wielu programistów strzela sobie w stopę, wywołując przypadkowe budowanie indeksów. Naprawdę nie ma dobrego powodu, aby uruchamiać budowanie indeksu pierwszego planu na serwerze produkcyjnym (chyba że wiesz, że kolekcja zawiera niewielką ilość danych).

2. Tworzenie indeksu w tle

Jak sama nazwa wskazuje, proces indeksowania w tle tworzy indeks w tle bez wpływu na dostępność serwera bazy danych. Jednak nadal jest to operacja intensywnie wykorzystująca zasoby i należy spodziewać się spadku wydajności. Ponadto, ponieważ dzieje się to w tle, budowanie może potrwać znacznie dłużej niż indeksy pierwszego planu. W poprzednich wersjach MongoDB (<2,6), gdy wykonywałeś kompilację indeksu w tle na podstawowym zestawie replik, działała ona jako kompilacja „na pierwszym planie” na serwerach pomocniczych, na szczęście już tak nie jest – jest to kompilacja w tle wszystkie węzły. Jeśli budowanie indeksu w tle zostanie przerwane, zostanie wznowione jako budowanie indeksu pierwszego planu po ponownym uruchomieniu serwera.

3. Rolling Index Build

Proces budowania indeksu kroczącego buduje indeks tylko na jednym węźle na raz. To wygląda mniej więcej tak:

  1. Obróć węzeł pomocniczy z zestawu replik (możesz to zrobić, zmieniając porty lub ponownie uruchamiając w trybie autonomicznym).
  2. Zbuduj indeks w tym węźle na pierwszym planie. Po utworzeniu indeksu obróć węzeł z powrotem do zestawu replik.
  3. Gdy węzeł nadąży za zmianami, przejdź do następnego węzła. Jeśli następny węzeł jest podstawowym, będziesz musiał wykonać rs.stepDown(), aby uczynić go drugorzędnym.
  4. Opłucz i powtórz.

Więcej szczegółów na temat procesu budowania indeksu znajduje się w dokumentacji MongoDB.

Korzystając z kompilacji indeksów kroczących, możesz zbudować indeks bez znaczącego wpływu na wydajność aplikacji. Jednak wiąże się to z przełączaniem awaryjnym – więc Twoja aplikacja powinna być w stanie obsłużyć to (co i tak jest potrzebne).

Czy możesz zbudować indeks kroczący, jeśli nie masz zestawu replik? Niestety w przypadku samodzielnych instancji jedyną opcją jest „Budowanie indeksu w tle”.

Budowa indeksu kroczącego jest naszym ulubionym podejściem do budowania indeksów w ScaleGrid. Zapewniamy nawet interfejs użytkownika i ułatwiamy rozpoczęcie całego procesu z naszego interfejsu użytkownika. Nasz backend wykona całą orkiestrację niezbędną do zbudowania pełnego indeksu – uruchomi serwer po budowie indeksu serwera. Wystarczy przeprowadzić konfigurację z nami, a następnie wskazać i kliknąć!

Jak zawsze, jeśli masz dodatkowe pytania, możesz skontaktować się z nami pod adresem [email protected].


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB czy CouchDB - nadaje się do produkcji?

  2. Mongoose findOneAndUpdate i runValidators nie działają

  3. Mongodb — dołącz lub wyklucz niektóre elementy za pomocą sterownika c#

  4. SQL LPAD()

  5. Bazy danych dokumentów:nadmiarowe dane, referencje itp. (w szczególności MongoDB)