Search code examples
neo4jcassandragraph-databasestitan

Which backend database Neo4j uses to store data?


I have worked on titan. I came to know that titan can take three databases as it's back-end. Now I am learning Neo4j. But, I am not getting just like titan uses Cassandra etc. at it's back-end; which database Neo4j uses at it's back-end. Or there is something other way to store Neo4j graph data


Solution

  • The book "Learning Neo4j", by Rik Van Bruggen says:

    In the early days, Neo4j was not a full-on graph database management system — it was more like a graph library that people could use in their code to deal with connected data structures in an easier way. It was sitting on top of traditional, MySQL (and other) relational database management systems and was much more focused on creating a graph abstraction layer for developers than anything else. Clearly, this was not enough. After a while, the open source project took a radical decision to move away from the MySQL infrastructure and to build a graph store from the ground up. The key thing here is from the ground up. The entire infrastructure, including low-level components such as the binary file layout of the graph database store files, is optimized for dealing with graph data. This is important in many ways, as it will be the basis for many of the speed and other improvements that Neo4j will display versus other database management systems.

    That is: currently Neo4j works over a native graph storage that is optimized and designed to store and manage graph structures.

    You can know this internals of Neo4j reading the chapter 6 (Graph Database Internals) of the book "Graph Databases, New Opportunities for Connected Data", by Ian Robinson, Jim Webber & Emil Eifrem.

    Also, you can download the books referred in this answer in the Neo4j's site.