Reputation: 23
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
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