2015-05-10 2 views
1

Можно ли автоинкремент атрибута ActiveRel? В отличие от ActiveRecord, не кажется, что ActiveNode/ActiveRel поддерживает автоматическое определение атрибутов из коробки.Neo4j.rb: атрибут отношения автоинкремента?

Я решил использовать before_save, чтобы вручную генерировать идентификатор. Однако оказалось, что невозможно order relationships (чтобы найти предыдущий наивысший идентификатор).

Как реализовать самоинкрементные идентификаторы? (Я знаю, что Neo4j.rb генерирует UUID, но для этого приложения требуется отдельный инкрементный серийный номер)

+0

Кажется, что экземпляры ActiveRel уже имеют автоинкрементный атрибут id. Я не видел этого документально нигде, на что я могу положиться? –

ответ

2

Идентификатор auto-incrementing ID из Neo4j, который начинается с нуля независимо для узлов и отношений. Он может (я думаю) зависеть от ссылок на узлы в краткосрочной (то есть секунды), но не в долгосрочной перспективе, поскольку они могут быть очищены и перемещены Neo4j для повышения производительности.

Если вы думаете о том, чтобы привязывать идентификаторы к отношениям, что вы делаете, возможно, это не правильный подход к модели для Neo4j (хотя я не мог сказать точно без подробностей). Невозможно напрямую связать сами отношения, но их можно получить только через первые поисковые узлы. Я думаю, имеет смысл иметь инкрементный идентификатор, который уникален для всех отношений относительно узла, но не глобально. Именно поэтому Neo4j.rb не создает UUID для отношений. Вы можете рассмотреть возможность представления отношений как промежуточных узлов.

Если вы хотите реализовать инкрементирующий идентификатор модели ActiveNode, то before_save должен быть прекрасным способом сделать это.

+0

Если у вас есть другие вопросы или вы хотите обсудить это, мы много болтаем на Gitter: https://gitter.im/neo4jrb/neo4j –

+0

Проблема обсуждалась и разрешалась здесь: https://gitter.im/neo4jrb/neo4j? at = 554fdab5bb06074d68871ab2 –

+0

Это может быть плохой стратегией, поскольку идентификаторы узлов и отношений могут быть переработаны, если узлы/отношения удалены. Это зависит от того, как вы используете идентификаторы для ... – joe