Как использовать UUID в Neo4j, чтобы сохранить указатели на узлы в других местах? - PullRequest
1 голос
/ 16 января 2020

Я выяснил, благодаря другим вопросам, что Neo4j использует идентификаторы для своих узлов, которые могут быть переработаны в случае удаления узла.

Это реальная проблема для меня, поскольку мне нужно сохранить ссылку на мой узел в другой базе данных (на этот раз реляционной), чтобы сохранить какие-то «закрепленные» узлы.

I ' я пытался использовать https://github.com/graphaware/neo4j-uuid для их автоматического создания, но у меня ничего не получилось, все мои запросы продолжали работать бесконечно.

Моя новая идея - создать новое поле в каждом из моих узлы, которые я бы вручную заполнил с помощью UUID, сгенерированного с помощью NodeJs пакета uuid - uuid.v4().

Я также сталкивался с концепцией многократного индексирования, которая мне совершенно не ясна, но, похоже, что я должен выполнить этот запрос: CREATE INDEX ON :MyNodeLabel(myUUIDField)

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

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 16 января 2020

Я бы рассмотрел использование процедуры apoc.uuid.install библиотеки APO C.

Определенно создайте уникальное ограничение для метки и атрибута, который вы собираетесь использовать. Это не только создаст индекс, но и гарантирует уникальность атрибута в пространстве имен метки.

CREATE CONSTRAINT ON (mynode:MyNodeLabel) ASSERT mynode.myUUIDField IS UNIQUE

Затем вызовите процедуру apoc.uuid.install. Это создаст uuid в атрибуте myUUIDField на всех существующих MyNodeLabel узлах и на любых новых.

CALL apoc.uuid.install('MyNodeLabel', {addToExistingNodes: true, uuidProperty: 'myUUIDField'}) yield label, installed, properties

ПРИМЕЧАНИЕ: вам нужно будет установить APO C и установить apoc.uuid.enabled=true в файле neo4j.conf.

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