Индексите са критична част от всяка операция с база данни. Дефинирането на правилните индекси може да направи огромна разлика в производителността на вашите сървъри на база данни. Въпреки това, създаването на индекси в MongoDB има няколко клопки, за които трябва да сте наясно за ежедневните си операции. MongoDB на високо ниво поддържа три техники за изграждане на индекси на вашите колекции.
1. Изграждане на индекс на преден план
Когато изградите индекс на преден план, той блокира всички други операции в базата данни – при голяма колекция това може да отнеме няколко часа. Това означава, че вашата база данни не работи по време на изграждането на индекса. Като се има предвид, че това е режимът по подразбиране за изграждане на индекси, не е изненадващо, че много разработчици се стрелят в крака, задействайки случайно изграждане на индекси. Наистина няма основателна причина да задействате изграждане на индекс на преден план на производствен сървър (освен ако не знаете, че колекцията има малко количество данни).
2. Изграждане на фонов индекс
Както името подсказва, процесът на фоново индексиране изгражда индекса във фонов режим, без да засяга наличността на вашия сървър на база данни. Въпреки това, това все още е ресурсоемка операция и трябва да очаквате да видите влошаване на производителността. Освен това, тъй като се случва на заден план, може да отнеме много повече време за изграждане от индексите на преден план. В предишните версии на MongoDB (<2.6), когато правихте изграждане на фонов индекс върху първичния набор от реплика, той щеше да работи като „преден план“ на вторичните сървъри, за щастие вече не е така – това е фоново изграждане на всички възли. Ако изграждането на фонов индекс бъде прекъснато, то ще продължи като изграждане на индекс на преден план при рестартиране на сървъра.
3. Подвижен индекс Build
Процесът за изграждане на подвижния индекс изгражда индекса само на един възел в даден момент. Става нещо подобно:
- Завъртете вторичен възел от набора реплики (можете да направите това, като промените портовете или рестартирате в самостоятелен режим).
- Изградете индекса на този възел на преден план. След като индексът бъде изграден, завъртете възела обратно в набора от реплика.
- След като възелът е настигнал промените, преминете към следващия възел. Ако следващият възел е основен, ще трябва да направите rs.stepDown(), за да го превърнете във вторичен.
- Изплакнете и повторете.
Повече подробности за процеса на изграждане на индекс са в документацията на MongoDB.
С помощта на компилации на подвижни индекси можете да създадете индекс без значително въздействие върху производителността за вашето приложение. Въпреки това е свързано преминаване на отказ – така че приложението ви трябва да може да се справи с това (което така или иначе трябва).
Можете ли да направите подвижен индекс, ако нямате набор от реплика? За съжаление за самостоятелните екземпляри единствената опция е „Изграждане на фонов индекс“.
Изграждането на подвижен индекс е нашият предпочитан подход за изграждане на индекси в ScaleGrid. Ние дори предоставяме потребителски интерфейс и ви улесняваме да стартирате целия процес от нашия потребителски интерфейс. Нашият бекенд ще извърши цялата оркестрация, необходима за пълното изграждане на индекс – ще задейства изграждане на индекс по сървър по сървър. Просто трябва да се настроите при нас и след това да посочите и щракнете!
Както винаги, ако имате допълнителни въпроси, можете да се свържете с нас на [email protected].