2

У меня есть база данных на базе MongoDB с чем-то около 100K до 500K текстовых документов внутри, и коллекция продолжает расти. Система должна поддерживать запросы различными полями документов, например. название, категория, значение и т. д.Стратегия определения стратегии MongoDB

Система представляет собой систему в режиме реального времени, которая получает новые документы каждые 5-10 минут.

Мой вопрос:
ли это хорошая идея, чтобы повысить производительность запросов, чтобы определить отдельный индекс для каждого часто запрашиваемых поля (типы полей: небольшой текст, числовой, дата) документа ? Или есть еще одна лучшая практика повышения производительности запросов в MongoDB?

+0

https://docs.mongodb.com/manual/applications/indexes/ – Rsh

ответ

2

Вы должны использовать/делать индексы в зависимости от результата, который вы пытаетесь сделать найти. Очень хорошая идея иметь разные индексы для разных полей, которые вы пытаетесь найти в разное время.

Но имейте в виду, что индексы занимают вашу оперативную память. Больше вы делаете индексы больше, он будет использовать вашу оперативную память. Также рассмотрите порядок индекса при создании для лучшего поиска.

При разработке стратегии индексирования вы должны иметь глубокое понимание запросов своего приложения. Прежде чем создавать индексы, укажите типы запросов, которые вы будете запускать, чтобы вы могли создавать индексы, которые ссылаются на эти поля. Индексы поставляются с производительностью, но более чем стоят затраты на частые запросы в большом наборе данных. Рассмотрим относительную частоту каждого запроса в приложении и оправдывает ли запрос индекс.

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

Некоторые из стратегий выбрать при создании:

  1. Create Indexes to Support Your Queries Индекс поддерживает запрос, если индекс содержит все поля, отсканированные запросом. Создание индексов, поддерживающих запросы, приводит к значительному увеличению производительности запросов.

  2. Use Indexes to Sort Query Results Чтобы поддерживать эффективные запросы, используйте стратегии здесь, когда указывается последовательный порядок и порядок сортировки полей индекса.

  3. Ensure Indexes Fit in RAM Когда ваш индекс помещается в ОЗУ, система может избежать чтения индекса с диска, и вы получите самую быструю обработку.

  4. Create Queries that Ensure Selectivity Селективность - это возможность запроса для узких результатов с использованием индекса. Селективность позволяет MongoDB использовать индекс для большей части работы, связанной с выполнением запроса.

+0

Спасибо за подробное объяснение. –