Database Reference
In-Depth Information
Built for graphs, from the ground up
Like many open source projects and many open source NoSQL database management
systems, Neo4j too came into existence for very speciicreasons.
Scratching the itch
, as
this is sometimes called. Grassroots developers who want to solve a problem and are
struggling to do so with traditional technology stacks, decide to take a radical, new-
found approach. That's what the Neo4j founders did early on in the 21st century—they
built something to solve a problem for a particular media company in order to better
manage media assets.
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,includinglow-levelcomponentssuchasthebinaryilelayoutof
thegraphdatabasestoreiles,isoptimizedfordealingwithgraphdata.Thisis
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.
Wedon'tneedtounderstandthedetailsofthisilestructureforthebasisofthis
topic—butsuficetosaythatitisanative,graph-orientedstorageformatthatis
tuned for this particular workload. That, dear reader, makes a big difference.
Transactional, ACID-compliant database
Neo4j prides itself in being an ACID-compliant database. To explain this further,
it's probably useful to go back to what ACID really means. Basically, the acronym
is one of the oldest summaries of four goals that many database management
systemsstrivefor,andtheyareshowninthefollowingigure: