Graph Cache: Caching Data in N-Dimensional Structures

As is already well established, Graph Databases such as Neo4J are great for intuitively storing relationship data in graph-like structures. Neo4J has been around since 2007 and in its current iteration, it is an extremely robust and versatile NoSQL database framework. But, there are limitations to graph databases, namely:

  1. Query optimization options are limited, although this challenge is certainly being addressed in newer versions.
  2. Data partitioning is a tough proposition, so horizontal scaling becomes challenging.
  3. Computationally intensive or costly queries — most real-world graphs are highly dynamic and often generate large volumes of data at a very rapid rate. One challenge here is how to store the historical trace compactly while still enabling efficient execution of point queries and global or neighborhood-centric analysis tasks.
  4. Queries spanning multiple hierarchies can be time-consuming and not suitable for real-time querying.
  5. Design is only as good as implementation and this is where the human element comes in. Not everyone can think in terms of graphs.

But, the Graph Cache implementation does not seek to address only the shortcomings of Graph Databases. Over and above these things, Graph Cache seeks to provide a performant framework to do the following: