Как бы я разработал эту схему в MongoDB? - PullRequest
2 голосов
/ 29 апреля 2011

Давайте рассмотрим пример чата.

Должен ли я создать 2 коллекции: Room и Messages и сохранить детали комнаты (название, описание) отдельно от сообщений (тело / дата /автор)?Коллекция сообщений будет иметь поле под названием «Комната», которое связано с ObjectId комнаты.

ИЛИ

Должен ли я создать 1 коллекцию под названием Room.И затем в Комнате, есть массив сообщений?

Какая лучшая практика?Что бы вы сделали?

Ответы [ 2 ]

0 голосов
/ 29 апреля 2011

Вопросы дизайна схемы задавались здесь много раз. Пожалуйста, исследуйте, поскольку решения всегда одинаковы - вам просто нужно немного подумать и применить их к своему собственному сценарию:

Разработка схемы MongoDB - чат в реальном времени

Разработка схемы Mongodb

Разработка схемы MongoDB - много маленьких документов или меньше больших документов?

На самом деле не должно быть так сложно заменить X в ответе на Y вашей собственной проблемы.

Кроме того: стандартная документация также применима (и в значительной степени четко описывает вашу проблему):

http://www.mongodb.org/display/DOCS/Schema+Design

0 голосов
/ 29 апреля 2011

Я бы склонялся к вашему первому выбору. Помимо того, что 16 МБ может быть слишком маленьким (я видел несколько довольно занятых чатов в свое время), хранение сообщений по отдельности обеспечивает большую гибкость с вашей стороны. Комнате даже не нужно знать, какие сообщения связаны с ней - просто создайте ее один раз и при необходимости запросите сообщения по вашему Room идентификатору.

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