Как разработать схему заказа для нескольких продуктов? - PullRequest
0 голосов
/ 30 октября 2018

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

1 Ответ

0 голосов
/ 30 октября 2018

Трудно предоставить вам реальное решение вашей проблемы, так как разработка структуры базы данных NoSQL зависит от того, как вы хотите получить доступ к вашим данным. Вы можете хранить заказы как вложенные / встроенные документы в пользовательской модели или хранить их в отдельной коллекции. В первом случае у вас будут все данные в одном запросе, но вы не сможете запрашивать и получать заказы, которые соответствуют определенным критериям, поскольку вы получите все заказы, включая те, которые соответствуют. И тогда вам нужно будет отфильтровать их. Или вы можете использовать агрегацию, чтобы получить именно то, что вам нужно. Тем не менее, есть ограничение, которое нужно иметь в виду. Документ MongoDB имеет ограничение размера - 16 мегабайт . Поскольку у пользователей может быть очень много заказов, вы можете наверняка достичь предельного размера документа для некоторых пользователей. Агрегация также имеет ограничение - Стадии конвейера имеют ограничение в 100 мегабайт RAMe , но вы можете переопределить его.

Наличие заказов в отдельной коллекции потребует от вас отдельной загрузки их для пользователей. Хотя это еще один запрос, он даст вам больше гибкости с точки зрения того, как вы их запрашиваете.

Затем, конечно, операции создания / обновления также выполняются по-разному для обоих случаев.

Я бы посоветовал вам сначала тщательно разработать приложение - какие данные вам нужны и где вы их покажете, как вы их создаете / обновляете. Это даст вам лучшую идею, и есть вероятность, что реляционная БД станет лучшим выбором для того, что вам нужно (хотя и не обязательно).

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