15.7.3 ChangeSetを使用したスナップショットの作成
PGX Java APIを介して、ChangeSetを使用してグラフ・スナップショットを作成できます。永続データ・ソースからグラフを作成する場合は、snapshots_source
構成オプションをCHANGE_SET
に設定して、PgxSession.readGraphWithProperties()
を使用できます。
ChangeSetを使用してスナップショットを作成するには、次のステップを実行します。
- データベースから一時的なグラフのスナップショットを作成します。
JShellを使用したグラフ・スナップショットの作成
opg4j> String statement = ...> "CREATE PROPERTY GRAPH bank_graph " ...> + "VERTEX TABLES ( BANK_NODES as ACCOUNTS " ...> + "KEY (ID) " ...> + "LABEL ACCOUNTS " ...> + "PROPERTIES (ID, LABEL) " ...> + ") " ...> + "EDGE TABLES ( BANK_EDGES_AMT " ...> + "KEY (SRC_ID, DEST_ID, AMOUNT) " ...> + "SOURCE KEY (SRC_ID) REFERENCES ACCOUNTS " ...> + "DESTINATION KEY (DEST_ID) REFERENCES ACCOUNTS " ...> + "LABEL TRANSFERS " ...> + "PROPERTIES (SRC_ID, DEST_ID, AMOUNT, LABEL) " ...> + ") "; statement ==> "CREATE PROPERTY GRAPH bank_graph VERTEX TABLES ( BANK_NODES as ACCOUNTS KEY (ID) LABEL ACCOUNTS PROPERTIES (ID, LABEL) ) EDGE TABLES ( BANK_EDGES_AMT KEY (SRC_ID, DEST_ID, AMOUNT) SOURCE KEY (SRC_ID) REFERENCES ACCOUNTS DESTINATION KEY (DEST_ID) REFERENCES ACCOUNTS LABEL TRANSFERS PROPERTIES (SRC_ID, DEST_ID, AMOUNT, LABEL) ) " opg4j> session.executePgql(statement); opg4j> session.getGraph("bank_graph");
Javaを使用したグラフ・スナップショットの作成import oracle.pgx.api.*; pgqlStmt = pgqlConn.createStatement(); String pgql = "CREATE PROPERTY GRAPH " + bank_graph + " "+ "VERTEX TABLES ( BANK_NODES as ACCOUNTS " + "KEY (ID) " + "LABEL ACCOUNTS " + "PROPERTIES (ID, LABEL) " + ") " + "EDGE TABLES ( BANK_EDGES_AMT " + "KEY (SRC_ID, DEST_ID, AMOUNT) " + "SOURCE KEY (SRC_ID) REFERENCES ACCOUNTS " + "DESTINATION KEY (DEST_ID) REFERENCES ACCOUNTS " + "LABEL TRANSFERS " + "PROPERTIES (SRC_ID, DEST_ID, AMOUNT, LABEL) " + ")"; pgqlStmt.execute(pgql);
graph
からChangeSetを作成し、移入します。次の例は、頂点1と4の間に新しいエッジを追加する方法を示しています。JShellを使用したChangeSetの作成opg4j> var changeSet = graph.<Integer>createChangeSet() opg4j> changeSet.addEdge(6, 1, 4)
Javaを使用したChangeSetの作成import oracle.pgx.api.*; GraphChangeSet<Integer> changeSet = graph.createChangeSet(); changeSet.addEdge(6, 1, 4);
Pythonを使用したChangeSetの作成changeSet = graph.create_change_set()changeSet.add_edge(1,4,6)
- 次のコードに示すように、
GraphChangeSet.buildNewSnapshot()
を使用して2つ目のスナップショットを作成します。JShellを使用したGraphChangeSet APIによるChangeSetの作成opg4j> var secondSnapshot = changeSet.buildNewSnapshot() opg4j> session.getAvailableSnapshots(secondSnapshot).size() ==> 2
Javaを使用したGraphChangeSet APIによるChangeSetの作成PgxGraph secondSnapshot = changeSet.buildNewSnapshot(); System.out.println( session.getAvailableSnapshots(secondSnapshot).size() );
Pythonを使用したGraphChangeSet APIによるChangeSetの作成second_snapshot = change_set.build_new_snapshot() print(len(session,get_available_snapshots()))
このようにして、変数graph
およびsecondSnapshot
を介して参照される2つのスナップショットが作成されます。
親トピック: グラフのバージョニング