Neo4j: A Developer’s Perspective
Open Software Integrators (OSI) provides a developer’s introduction to graph databases and using Neo4j.
In the age of NoSQL databases, where a new database seems to pop up every week, it is not surprising that even a larger number of articles related to them are written everyday. So when I started writing this blog on Neo4j, instead of describing how freaking awesome it is, I aimed to address the most common issues that a “regular” developer faces. By regular, I mean that, a developer, who is familiar with databases in general and knows the basics for Neo4j, but is a novice when it comes to actually using it.
A brief overview for those not familiar with Neo4j. Neo4j is a graph database. A graph database uses the concept of graph theory to store data. Graph Theory is the study of graphs, which are structures containing vertices and edges or in other words nodes and relationships. So, in a graph database, data is modeled in terms of nodes and relationships. Neo4j, at a first glance seems pretty much similar to any other graph database model that we encountered before. It has nodes, it has relationships, they are interconnected to form a complex graph and you traverse the graph in a specific pattern to get desired results.
How is it different from other graph databases? Aside from the fact that it is the only truly open source stable graph database available, it has some qualities which are hard to find in other graph databases or NoSQL databases for that matter.
- Written in Java: Has very strong integration with Java and other popular languages like Ruby, Python, Scala and more.
- It has a strong integration with the popular Spring framework as one of the sub-projects of the Spring Data project.
- Stable releases with good documentation, large number of forums and a sizeable community.
Apart from these, certain features of the database itself make it stand out among the others.
- Full ACID transactions
- REST support with HTTP.
- Both nodes and relationships can have properties as well as indices.
- Indices also exist on keys and relationships
- SQL like query language integrated with it : Cypher
- The general graph traversal language: Gremlin
- Standalone, or embeddable into most applications in above stated languages
- Good visualization tools and a self contained web interface