NoSQL type databases have become increasingly popular over the last several years as a way to deliver better scalability and performance. There are a number of different types of NoSQL databases, including a graph database structure, which is what open source startup Neo Technology is all about.
Neo Technology is the lead commercial sponsor behind the open source Neo4j NoSQL database. This week the company is launching its Spring Data Neo4j 2.0 release, bringing the database to the popular Spring Java framework. The company has also just completed raising $10.6 million in Series A funding.
"There is so much noise in the NoSQL space now, it's a term that isn't strictly defined," Emil Eifrem, CEO of Neo, told InternetNews.com.
In Eifrem's view, there are only four types of NoSQL databases: key value stores, BigTable types like Apache Cassandra, document databases like CouchDB and MongoDB, and the fourth is Graph databases like Neo4j.
"In the graph data model, there are nodes with type relationships across nodes," Eifrem said.
Eifrem said a graph database can then attach key value pairs to nodes and their relationship. He noted that the way nodes are connected is a first-class citizen in the graph data model.
In contrast with the concept of a traditional join that exists in traditional relational SQL type databases, Eifrem said there are some key underlying differences.
"What the relational guys did is work with a data model that is all tables that is optimized for access and that goes along with a table," Eifrem said.
For example, in the relational model, if you're looking for all the people in a table with an age greater than 20, that's an optimized query. Eifrem said that if you want to hop from one entity to another, that requires a join, which is a CPU-bound operation where you merge the entities that match your criteria from the first table with the second table.
"In contrast, with a graph database the only thing you do when you hop from one node to another is just have a direct pointer for access," Eifrem said. "You don't have to traverse an index or do a merge which leads to some amazing performance improvements."
Neo4j is Java-based but does not require Java middleware in order to run. Eifrem noted that it works well as a POJO (Plain Old Java Object). There are also bindings to connect Neo4j for other languages.
While Neo4j offers performance and scalability benefits, it's not a drop-in replacement for a relational SQL database.
"We don't have a SQL layer and we can't emulate SQL," Eifrem said.
That said, he added that if an enterprise is building a new application, or if they want to take parts of a database and use a graph database, that is possible. Currently there are no tools for migrating data from a relational database like Oracle to neo4j. Eifrem said that is something his company is looking at for a future product roadmap.
The new Spring Data Neo4j 2.0 release is a JPA (Java Persistence API) for the graph database. Eifrem explained that it makes it easier for Spring developers to leverage and use neo4j 2.0 as part of their Java applications.