Насколько я понимаю, идентификаторы, данные Neo4j (ID(node)
), нестабильны и ведут себя как номера строк в SQL. Поскольку идентификаторы в основном используются для отношений в SQL, и они легко смоделированы в Neo4j, для идентификаторов, похоже, не так много, но тогда как вы решаете поиск определенных узлов? Наличие REST API, который должен иметь уникальные маршруты для каждого узла (например, /api/concept/23
), кажется довольно стандартным случаем для веб-приложений. Но, несмотря на это быть настолько фундаментальным, единственным реальным способом я нашел, были либо с помощьюAuto increment property in Neo4j
- специальных языковых структур
- в ненагруженном узел, который поддерживает приращения:
// get unique id
MERGE (id:UniqueId{name:'Person'})
ON CREATE SET id.count = 1
ON MATCH SET id.count = id.count + 1
WITH id.count AS uid
// create Person node
CREATE (p:Person{id:uid,firstName:'Gabriel',lastName:'Smith'})
RETURN p AS person
Источник:http://www.neo4j.org/graphgist?8012859
Действительно ли нет более простого способа, а если нет, i Есть ли для этого особая причина? Является ли мой подход анти-шаблоном в контексте Neo4j?
Это не отвечает на вопрос. Auto increment id может использоваться для сортировки объектов в порядке их создания, что невозможно сделать с uuid's –
. В какой части вопроса ответит ваш комментарий? –
Я полагаю, что добавление отметки времени unix или какого-то префикса даты-времени в случайную уникальную строку устранит проблему сортировки. – Guy