MongoDB - работа с огромными коллекциями - PullRequest
1 голос
/ 24 января 2020

У меня есть одна огромная коллекция MongoDB, которая содержит сотни миллионов документов (например, 300 м, 400 м и продолжает расти). Как лучше всего обеспечить быстрое выполнение запросов и агрегатов? У меня есть несколько идей, какая из них правильная?

  1. Разделение данных на несколько небольших коллекций.
  2. Хранение первоначально агрегированных данных в отдельных коллекциях, так что для наиболее распространенных запросов / агрегаций результат может быть быстро возвращен.
  3. Добавление правильных индексов - имеет ли смысл добавлять индексы в такую ​​большую коллекцию?
  4. Оставить одну коллекцию и распределить эти данные по нескольким машинам (sharding)? Может ли MongoDB справиться с такими коллекциями, которые распределены по нескольким или нескольким машинам?

Есть ли какие-нибудь лучшие решения, которые я пропустил?

1 Ответ

1 голос
/ 25 января 2020
  1. Разделение данных на несколько небольших коллекций.

    Имеет смысл только тогда, когда ваши запросы и агрегаты ограничены такими небольшими коллекциями. Если ваш запрос должен объединить несколько коллекций, вы не получите так много. Ваши запросы будут более сложными.

  2. Хранение первоначально агрегированных данных в отдельных коллекциях, поэтому для наиболее распространенных запросов / агрегатов результат может быть быстро возвращен.

    Может иметь смысл, однако вы создаете избыточные данные, которые могут стать несовместимыми с вашими фактическими данными. Кроме того, вам нужно больше дис c пробела.

  3. Добавление правильных индексов - имеет ли смысл добавлять индексы в такую ​​большую коллекцию?

    Определенно хорошая идея , Было бы очень удивительно, если бы такая большая коллекция не имела индексов.

  4. Оставить одну коллекцию и распределить эти данные по нескольким компьютерам (сегментирование)?

    Определенно хорошая идея. В определенной степени это похоже на (1), но MongoDB имеет дело с разделением и объединением, поэтому вам не нужно заботиться об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...