maximumstock
maximumstock

Reputation: 23

What is the difference between native graph storage and native graph processing?

I thought by native graph storage you'd mean storing your data (on disk, not in memory) in adjacency lists/matrices, etc. (whatever serves your problem) instead of ways for example rdbms do. The part of graph processing for me was how that disk-saved data is represented in memory at runtime and how it is used to find answers for queries. As long as you have a similiar adjacency list-like structure in memory you gain index-free adjacency and your path traversals become a lot faster.

After reading 'Graph Databases - New Opportunities for Connected Data' by Robinson, Webber and Eifrem I'm not so sure anymore. There also is this graphic that shows which graph databases offer which native or non-native functionalities. Why/When does it make sense to store graph data natively but to process it non-natively?

So how would you explain the difference between native graph storage and native graph processing and at which level (of those two) does index-free adjacency come into play? Assuming a graph database always keeps the whole graph structure in memory (I think I've heard that neo4j is doing that), does it matter for querying performance (looking at index-free adjacency) whether a native or non-native graph storage is used? From my naive point of view I could imagine that the (de)serialization of the graph into/from memory can be done with a non-native, relational storage method, without losing too much performance.

Upvotes: 1

Views: 1737

Answers (1)

Carlos Zerga
Carlos Zerga

Reputation: 190

For Neo4j is:

Native Graph Processing:

Native graph processing is another key element of graph technology, referring to how a graph database processes database operations, including both storage and queries. Index-free adjacency is the key differentiator of native graph processing.

Native Graph Storage:

Graph storage is classified as non-native when the storage comes from an outside source, such as a relational, columnar or other NoSQL database. These databases use other algorithms to store data about nodes and relationships, which may end up being placed far apart. This non-native approach can lead to latent results as their storage layer is not optimized for graphs.

More information Neo4j:Graph Databases for Beginners: Native vs. Non-Native Graph Technology

Upvotes: 1

Related Questions