Мы внедряем MongoDB для нового решения и в настоящее время пытаемся разработать наиболее эффективную модель данных для наших нужд в отношении взаимосвязей между элементами данных.
Мы должны поддерживать трехсторонние отношения междупользователи, предметы и списки.Пользователь может иметь много элементов и много списков.В списке будет один пользователь и много элементов.Элемент может принадлежать многим пользователям и множеству списков.Последнее особенно важно - элемент может принадлежать к потенциально огромному количеству списков: тысячи, конечно, и, возможно, десятки или сотни тысяч.Возможно, даже миллионы в будущем.Нам необходимо иметь возможность перемещаться по этим отношениям в обоих направлениях: например, получить все элементы списка или все списки, к которым принадлежит элемент.Нам также нужно, чтобы решение было универсальным, чтобы мы могли добавить еще много типов документов и отношений между ними, если нам нужно.
Так что, похоже, есть два возможных решения для этого.Во-первых, для каждого документа в базе данных должна быть коллекция «отношений», состоящая из массива идентификаторов.Таким образом, список документов будет иметь коллекцию отношений для элементов с идентификаторами всех элементов и коллекцию отношений с одним идентификатором для пользователя.В этой модели эти массивы станут массивными, когда элемент принадлежит многим, многим пользователям или многим, многим спискам.
Для второй модели требуется новый тип документа, «документ отношений», в котором хранятся идентификаторы каждого из них.партнер и имя отношения.Это хранит больше данных в целом и, таким образом, повлияет на дисковое пространство.Это также выглядит как «неестественный» способ решения этой проблемы в NoSQL.
Производительность, пространство, архитектура, что лучше и почему?
Приветствия, Мэтт