MongoDB и встроенные документы, хорошие варианты использования - PullRequest
0 голосов
/ 07 июня 2011

Я использую встроенные документы в MongoDB для приложения Rails 3.Мне нравится, что я могу использовать встроенные документы, и все значения возвращаются одним запросом, и нагрузка на сервер базы данных меньше.Но что произойдет, если я хочу, чтобы мои пользователи могли обновлять свойства, которые действительно должны быть общими для всех документов.Возможна ли такая операция с MongoDB, или мне лучше использовать обычные отношения на основе идентификаторов?Если отношения на основе идентификаторов - это путь, сильно ли это повлияет на производительность?

Если вам нужно узнать что-то еще о приложении или данных, я был бы рад сообщить вам, с чем я работаю.

Документ, который имеет много свойств, общих для всех документов.

Person
name: string
description: string

Документ, который хочет использовать эти свойства:

Post
(references many people)
body: string

Ответы [ 2 ]

1 голос
/ 08 июня 2011

Все зависит от того, что вы собираетесь делать с моделью Person позже.Мне известен как минимум один рабочий пример (блог с использованием MongoDB), где его разработчик хранит пользовательские данные в комментариях и использует одну коллекцию для всего блога.Ну, ладно, он использует второй для своего "облака тегов" :) Ему просто не нужно вести централизованный список всех комментаторов, ему все равно.Его блог содержит сводные данные со всех его предыдущих сайтов / блогов? Всего около 6000 сообщений.Сообщения содержат комментарии, комментарии содержат пользователей, у пользователей есть электронные письма, у него есть опция «подписаться на комментарии» для каждого пользователя, который комментирует некоторые сообщения, авторизация обрабатывается внешним агрегатором услуг OpenID (Loginza), он сохраняет электронную почту пользователя, полученную из ответа Loginza иих "токен входа" в их куки.Так что функциональность довольно хорошая.

Итак, реальный вопрос - что вы собираетесь делать со своими пользователями позже?Если вам действительно нужно отдельное собрание (вы позволите пользователям иметь централизованные панели управления, регистрацию на основе сайта, вы будете делать ориентированные на пользователя функции и т. Д.), Сделайте это отдельным.Если нет - будьте проще и веселитесь:)

1 голос
/ 07 июня 2011

Это зависит от того, какую пользовательскую информацию вы хотите передать через документы. Скажем, если у вас есть пользователь, и у пользователя есть электронные письма. Не имеет смысла перемещать электронные письма в отдельную коллекцию, поскольку на одного пользователя будет приходиться не более 10, 20, 100 электронных писем. Но если, скажем, у пользователя есть какая-то большая связанная информация, которая постоянно растет, например, сообщения в блоге, тогда стоит переместить ее в отдельный сборник.

Таким образом, ответ зависит от структуры документа пользователя. Если вы покажете структуру своего пользовательского документа и то, что вы планируете переместить в отдельную коллекцию, я помогу вам принять решение.

...