Two key properties of Graph Databases
- Graph Storage
Native graph storage describe graph database which is optimized and designed for storing and managing graphs. Not all graph database technologies use native graph storage. Some serialize the graph data into a relational database, object-oriented databases, or other types of general-purpose data stores (NoSQL DB).
- Graph Processing
Native graph processing describes graph databases that leverage index-free adjacency. Index free adjacencymeans that connected nodes physically “point” to each other in the database. Not all graph databases leverage index-free adjacency.
It’s important to note that native graph storage and native graph processing are neither good nor bad—they’re simply classic engineering trade-offs. The benefit of native graph storage is that its purpose-built stack is engineered for performance and scalability. The benefit of nonnative graph storage, in contrast, is that it typically depends on a mature non-graph backend whose production characteristics are well understood by operations teams. Native graph processing (index-free adjacency) benefits traversal performance, but at the expense of making some non-traversal queries difficult or memory intensive.
Other properties which are typically used in evaluating Graph DB includes
- Supported Graph Model (Property Graph, RDF)
The following table illustrates a sample of Graph Database providers and their properties.
|Graph Database Providers||Graph Model||ACID||Distributed||Graph Storage||Graph Processing|
|Allegro||RDF||Yes||No/Support for HA||Native||Non-Native|
|Neo4J||Property Graph||Yes||No/Support for HA||Native||Native|
|Titan||Property Graph||Yes – Eventually Consistent.||Yes||Non-NativeSupports multiple different NoSQL platforms – Cassandra being the most popular.||Native|
|Oracle NoSql DB||RDF||Yes – Eventually Consistent||Yes||Non-Native||Non-Native|
|Oracle OSG||RDF and Property Graph||Yes||No/ Support for HA||Non-Native||Non-Native|
*Generally speaking the non-native graph storage Graph Database providers focus on representing the graph efficiently, distributing the graph, building intelligent index for facilitating fast graph traversals etc. The Graph Database provider typically depends on the underlying NoSQL provider or in the case of Oracle the Oracle DB itself to support replication, backup and snapshot.