Оптимизация структуры MongoDB: одна или несколько коллекций?

Доброго времени суток.
Пишу проект, впервые использую MongoDB, возник вопрос: есть ли смысл разделять данные на две коллекции, или это только замедлить работу приложения?
Предположим такую ситуацию: есть юзеры, у каждого юзера, среди прочего, есть список объектов. А у этих объектов, в свою очередь, есть достаточно обширный список… Не знаю, пусть возможных состояний. Есть ли смысл сделать коллекцию юзеров, и в каждом документе на юзера в список объектов записывать их id, а сами объекты хранить в коллекции объектов?
Я понимаю, что для получения информации об объектах одного юзера нужно будет делать два запроса, но будет ли это медленнее, чем хранить массивные объекты в одной коллекции и делать по ним поиск?
И, если не сложно, может ли кто нибудь дать ссылку на информацию по тому, как лучше организовывать MongoDB?

Благодарю за внимание.
  • Вопрос задан
  • 5042 просмотра
Пригласить эксперта
Ответы на вопрос 5
d4rkr00t
@d4rkr00t
Все зависит от количества объектов у пользователя и размера списка у объектов — можно упереться в 16 мб ограничение на размер документа.
Ответ написан
jdponomarev
@jdponomarev
Я бы посоветовал разделить на две коллекции. Чтобы разные сущности лежали в разных коллекциях. Особенно если Вы будете доставать эти состояния из базы отдельно от пользователя. Да и при хранении в массиве не сможете, например, сортировать состояния при запросе.
Плюс запросы к базе будут не такие громоздкие, как с массивом.
Ответ написан
Комментировать
@Alexus1024
Разработчик .Net
По монге есть официальные курсы. Вот видео оттуда по интересующему вас вопросу.

если не открывается — вот прямая ссылка на ютуб: ссылка.
Ответ написан
@Alexus1024
Разработчик .Net
Ещё там вся третья неделя посвящена проектированию схемы, тоже ознакомьтесь.

Если будут проблемы с видео, могу накопировать ссылок на ютуб
Ответ написан
Комментировать
Ближайшие планы развития MongoDB включают в себя лок на коллекцию (в текущей версии лок на базу, раньше был вообще на весь инстанс), так что я бы разделил на отдельные коллекции: в новых версиях окупится.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы