Скажем, у нас есть база данных Neo4j с несколькими подграфами в 50000 узлов. Каждый подграф имеет корень. Я хочу найти все узлы в одном подграфе.Метки и свойства Neo4j и их отличия
Одним из способов было бы рекурсивно ходить по дереву. Он работает, но может быть тысячи поездок в базу данных.
Один из способов, чтобы добавить идентификатор подграф для каждого узла:
MATCH(n {subgraph_id:{my_graph_id}}) return n
Другим способом было бы связать каждый узел в подграфа в корне подграфа:
MATCH(n)-[]->(root:ROOT {id: {my_graph_id}}) return n
Это чувствует себя более " графикой ", если это имеет значение. Кажется дорогим.
Или я мог бы добавить метку для каждого узла. Если {my_graph_id} был «BOBS_QA_COPY», то
MATCH(n:BOBS_QA_COPY) return n
бы выкопать все узлы подграфа.
Мой вопрос в том, когда уместно использовать свойство садового разнообразия, добавить отношения или установить ярлык?
Установка метки для идентификации конкретного подграфа заставляет меня чувствовать себя странно, как будто я злоупотребляю инструментом. Я ожидаю, что лейблы скажут , что что-то есть, а не , которое экземпляр чего-то.
Например, если бы мы отображали информацию о машине, я мог видеть, что у вас есть части, обозначенные как «FORD EXPLORER». Но я не уверен, что имеет смысл иметь части, обозначенные как «TONYS FORD EXPLORER». Теперь я мог видеть (идентификатор пользователя: «Тони»), имеющее отношение к графику FORD EXPLORER ...
я могу быть с приступом «SQL мозга» ...
50K узлов много - вам действительно нужны все сразу? –