This guide describes how you can set up a graph loaded from RDBMS Oracle Property Graph to be refreshed in-place. Graphs that are updated in-place don't create a new snapshot of the graph when being refreshed in case the changes contain property updates only. In case the graph has topological updates a new snapshot is generated anyway. Vertex label and edge label updates are also considered topological updates.
To use this feature, the flag update_properties_in_place
should be set to true in the graph loading config
{ "format": "pg", "jdbc_url": "jdbc:oracle:thin:@mydatabaseserver:1521/dbName", "username": "scott", "password": "tiger", "name": "my_graph", "loading_options": { "auto_refresh": true, "fetch_interval_sec": 300, "update_interval_sec": 1200, "update_threshold": 1000, "create_edge_id_index": true, "create_edge_id_mapping": true, "update_properties_in_place": true } }
This flag can also be set using the GraphConfigBuilder
see code below
var config = GraphConfigBuilder.forPropertyGraphRdbms() .setJdbcUrl("jdbc:oracle:thin:@mydatabaseserver:1521/dbName") .setUsername("scott") .setPassword("tiger") .setName("my_graph") .setAutoRefresh(true) .setFetchIntervalSec(300) .setUpdateIntervalSec(1200) .setUpdateThreshold(1000) .setCreateEdgeIdIndex(true) .setCreateEdgeIdMapping(true) .setUpdatePropertiesInPlace(true) .build();
import oracle.pgx.config.* GraphConfig config = GraphConfigBuilder.forPropertyGraphRdbms() .setJdbcUrl("jdbc:oracle:thin:@mydatabaseserver:1521/dbName") .setUsername("scott") .setPassword("tiger") .setName("my_graph") .setAutoRefresh(true) .setFetchIntervalSec(300) .setUpdateIntervalSec(1200) .setUpdateThreshold(1000) .setCreateEdgeIdIndex(true) .setCreateEdgeIdMapping(true) .setUpdatePropertiesInPlace(true) .build();
Analysis tasks (pgql queries and Green marl algorithms) are delayed if an in-place update for the requested graph is happening.
If an analytic task is running while an in-place update is applied users can select the consistency model that should be used,
we support two models: ALLOW_INCONSISTENCIES
the default behavior which keeps the running tasks, it might lead to unexpected results. The second model is CANCEL_TASKS
:
tasks running during an update will get canceled, new tasks will get delayed