We present the Poseidon engine behind the Neptune Analytics graph database service. Users interact with Poseidon using the declarative openCypher [11] query language. It enables requests that seamlessly combine traditional querying (such as graph pattern matching, variable length paths, aggregation) with graph algorithm invocations and has been syntactically extended to facilitate OneGraph interoperability, i.e., the disambiguation between globally unique IRIs (as exposed via RDF) vs. local identifiers (as encountered in LPG data). Poseidon supports a broad range of graph workloads, from simple transactions, to top-k beam search algorithms on dynamic graphs, to whole graph analytics requiring multiple full passes over the data. For example, real-time fraud detection, like many other use cases, needs to reflect the current committed state of the dynamic graph. If a user's cell phone is compromised, then all newer actions by that user become immediately suspect. To address such dynamic graph use cases, Poseidon combines state-of-the-art transaction processing with novel graph data indexing, including lock-free maintenance of adjacency lists, secondary succinct indices, partitioned heaps for data tuple storage with uniform placement, and innovative statistics for cost-based query optimization. The Poseidon engine uses a logical log for durability, enabling rapid evolution of in-memory data structures. Bulk data loads achieve more than 10 million property values per second on many data sets while simple transactions can execute in under 20μs against the storage engine.
Research areas