Zgodnie z dokumentacją Mongoose dla MongooseJS
i MongoDB
/ Node.js
:
Po uruchomieniu aplikacji Mongoose automatycznie wywołuje
ensureIndex
każdy indeks zdefiniowany w schemacie. Chociaż jest to przyjemne dla programowania, zaleca się wyłączenie tego zachowania w środowisku produkcyjnym, ponieważ tworzenie indeksu może mieć znaczący wpływ na wydajność. Wyłącz to zachowanie, ustawiającautoIndex
opcję schematu na wartość false.
Wydaje się, że instruuje to usunięcie automatycznego indeksowania z Mongoose przed wdrożeniem, aby zoptymalizować Mongoose od instruowania Mongo, aby przeszedł i przeszedł przez wszystkie indeksy podczas uruchamiania aplikacji, co wydaje się mieć sens.
Jaki jest właściwy sposób obsługi indeksowania w kodzie produkcyjnym? Może zewnętrzny skrypt powinien generować indeksy? A może ensureIndex
jest niepotrzebne, jeśli pojedyncza aplikacja jest jedynym czytnikiem / piszącym w kolekcji, ponieważ będzie kontynuować indeksowanie za każdym razem, gdy nastąpi zapis bazy danych?
Edycja: aby uzupełnić, MongoDB zapewnia dobrą dokumentację dotyczącą sposobu indeksowania, ale nie wyjaśnia, dlaczego lub kiedy należy wykonać jawne dyrektywy indeksowania. Wydaje mi się, że indeksy powinny być aktualizowane automatycznie przez aplikacje pisarza w kolekcjach z istniejącymi indeksami, a to ensureIndex
jest raczej jednorazowa czynność (wykonywana, gdy stosowany jest nowy indeks), w którym to przypadku indeks Mongoose autoIndex
powinien być no-op przy normalnym restarcie serwera.