Neo Technology Inc., the developers and publishers of Neo4j, describe it as “the world’s leading graph database” – a fairly boastful title but one that is at least backed up by its popularity. Companies such as eBay, Walmart, National Geographic, T-Mobile, Hewlett Packard, and Cisco are all listed customers, and the web is full of introductions and tutorials made by keen developers. With over 4,000 members in the Neo4j Google group alone, you can be assured that you’re not the only one considering using this database.
In addition to providing the core benefits offered by most NoSQL databases, Neo4j’s best aspects are its intuitive and helpful web interface, and excellent documentation and tutorial resources. Both of which are extremely useful for people who have never worked with a graph database before.
Neo4j’s highly-visual approach to learning and administration makes it quite unique among database solutions, which generally tend to show data in tables or lists.
Its feature set also includes:
- ACID – guarantees the reliable processing of transactions and may make Neo4j usable in particularly difficult markets, such as the financial sector.
- High-performance cache.
- “Hot” backups – incremental backups can be made while the database is running and handling queries.
- Cypher – a declarative query language for querying and processing data and managing the database.
- RESTful and native (Java) APIs.
- Language drivers for .NET, Node.JS, PHP, Python, Ruby, and more.
- Web-based user interface (UI).
- Command-line shell.
- Commercial support is available.
Cypher vs Java
The REST API, and most of the language drivers, use the Cypher query language to work with the database. Cypher is similar in many respects to SQL, and having to learn/use it may seem like a step backwards for some developers who prefer to work with NoSQL databases in the same programming language that they use to build their application projects. In testing, Cypher is also much slower than using the core API, and so language drivers that are based on using it will be slower as a result.
Neo4j’s performance is good overall though, especially when compared to other dedicated graph databases. For particularly strenuous applications, developers should consider using the Java API if possible, and may find traditional database management systems offer better performance and scalability if the graph-processing features are not adequately utilized.
Although open-source, the “Community Edition” is heavily-limited compared to the “Enterprise Edition”, which is offered in three subscriptions based on the number of employees and amount of funding or revenue: Personal (a free version for individuals and small companies), Startups (for slightly larger companies), and Business & Enterprise (for medium to large enterprises). In particular, the open-source version lacks many of the performance and scalability features, such as the cache and support for clustering.
This might be a problem for you if you need a high-performing, low-cost (or no-cost) NoSQL database. By contrast, Titan (with Cassandra for backend storage) offers slightly inferior performance, but full data distribution and scalability features in its open-source distribution.
Why Use Neo4j?
Neo4j’s excellent visualization tools, extensive help resources, and overall performance make it a good choice for developers and database administrators who are new to graph databases. That ease of use extends to more seasoned developers who need a solution that performs well but doesn’t take too much time to administer and work with.
Java programmers definitely have an advantage – having the choice of using Cypher and the REST API for the convenience they offer, or the native API when performance is critical. But the wide-range of language drivers and the consistency between them (when using the Cypher query language) can be a significant factor for programmers who prefer to work in other languages.
Installation on Windows, Linux, or Mac OS X, is straightforward. It’s a fairly polished process, requiring only that the Java runtime environment is already installed, and you can be up and running quite quickly – especially in comparison to some other NoSQL databases.
It’s really just the cost of the scalable, commercial versions that makes up the biggest disadvantage to the product.
Neo4j can be downloaded, and commercial subscription versions purchased, from http://www.neo4j.org/download.