PGX 20.1.1
Documentation

In-place Delta Graph Refresh

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 behaviour 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

See Also