Версии, используемые: Neo4j 3.0.6 с Спринг-данные Neo4j 4.2.0.M1 для отображения POJOданных Neo4j: частные, принадлежащие узлы, богатые отношения, замки
Я пытаюсь выбрать как модель данных с neo4j и сравнить преимущества/недостатки различных решений.
Требования:
- видеофильма динамический список метаданных (метаданными имеет 3 свойства: 'ключ', 'значение', 'локали). Количество метаданных для фильма неизвестно заранее, и не являются возможными ключами. Они должны быть отделены от других технических свойств фильма, поскольку они локализованы и рассматриваются как бизнес-данные.
- Метаданные принадлежат фильму и всегда доступны из фильма. Они не могут быть разделены с другими фильмами
- быстрого извлечения запросов должно быть возможным по метаданным значения
Movie пример метаданных:
Movie metadata
locale 'en_GB':
title: 'Jurassic Park'
description: 'description in english'
locale 'fr_FR':
description: 'description en francais'
locale 'none':
actor: 'Jeff Goldblum'
- Один узел в метаданные (с 3 свойствами на узел: 'ключ', 'значение', 'локаль')
- Минус: частной концепция быть реализован (удаление бесхозных узлов метаданных будут управляться вручную, так как не поддерживается пружинные данные Neo4j/Neo4j-ОГМ)
Раствор B
- Один уникальный узел на местности (с 1 свойством: «локали») (например: «en_GB»)
- Метаданные, как богатые отношения (с 2 Проперти отношений эс: «ключ», «значение»)
- Минуса: создать отношения, замок необходимо принимать на Locale узле
ли кто-то имеет опыт относительно решения B? Насколько плохо нужно блокировать узел, который будет использоваться миллионами других узлов? Какое влияние оказывает на производительность и масштабируемость? ?
У кого-то есть лучшее решение для моделирования?
Это поможет узнать немного больше о метаданных. У каждого пользователя есть свои метаданные о фильме, или это не зависит от пользователя? Есть ли причина, по которой вы не можете хранить метаданные в качестве свойств в узлах фильма? Являются ли некоторые фрагменты метаданных действительными как теги (что означает, что вы можете запрашивать метаданные в фильмах)? Или вы когда-нибудь будете получать доступ к метаданным из фильма, а не напрямую? – InverseFalcon
Нет, метаданные не зависят от пользователя. Но они локализованы (я не упомянул об этом, чтобы упростить). Я думаю, что единственный способ хранения метаданных в узлах фильма - внутри массивов правильно? Но это неэффективно для запросов на выборку. Мы должны иметь возможность фильтровать фильмы на основе их метаданных. И да, мы всегда получаем доступ к метаданным из фильма. – tigrou83
Я не совсем уверен, что вы имеете в виду, только имея возможность хранить метаданные внутри массивов. Есть ли причина, по которой вы не можете просто установить свойства в своих узлах фильма? Вы всегда можете фильтровать свойства узла в своих предложениях WHERE. Мне все еще интересно, какие метаданные это должны быть ... что отличает его от свойств узла, которые вы планировали использовать? Можете ли вы привести несколько примеров этих метаданных? – InverseFalcon