Внедренные документы MongoDB и ссылки на уникальные ObjectIds для системного профиля пользователя - PullRequest
6 голосов
/ 09 сентября 2011

Я хотел бы написать веб-приложение, в котором большинство разделов зависят от профиля пользователя (например, разные списки дел на человека и т. Д.), И я бы хотел использовать MongoDB.Я думал о создании около 10 документов для встраивания для основного документа профиля и хранения всего, что связано с одним пользователем, в его собственном документе.

Я не вижу четкого способа использования внешних ключей для mongodb, единственного способабыло бы создать поле to_do_id с типом ObjectId, например, но они были бы полностью не связаны внутренне, просто иметь те же идентификаторы, которые я должен запросить.

  1. Есть лиограничение на количество типов встроенных документов в документе верхнего уровня, которые могут ухудшить производительность?
  2. Как вы, ребята, решаете проблему с документом центрального профиля, к которому относится большинство документов при представлении представленияна человека?
  3. Используете ли вы полуживые ключи внутри MongoDb и имеете поля с типами ObjectId, которые будут иметь уникальный идентификатор другого документа вместо их встраивания?

Я не чувствую, какой подходдолжны быть приняты, когда.Большое спасибо!

1 Ответ

2 голосов
/ 15 сентября 2011
  1. Специальных ограничений в отношении производительности не существует.Однако чем больше документ, тем больше времени требуется для передачи по проводам.Весь документ всегда извлекается.
  2. Я делаю это со ссылками.Вы можете выбрать между простыми ручными ссылками и базой данных DBRef на этой странице: http://www.mongodb.org/display/DOCS/Database+References
  3. Ссылка выше документирует, как иметь ссылки в документе в полужестком ключе.DBRef может быть полезен для того, что вы пытаетесь сделать, но простая справочная инструкция очень эффективна.

Я не уверен, что существует общее правило, для которого справочный подход является лучшим.Поскольку я в основном использую Java или Groovy, мне нравится тот факт, что я возвращаю объект DBRef.Я могу проверить этот тип данных и использовать его, чтобы решить, как обрабатывать ссылку в общем виде.

Поэтому я склонен использовать простую ручную ссылку для ссылок на разные документы в одной коллекции и DBRef для ссылок между коллекциями.

Надеюсь, это поможет.

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