Что не так с Mongo DBRef? - PullRequest
       38

Что не так с Mongo DBRef?

4 голосов
/ 08 августа 2011

Исходя из опыта работы с RDMBS, трудно не думать о таких элементах, как объединения, особенно при работе со схемой MongoDB без схемы.

В блоге я читал, что DBRef были толькополезно, когда вы знаете тип объекта, на который ссылаетесь.

Почему это так?Конечно, у них больше пользы.

Скажем, у меня есть коллекция пользователей и коллекция работодателей.Многие пользователи могут ссылаться на одного и того же работодателя.Для меня это идеальное использование DBRef.Однако это противоречит тому, что я прочитал в этом блоге.

Конечно, я мог бы встроить работодателя в каждую коллекцию пользователей, но что произойдет, когда работодатель изменится?Может быть, работодатель меняет адрес или номер телефона или что-то.Если работодатель встроен в каждого пользователя, мне придется обновлять встроенный документ каждого пользователя.

Это не может быть эффективным.Или это может?

1 Ответ

10 голосов
/ 08 августа 2011

DBRefs - это структура данных, которая включает имя коллекции и идентификатор объекта.Если вы знаете название вашей коллекции (как в вашем примере, работодатель), вам не нужен DBRef.Просто сохраните идентификатор объекта работодателя в вашей коллекции пользователей.Вы экономите место, занимаемое именем коллекции.

Используйте DBRef, когда имя коллекции может измениться.Например, у вас есть коллекция комментариев.Вы хотите использовать его для хранения комментариев в блоге и на страницах книги (2 разных коллекции).Если вы хотите сохранить ссылку на пост или страницу в комментарии, вам нужно использовать ссылку на базу данных.

...