Свойство автоматического увеличения с py2neo (Neo4j)?

Я использую flask с py2neo для службы Rest, у меня есть пользовательский узел с меткой «Пользователь».

как автоматически увеличить идентификатор для метки «Пользователь» в neo4j с помощью py2neo?


person Sidali Hallak    schedule 07.04.2015    source источник


Ответы (1)


Вы этого не делаете и, вероятно, не должны. Neo4j уже предоставляет внутреннее поле id, которое является автоматически увеличивающимся целым числом. Это не свойство узла, но оно доступно через функцию id(), например:

MATCH (n:Person)
RETURN id(n);

Таким образом, всякий раз, когда вы создаете какой-либо узел, это уже происходит автоматически и бесплатно для neo4j, а не для py2neo.

Если вам нужен другой тип идентификатора для вашего кода, я бы порекомендовал что-то, вероятно глобально уникальное, например UUID, что очень легко сделать в python, а не в виде автоинкрементного целого числа.

Проблема с автоматически увеличивающимися числами в качестве идентификаторов заключается в том, что, поскольку они имеют шаблон для них (автоувеличение), люди начинают полагаться на значение идентификатора или полагаться на ожидания того, как будет назначен идентификатор. Это почти всегда плохая идея в базах данных. Единственная цель идентификатора — быть уникальным среди всего остального. Это ничего не значит, а в некоторых случаях даже не гарантируется, что оно не изменится. Не встраивайте в свой код какую-либо зависимость от какого-либо конкретного значения или схемы присваивания.

Вот почему мне нравятся UUID, потому что их схема назначения по существу произвольна, и они явно ничего не значат, поэтому они не соблазняют дизайнеров делать с ними что-то умное. :)

person FrobberOfBits    schedule 07.04.2015
comment
Могу ли я получить некоторые разъяснения: я читал в другом месте в Интернете, что мы не должны полагаться на внутренний идентификатор Neo4j, который он хранит для узлов, и вместо этого должны использовать наш собственный идентификатор, но затем вы упоминаете здесь, что мы не должны использовать свой собственный идентификатор . Спасибо! - person Lamoni; 30.04.2015
comment
@Lamoni этот ответ не говорит, что вы не должны использовать свой собственный идентификатор. Использование собственного идентификатора является хорошей идеей. Вложение смысла в этот идентификатор — плохая идея. (Следовательно, UUID, которые не имеют значения, все они уникальны) - person FrobberOfBits; 30.04.2015
comment
ааа, спасибо за разъяснение, мое недопонимание. Спасибо! - person Lamoni; 01.05.2015