Смоделируйте большую коллекцию MongoDB, которая редко обновляется - PullRequest
0 голосов
/ 13 апреля 2020

Контекст:

В настоящее время я моделирую данные, которые следуют шаблону глубокого дерева, состоящему из 4 слоев (категории, подкатегории, подкатегории, субподкатегории ... эти две последние, конечно, являются последними это не настоящие слова, которые я буду использовать) Эта коллекция должна со временем увеличиваться и увеличиваться, и каждый слой будет содержать список из десятков элементов.

Проблема:

Моделирование полной встроенной коллекции таким образом поднимает большую проблему; предел документа в 16 МБ в MongoDB не совсем идеален в этом контексте, потому что размер документа будет медленно приближаться к пределу.

Но в то же время эти данные не должны обновляться очень часто (не более нескольких раз в день). На стороне клиента API должен возвращать полностью построенный большой файл JSON, состоящий из всех этих слоев, вложенных вместе. Это может быть легко сделано таким образом, что каждый раз, когда слой обновляется, полный результат JSON также обновляется и сохраняется в ОЗУ, готовый к отправке.

Мне было интересно, если есть 4 слоя Лучше было бы использовать такое разделение дерева на разные коллекции, потому что в то же время оно вызывало бы больше запросов, но было бы более масштабируемым и простым для понимания. Но я на самом деле не знаю, должны ли моделироваться документы MongoDB. Возможно, я что-то не так делаю (впервые использую MongoDB) и хочу быть уверен, что все уже идет по этому пути

1 Ответ

1 голос
/ 13 апреля 2020

Я предлагаю вам взглянуть на официальные MongoDB древовидные структуры советы, и особенно решение с родительской ссылкой. Это позволит вам сохранить свою структуру без борьбы за максимальный размер 16 МБ, и вы можете использовать $ graphLookup этапы агрегации для выполнения ваших дальнейших запросов к поддокументам дерева

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