Neo4j is a graph database. It is an embedded, disk-based, fully transactional Java persistence engine that stores data structured in graphs rather than in tables. A graph (mathematical lingo for a network) is a flexible data structure that allows a more agile and rapid style of development.
You can think of Neo4j as a high-performance graph engine with all the features of a mature and robust database. The programmer works with an object-oriented, flexible network structure rather than with strict and static tables — yet enjoys all the benefits of a fully transactional, enterprise-strength database.
Neo4j is released under a dual free software/commercial license model (which basically means that it’s “open source” but if you’re interested in using it in commercially, then you must buy a commercial license).
Neo4j has been in commercial development for 8 years and in production for over 5 years. It is a mature and robust graph database that provides:
* an intuitive graph-oriented model for data representation. Instead of static and rigid tables, rows and columns, you work with a flexible graph network consisting of nodes, relationships and properties.
* a disk-based, native storage manager completely optimized for storing graph structures for maximum performance and scalability.
* massive scalability. Neo4j can handle graphs of several billion nodes/relationships/properties on a single machine and can be sharded to scale out across multiple machines.
* a powerful traversal framework for high-speed traversals in the node space.
* a small footprint. Neo4j is a single <500k jar with one dependency (the Java Transaction API).
* a simple and convenient object-oriented API.
* optional layers to expose Neo4j as an RDF store, i.e. easily inject / extract data as RDF, express meta model semantics using OWL and query the node space using SPARQL. When it comes to scalability numbers, remember that several triples are usually mapped to a single node. (currently being developed under the umbrella of the OpenMetadir project)