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