Слишком много дублирования данных в mongodb?

Я новичок во всем этом материале NOSQL и недавно был заинтригован mongoDB. Я создаю новый веб-сайт с нуля и решил использовать MONGODB / NORM (для C #) в качестве моей единственной базы данных. Я много читал о том, как правильно спроектировать базу данных модели документа, и я думаю, что по большей части мой дизайн проработан довольно хорошо. Я около 6 месяцев в своем новом сайте, и я m начинаю видеть проблемы с дублированием / синхронизацией данных, с которыми мне приходится сталкиваться снова и снова. Из того, что я читал, это ожидается в модели документа, и это имеет смысл с точки зрения производительности. IE вы вставляете встроенные объекты в свой документ, чтобы его можно было быстро читать - никаких объединений; но, конечно, вы не всегда можете встраивать, поэтому у mongodb есть концепция DbReference, которая в основном аналогична внешнему ключу в реляционных БД.

Итак, вот пример: у меня есть пользователи и события; оба получают свой собственный документ, пользователи посещают мероприятия, события имеют пользователей участников. Я решил встроить список событий с ограниченными данными в объекты User. Я встроил список пользователей также в объекты событий в качестве их «участников». Проблема в том, что теперь я должен синхронизировать пользователей со списком пользователей, который также встроен в объект Event. Насколько я читал, это кажется предпочтительным подходом и способом решения задач NOSQL. Получение происходит быстро, но откат - когда я обновляю основной документ User, мне нужно также перейти к объектам Event, возможно, найти все ссылки на этого пользователя и обновить их.

Итак, у меня есть вопрос , это довольно распространенная проблема, с которой приходится сталкиваться людям? Насколько часто должна возникнуть эта проблема, прежде чем вы начнете говорить: «Может быть, стратегия NOSQL не подходит для того, что я пытаюсь сделать здесь»? Когда преимущество в производительности от отсутствия соединений превращается в недостаток, потому что вы Вам сложно синхронизировать данные во встроенных объектах и ​​для этого выполнять несколько операций чтения из БД?

70
задан Brian Tompsett - 汤莱恩 7 November 2015 в 10:23
поделиться