27.6.1.3 UNSTABLE_GENERATED_IDS方針

UNSTABLE_GENERATED_IDS方針とは、IDが、システムによって生成され、変更される可能性があるということです。これらのIDは、必ず一定であるわけではありません。

次の例では、頂点とエッジについてUSER_IDS生成方針を指定してcreateGraphBuilder APIを使用し、パーティション化されたグラフを作成します。また、このグラフを、IDを保持しないように構成します。したがって、システム生成されたIDが使用されます。

opg4j> var builder = session.createGraphBuilder()
opg4j> builder.setVertexIdGenerationStrategy(IdGenerationStrategy.USER_IDS).  // Using user-provided IDs for vertices
       setEdgeIdGenerationStrategy(IdGenerationStrategy.USER_IDS).            // Using user-provided IDs for edges
       setRetainVertexIds(false).                                             // Do not retain user-provided vertex IDs
       setRetainEdgeIds(false)                                                // DO not retain user-provided edge IDs
opg4j> builder.addVertex(1).addLabel("Person").setProperty("name", "Alice")
opg4j> builder.addVertex(2).addLabel("Person").setProperty("name", "Bob")
opg4j> builder.addEdge(1, 1, 2).setLabel("Knows")       // Edge from Alice to Bob with ID 1
 
opg4j> var graph = builder.build("Graph_UnstableIds")
GraphBuilder<Integer> builder = session.createGraphBuilder();
builder.setVertexIdGenerationStrategy(USER_IDS)  // Using user-provided IDs for vertices
  .setEdgeIdGenerationStrategy(USER_IDS)         // Using user-provided IDs for edges
  .setRetainVertexIds(false)                     // Do not retain user-provided vertex IDs
  .setRetainEdgeIds(false)                       // Do not retain user-provided edge IDs
 builder.addVertex(1).addLabel("Person").setProperty("name", "Alice");
 builder.addVertex(2).addLabel("Person").setProperty("name", "Bob");
 builder.addEdge(1, 1, 2).setLabel("Knows");       // Edge from Alice to Bob with ID 1
 
 PgxGraph graph = builder.build("Graph_UnstableIds");
>>> builder = session.create_graph_builder(vertex_id_generation_strategy='user_ids',
...                                        edge_id_generation_strategy='user_ids')
>>> builder.set_retain_vertex_ids(False)
>>> builder.set_retain_edge_ids(False)
>>> builder.add_vertex(1).add_label("Person").set_property("name", "Alice")
>>> builder.add_vertex(2).add_label("Person").set_property("name", "Bob")
>>> builder.add_edge(1, 1, 2).set_label("Knows")
>>> graph = builder.build(name="Graph_UnstableIds")

前述の例では、GraphBuilderで使用されているID生成方針(USER_IDSまたはAUTO_GENERATED)に関係なく、グラフ・サーバー(PGX)によって自動的にIDが再生成されます。これは、GraphBuilder APIによって提供されるIDは保持されないためです。

これらのIDは一定でない可能性があるため、要素を取得する際には、それらのIDを実行時に取得するか、グラフを反復処理します。この場合は、識別子としてプロパティを使用して頂点とエッジを特定することをお薦めします。