翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ノード/リレーションシップIDsにカスタムを使用する
Neptune を使用すると、ユーザーはノードと関係IDsに明示的に を割り当てることができます。ID はデータセット内でグローバルに一意であり、決定論的であれば便利です。決定論的 ID は、プロパティと同様にルックアップまたはフィルタリングメカニズムとして使用できますが、ID の使用は、プロパティを使用するよりもクエリ実行の観点からはるかに最適化されています。カスタム の使用にはいくつかの利点がありますIDs。
-
既存のエンティティのプロパティは null にできますが、ID が存在する必要があります。これにより、クエリエンジンは実行時に最適化された結合を使用できます。
-
同時ミューテーションクエリを実行すると、 IDsがノードへのアクセスに使用すると、プロパティIDsよりもロックが引き受ける回数が減るため、その一意性により、同時変更例外 (CMEs) が発生する可能性が大幅に低下します。
-
を使用すると、プロパティとは異なり、Neptune が に一意性を適用するためIDs、重複データを作成する可能性IDsを回避できます。
次のクエリ例では、カスタム ID を使用しています。
注記
プロパティ~id
は ID の指定に使用されますが、 id
は他のプロパティとして保存されます。
CREATE (n:Person {`~id`: '1', name: 'alice'})
カスタム ID を使用しない場合:
CREATE (n:Person {id: '1', name: 'alice'})
後者のメカニズムを使用する場合、一意性の適用はなく、後でクエリを実行できます。
CREATE (n:Person {id: '1', name: 'john'})
これにより、 というid=1
名前の 2 番目のノードが作成されますjohn
。このシナリオでは、 を持つノードが 2 つありid=1
、それぞれに異なる名前 - (alice と john) が付けられます。