Version 2.0 of our graph database represents the biggest change in the graph database formula since its launch in 2000. After months of waiting, the final version of Neo4j 2.0 is ready to be used today.

 

The (r)evolutionary (r)evolution of the graph database

There’s been a number of nice articles written about graphs, graph databases, and, more specifically, Neo4j in the past couple of months. Each one jumping on the hype train and brimming with ‘revelations’ about the coolness of graph databases in general – especially Neo4j. In this article, we would like to continue this love-in by shining a spotlight on a couple of fantastic new features that are part of Neo4j 2.0, and that, in our humble opinion, quite frankly, are better than sliced bread. Much better.

Under the hood: evolving from a “property graph” to a “labeled property graph”

For the longest time, Neo4j has been using a very specific, rich and expressive data model to represent networks and graphs natively in the Neo4j database. This makes queries (aka traversals) so much easier to think of, translate into a query language (cypher), execute against a running database server, and then maintain and share with others.

The “property graph” was, and is, a fine data model for highly connected data, allowing you to store data in a) nodes (aka vertices), b) relationships (aka edges) and c) properties on a) and b). Nodes and relationships were always equal citizens, and will continue to be so.

But there were issues with the data model: it did not allow for a “meta-model” that would describe the data structures in the database, and many users would have to therefore emulate that themselves. Everyone was reinventing the wheel, introducing “type nodes” and “type properties” into the database that would achieve the metamodel goals somehow – but it really was not a very nice solution.

That’s why Neo4j 2.0 introduces the concept of a “node label” into the data model. This is not just a cosmetic change to a perfectly fine graph database: it’s a fundamental new data model concept that allows users to create “subgraphs” into the property graph.

Read the Full Article Here.