Я новичок в mongodb, и я столкнулся с дилеммой относительно моего проекта схемы БД:
Должен ли я создать одну отдельную коллекцию или поместить мои данные в несколько коллекций (мы могли бы назвать эти категории, я полагаю).
Теперь я знаю, что многие такие вопросы заданы, но я считаю, что мое дело отличается по двум причинам:
- Если я поеду для многих коллекций, мне нужно будет создать около 120 и это. Это не будет расти в будущем.
- Я знаю, что мне никогда не придется запрашивать или вставлять в несколько коллекций. Я всегда буду запрашивать только одно, поскольку документ в коллекции X не связан ни с одним документом, хранящимся в других коллекциях. Документы могут содержать ссылки на другие части БД, хотя (например, userId и т.д.).
Итак, мой вопрос: может ли 120 коллекций улучшить производительность запросов? Является ли это полезной оптимизацией в моем случае?
Или я должен просто пойти для одиночной коллекции + sharding?
В каждой коллекции ожидается наличие миллионов документов. Если использовать только один, он будет хранить миллиарды документов.
Спасибо заранее!
------- Изменить:
Спасибо за отличные ответы.
На самом деле 120 коллекций - это только собственный лимит, он не очень оптимален:
Данные в сборниках связаны с веб-издателями. Их могут быть миллионы (любой веб-сайт может присоединиться).
Я предполагаю, что идеальной ситуацией было бы, если бы я мог создать коллекцию для каждого издателя (только для хранения своих данных). Но, очевидно, это невозможно из-за ограничений манго.
Итак, я придумал идею фиксированного количества коллекций, чтобы как-то распределить данные. Например: коллекция "A_XX" проведет XX связанные с платформой данные для издателей, чьи имена начинаются с "A".. и т.д. Мы будем поддерживать только некоторые из этих платформ, поэтому 120 коллекций должны быть более чем достаточно.
На другом веб-сайте кто-то предложил использовать многие базы данных вместо многих коллекций. Но это означает накладные расходы, а затем мне придется использовать/управлять многими различными соединениями.
Что вы думаете об этом? Есть ли лучшее решение?
Извините за то, что я не был достаточно конкретным в моем первоначальном вопросе.
Заранее спасибо