14.7.3 Creating a Snapshot via ChangeSet
You can create a graph snapshot with ChangeSet via the PGX Java API. When you want to create the graph from a persistent data source, you can use PgxSession.readGraphWithProperties()
with the snapshots_source
configuration option set to CHANGE_SET
.
You can create a snapshot via ChangeSet by performing the following steps:
- Create a snapshot of a transient graph from database:
Creating a Graph Snapshot Using 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");
Creating a Graph Snapshot Using Javaimport 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);
- Create a ChangeSet from
graph
and populate it. The following example shows adding a new edge between vertices 1 and 4:Creating a ChangeSet Using JShellopg4j> var changeSet = graph.<Integer>createChangeSet() opg4j> changeSet.addEdge(6, 1, 4)
Creating a ChangeSet Using Javaimport oracle.pgx.api.*; GraphChangeSet<Integer> changeSet = graph.createChangeSet(); changeSet.addEdge(6, 1, 4);
Creating a ChangeSet Using PythonchangeSet = graph.create_change_set()changeSet.add_edge(1,4,6)
- Create a second snapshot using
GraphChangeSet.buildNewSnapshot()
as shown in the following code:Creating a ChangeSet with GraphChangeSet API Using JShellopg4j> var secondSnapshot = changeSet.buildNewSnapshot() opg4j> session.getAvailableSnapshots(secondSnapshot).size() ==> 2
Creating a ChangeSet with GraphChangeSet API Using JavaPgxGraph secondSnapshot = changeSet.buildNewSnapshot(); System.out.println( session.getAvailableSnapshots(secondSnapshot).size() );
Creating a ChangeSet with GraphChangeSet API Using Pythonsecond_snapshot = change_set.build_new_snapshot() print(len(session,get_available_snapshots()))
Thus two snapshots, referenced via the variables graph
and secondSnapshot
are created.
Parent topic: Graph Versioning