Назад | Перейти на главную страницу

Индексирование MongoDB перед добавлением данных

Многие говорят, что после импорта дампа выполняйте «фоновую индексацию». Но что делать, если у вас нет свалки? Например, мы запускаем контейнер Docker с MongoDB и устанавливаем его на разных серверах. И данные будут добавляться по частям. Мы говорим по одной записи за раз. Было бы плохо делать sureIndex во время создания базы данных? Или создать триггер ...? Я не вижу ответов на этот вопрос. Все говорят: «Сделайте это после загрузки данных». У меня не будет такой возможности после загрузки данных, потому что, как я уже сказал, в каждый момент времени входит только одна запись. И если пользователь попытается затем выполнить поиск по этой одной записи по имени поля, они будут ждать вечно, потому что это не индексируется. Мнения о том, что делать? (Пожалуйста, ответьте вежливо.)

Мой общий совет - добавить индекс, прежде чем вам понадобится его широко использовать. Запрос без каких-либо поддерживающих индексов приведет к сканированию коллекции, которое станет более трудоемким и эффективным по мере роста данных в этой коллекции.

Можно создать индекс до того, как будут вставлены какие-либо данные (независимо от того, будут ли после этого выполняться отдельные вставки или массовый импорт). Может быть несколько быстрее вставить с меньшим количеством индексов, но если вы собираетесь потребовать эти индексы в конце импорта, это может не дать значительной общей экономии времени.

Фоновая индексация рекомендуется, если у вас есть существующие данные и вы хотите создать новый индекс. Как и в MongoDB 3.4, построение индекса переднего плана является блокирующей операцией для базы данных, содержащей эту коллекцию, и не рекомендуется для производственной среды, если эта база данных не используется. Построение индекса в фоновом режиме займет больше времени, чем построение индекса переднего плана, но не блокирует чтение или запись.

Примечание: параметр фонового индекса влияет только на начальное построение индекса. После создания индекса любые последующие обновления всегда выполняются как часть обновления документа.