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

Czy mogę zmodyfikować istniejący indeks w MongoDB bez jego porzucania?

Nie ma możliwości zmiany indeksu, jak opisujesz, a gdyby tak było, myślę, że wynik pod względem wydajności byłby podobny - w jaki sposób baza danych wykorzystałaby w połowie utworzony/zmieniony indeks podczas, na przykład, tej operacji?

Zamiast tego sugerowałbym użycie opcji tła do zbudowania indeksu na pojedynczym węźle, jeśli taka jest twoja konfiguracja - zajmie to więcej czasu, ale nie będzie tak bardzo przeszkadzać w normalnym działaniu. Po zakończeniu możesz usunąć stary indeks w dowolnym momencie.

Jednak , jeśli masz zestaw replik (zalecane), powinieneś mieć świadomość, że tworzenie indeksu jest zawsze (obecnie) wykonywane na pierwszym planie na serwerze pomocniczym. Jeśli chcesz uniknąć obciążenia swoich drugorzędnych, wykonaj czynności opisane tutaj, aby usunąć członka pojedynczo i zbudować wymagany indeks przed ponownym dołączeniem do zestawu:

http://docs.mongodb.org/manual/administration/indexes/#index-building-replica-sets

Aktualizacja

Tworzenie indeksu w tle na drugorzędnych będzie możliwe począwszy od wydania 2.6 (szczegółowe informacje można znaleźć w informacjach o wydaniu). Nie zostanie to przeniesione do wcześniejszych wersji, więc powyższa uwaga będzie dotyczyć wersji wcześniejszych niż 2.6.

Na koniec, ogólnie rzecz biorąc, indeksy zbudowane w tle będą generalnie większe i mniej wydajne niż te zbudowane na pierwszym planie, więc powyższa metodologia nadal będzie miała swoje zastosowania.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Sortowanie według wielu pól Mongo DB

  2. Czy Meteor ma odrębne zapytanie dotyczące kolekcji?

  3. MongoDB konwertuje datę na ciąg

  4. tworzyć i aktualizować wiele dokumentów MongoDB w jednym połączeniu

  5. Najlepsze zasoby MongoDB