Я новичок во всем этом материале NOSQL и недавно был заинтригован mongoDB. Я создаю новый сайт с нуля и решил пойти с MONGODB/NORM (для С#) в качестве моей единственной базы данных. Я много читал о том, как правильно создать базу данных модели документов, и я думаю, что по большей части у меня хорошо разработан дизайн. Мне около 6 месяцев на новый сайт, и я начинаю видеть проблемы с дублированием/синхронизацией данных, с которыми мне нужно иметь дело снова и снова. Из того, что я читал, это ожидается в модели документа, а для производительности это имеет смысл. И.Е. вы вставляете внедренные объекты в свой документ, чтобы быстро читать - нет соединений; но, конечно, вы не всегда можете вставлять, поэтому mongodb имеет эту концепцию DbReference, которая в основном аналогична внешнему ключу в реляционных БД.
Итак, вот пример: у меня есть пользователи и события; оба получают свой собственный документ, пользователи посещают события, события имеют пользователей. Я решил включить список объектов с ограниченными данными в объекты User. Я включил список "Пользователи" в объекты "Событие" в качестве "участников". Теперь проблема заключается в том, что я должен синхронизировать пользователей со списком пользователей, который также встроен в объект Event. Поскольку я читал это, это, по-видимому, предпочтительный подход, и способ NOSQL делать что-то. Поиск выполняется быстро, но спад - это когда я обновляю основной документ пользователя, мне также нужно пойти в объекты Event, возможно, найти все ссылки на этого пользователя и обновить его.
Итак, вопрос, который у меня есть, - это довольно распространенная проблема, с которой люди должны иметь дело? Насколько эта проблема должна произойти до того, как вы начнете говорить: "Возможно, стратегия NOSQL не подходит для того, что я пытаюсь сделать здесь"? Когда преимущество производительности в том, что вам не нужно делать соединения, превращается в недостаток, потому что вам сложно хранить данные во встроенных объектах и делать несколько записей в БД для этого?