Graph Operations on Non-Graph Databases: Column Stores
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.