Writing a Cypher query engine in Clojure
In the early 2010s, graph databases were an odd branch of the NoSQL family, with cumbersome APIs and limited practical applications. This changed significantly when the Neo4j graph database introduced Cypher, a SQL-like declarative graph query language that allows users to express their queries using an intuitive and readable formalism. Two years ago, Neo4j released openCypher, an open specification of the Cypher query language. openCypher was since then adopted by both industry and academia, most notably the SAP HANA database, and multiple research prototypes, such as Graphflow (developed at the University of Waterloo) and our ingraph project.
Last summer, we set out to implement a query engine for ingraph, based on an advanced graph exploration algorithm. While the majority of ingraph is written in Scala, we decided to implement this prototype in Clojure due to its conciseness and ability to write rapid prototypes. In this talk, we report on our experience with using Clojure for building a graph query engine. We highlight some key areas, where Clojure really shines, and discuss performance results.
- David Szakallas (Budapest University of Technology and Economics)
- Gabor Szarnyas (Budapest University of Technology and Economics, Hungarian Academy of Sciences)