2013-05-21 5 views
0

Мне нужно смоделировать свои данные в базе данных MongoDB. Мои данные посты и комментарии, поэтому approachs я думал две:MongoDB: Встроенные документы против нескольких коллекций

  1. 1 коллекция статуса с комментариями, внедренных в каждом состоянии

  2. 1 коллекция статуса и 1 сборник комментариев

Учитывайте, что с точки зрения пользователя пользователь видит список статусов, и он просто иногда запрашивает комментарии к данному статусу. Учитывайте также, что пользователь может попросить просмотреть комментарии данного пользователя: если комментарии встроены в статусы, может оказаться более дорогостоящим для извлечения этих данных.

Какое решение вы предлагаете?

Спасибо!

+0

Возможный дубликат [Простой вопрос mongodb: embed? или ссылку?] (http://stackoverflow.com/questions/5373198/a-simple-mongodb-question-embed-or-reference) – WiredPrairie

ответ

0

Это зависит от количества комментариев и действительно частоты запросов. Потому что, если у вас будет несколько комментариев, вы не должны думать об этом. Кроме того, если вы будете использовать две коллекции, запросы будут более сложными и большой размер коллекции комментариев будет работать медленно, чем один выбор из одной коллекции. Фактически, денормализация - это хороший способ хранения данных в MongoDB.

0

Рассмотрев решение и связанный с ним запрос, я думаю, вы должны учитывать частоту возникновения типа запроса. Один момент применим, что одна конструкция не может решить всю проблему, не вызывая проблемы. Например, если в реальном времени люди ищут комментарии, связанные со статусом больше и намного больше, чтобы сравнить все комментарии пользователя. Я думаю, что вложение комментариев в статус будет иметь лучший пользовательский интерфейс. Как MongoDB индексировать поддокументе, если вы можете иметь такую ​​схему

  Status : " I am good", 
     Comments : [{ Comment : "great" , by : "UserOne" } , [{ Comment : "great" , by : "UserOne" }] 

вы можете индексировать Comments.by Таким образом, поиск всех комментариев пользователя также будет хорошо. Выбрав статус, вы можете просмотреть комментарии и получить комментарии из кеша, чтобы улучшить работу пользователя.

Смежные вопросы