Graph Operations on Non-Graph Databases: Column Stores



Dr Jim Webber, Neo4j Chief Scientist, talks about the emergence of graph technology across the data industry. Everyone is trying to do graphs. One approach, takes an existing database, and extends it with graph layers and operators. Column stores are excellent for hash map-style column storage and retrieval, but do not perform well when grafting a graph API on top of that. We’re excited about the greater adoption of graph thinking. However, we’re worried about non-native implementations of graphs. Column stores, native for columns, don’t have the ability under the covers to support the kind of integrity checks that graphs require: how do I assure there are no dangling relationships, as an example? Up the stack, many of these implementations don’t have support for the dominant graph query language: Cypher. Cypher is a third-generation language for declaratively specifying graph patterns to search for in the graph. The querying capabilities provided by many of these other graph layers on top of non-native databases is using 2nd generation imperative languages. These are essentially a DSL on top of Neo4j’s core traversal API. These imperative languages are great for hard-core computer scientists who take pride in doing a lot of work, but not helpful for the average developer or analyst.