2016-10-10 17 views
1

現在、私はneo4jに移行する予定のリレーショナルデータベースを持っています。私たちは、/ entity/{id}/relatedEntitiesなどのURLの入力としてtake IDを公開しています。これらのIDはdbが生成する自動増分IDです。これらのIDを使用し続ける必要がある下位互換性を維持するために、これらのAPIの複数のクライアントがIDをキャッシュしている可能性があります。私の質問は、新しいエンティティの追加を開始したときにneo4jに移行した後で、クラスタ化された環境でこれらのIDを特別に生成し続ける方法です(neo4j用の複数のJVMとマスター/クライアントノードを予定しています)。neo4jを使用して自動インクリメントを取得する方法

+0

下位互換性が過大評価されています。 –

答えて

1

Neo4j 3.0.6以降、自動生成シーケンスは機能セットの一部ではありません。

シーケンスのラベルを指定するプロパティでシーケンスノードを定義し、新しい番号が必要なときにそのノードをロックし、後で生成してロックを解除しますが、それは扱いにくいかもしれません。クラスタ化された環境では、書き込み操作の場合はクラスタのマスターノードで書き込みを実行する必要がありますが、この領域でより多くの経験を積んだユーザーはそれを確認または拒否できます。

代替アプローチの1つは、シーケンスの代わりにUUIDを使用することです。 intの代わりに文字列として扱う必要があります。生成されたIDに基づいて比較を行う能力は失われますが、APOCプロシージャはUUID生成をサポートしており、数学的にはそれらは一意であり、存在しません過去に使用した以前の数値IDとの衝突。

関連する問題