Могу ли я добавить все пользовательские данные в один объект в mongodb? - PullRequest
0 голосов
/ 27 марта 2019

Можно ли добавить все данные в один объект в коллекции, например:

 {
  id:134....,
  fullname : "jack...",
  email : "amsdk@gm....",
  messages :[
   all messages here
   Perhaps up to fifty thousand items
 ],
  orders : [
   all orders here
 ],.........
 }

Это вызывает перегрузку на сервере?

1 Ответ

0 голосов
/ 28 марта 2019

В документации Mongo есть полезные рекомендации для выбора модели данных .Вложенная модель, которую вы описываете выше, называется Embedded Data Model :

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

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

Монго называет традиционную структуру PK / FK Нормализованная модель данных

* 1018.*

Как правило, используйте нормализованные модели данных:

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

Трубопровод агрегации может быть страшным, что может привести к появлению встроенных данныхМодель заманчивая.Если вы считаете, что это так, ознакомьтесь с бесплатным курсом по агрегационному конвейеру MongoDB .Нормализованная модель данных может быть более привлекательной, если вы можете уверенно извлекать связанные данные из коллекций.

Тестируйте запросы чтения / записи с небольшим набором данных для каждой модели.Вы получите ясность о преимуществах и проблемах каждого подхода.Для моего текущего проекта я обнаружил, что нормализованная модель данных упростила многие требуемые операции записи.В конечном счете, разделение задач, таких как заказы и пользователей на отдельные коллекции, оказалось проще, особенно когда я понял, как использовать $ lookup для объединения данных из связанных коллекций.

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