2016-10-10 7 views
1

В настоящее время у меня есть реляционная база данных, которую я планирую перенести на neo4j. Мы открыли apis, которые принимают идентификаторы в качестве входных данных в URL-адресах, таких как/entity/{id}/relatedEntities и т. Д. Эти идентификаторы представляют собой идентификаторы с автоматическим инкрементом, генерируемые db. Существует несколько клиентов этих API, которые могли бы кэшировать идентификаторы, поэтому, чтобы поддерживать обратную совместимость, мне нужно продолжать использовать эти идентификаторы. Мой вопрос после перехода на neo4j, когда я начинаю добавлять новые сущности, как продолжать генерировать эти идентификаторы специально в кластерной среде (я планирую иметь несколько JVM и мастер-клиентских узлов для neo4j)?Как получить автоматический приращение с помощью neo4j

+0

Обратная совместимость переоценена. –

ответ

1

Начиная с версии Neo4j 3.0.6, автоматически генерируемые последовательности не являются частью набора функций.

Возможно, у вас есть возможность определить узлы последовательности со свойствами, определяющими метку последовательности, блокировку этого узла, когда вам нужен новый номер, приращение и генерация и разблокировка после, хотя это может быть неудобно. Это должно работать в кластерной среде, если это операция записи, так как записи должны выполняться на главном узле кластера, но другие с большим опытом в этой области могут подтвердить или опровергнуть это.

Один альтернативный подход заключается в использовании UUID вместо последовательностей. Вам нужно будет обрабатывать их как строки вместо ints, и вы потеряете возможность выполнять сравнения на основе сгенерированного идентификатора, но процедуры APOC поддерживают генерацию UUID, и математически они будут уникальными, и их не будет любое столкновение с предыдущими числовыми идентификаторами, которые вы использовали в прошлом.