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