Как использовать коллекции в Монго - PullRequest
1 голос
/ 17 февраля 2012

У меня есть 1 коллекция с именем Посещение , в ней я сохраняю документы с информацией о посетителе, странице, ключевом слове, датах и ​​т. Д.

Я думаю, Ключевое слово можно считать отдельной коллекцией, то же самое для Страница . Это заставит меня создавать разные коллекции, но я не уверен, что это правильный путь.

В традиционной модели БД они явно будут храниться в отдельных таблицах, связанных с FK.

  • А как же монго?
  • Полезно ли, чтобы ключи снова и снова имели одно и то же значение для разных документов и просто создавали коллекцию в этом случае?

1 Ответ

3 голосов
/ 23 февраля 2012

Одним из преимуществ MongoDB является его способность встраивать документы.

Вполне разумно, чтобы документы в вашей коллекции посещений содержали ключевое слово и вложенные документы страницы.

Основное правило - встраивать документы для скорости, нормализовать документы для согласованности.

Если вы встраиваете документы Keyword и Page в ваш документ Visit, ваше приложение должно будет сделать только один запрос, чтобы получить всю необходимую информацию. (Скорость)

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

Это, конечно, обобщение, и в конечном итоге вам, разработчику приложения, решать, что лучше всего подойдет для вашей уникальной ситуации. В документе Mongo, озаглавленном «Дизайн схемы», содержится дополнительная информация о внедрении и связывании. http://www.mongodb.org/display/DOCS/Schema+Design

Вы также можете найти полезной статью «Моделирование данных и Rails MongoDB»: http://www.mongodb.org/display/DOCS/MongoDB+Data+Modeling+and+Rails Пример приведен в Rails, но теория дизайна документа применима к любому языку.

Удачи!

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