26.8.3 ChangeSetを使用したスナップショットの作成

PGX Java APIを介して、ChangeSetを使用してグラフ・スナップショットを作成できます。永続データ・ソースからグラフを作成する場合は、snapshots_source構成オプションをCHANGE_SETに設定して、PgxSession.readGraphWithProperties()を使用できます。

ChangeSetを使用してスナップショットを作成するには、次の手順を実行します。

  1. データベースから一時的なグラフのスナップショットを作成します。
    opg4j> var builder = session.createGraphBuilder()
    opg4j> builder.addEdge(1, 2)
    opg4j> builder.addEdge(2, 3)
    opg4j> builder.addEdge(2, 4)
    opg4j> builder.addEdge(3, 4)
    opg4j> builder.addEdge(4, 2)
    opg4j> var graph = builder.build()
    import oracle.pgx.api.*;
    
    GraphBuilder<Integer> builder = session.createGraphBuilder();
    
    builder.addEdge(1, 2);
    builder.addEdge(2, 3);
    builder.addEdge(2, 4);
    builder.addEdge(3, 4);
    builder.addEdge(4, 2);
    
    PgxGraph graph = builder.build();
    builder = session.create_graph_builder();
    
    builder.add_edge(1, 2)
    builder.add_edge(2, 3)
    builder.add_edge(2, 4)
    builder.add_edge(3, 4)
    builder.add_edge(4, 2)
    
    graph = builder.build()
  2. graphからChangeSetを作成し、移入します。次の例は、頂点1と4の間に新しいエッジを追加する方法を示しています。
    opg4j> var changeSet = graph.<Integer>createChangeSet()
    opg4j> changeSet.addEdge(6, 1, 4)
    import oracle.pgx.api.*;
    GraphChangeSet<Integer> changeSet = graph.createChangeSet();
    changeSet.addEdge(6, 1, 4);
    changeSet = graph.create_change_set()changeSet.add_edge(1,4,6)
  3. 次のコードに示すように、GraphChangeSet.buildNewSnapshot()を使用して2つ目のスナップショットを作成します。
    opg4j> var secondSnapshot = changeSet.buildNewSnapshot()
    opg4j> session.getAvailableSnapshots(secondSnapshot).size()
    ==> 2
    PgxGraph secondSnapshot = changeSet.buildNewSnapshot();
    System.out.println( session.getAvailableSnapshots(secondSnapshot).size() );
    second_snapshot = change_set.build_new_snapshot()
    print(len(session,get_available_snapshots()))
    このようにして、変数graphおよびsecondSnapshotを介して参照される2つのスナップショットが作成されます。