[Neo4j](“http://neo4j.org" “Neo4j”) is a graph database. It is an embedded, disk-based, fully transactional Java persistence engine that stores data structured in graphs” “Graph”) rather than in tables. A [graph](“http://en.wikipedia.org/wiki/Graph_theory" “Graph”) (mathematical lingo for a network) is a flexible data structure that allows a more agile and rapid style of development. From the site:
- graph-oriented model for flexible data representation;
- graph network consisting of nodes, relationships and properties;
- highly scalable to bilions of nodes/rels/props;
- can be sharded to scale out across multiple machines;
- hi-speed traversals in the node space;
- small footprint (500k jar)
- ACID transactions;
- robust persistence;
- concurrency control;
- [API](“http://api.neo4j.org/current/" “Neo4j”);
- [Neo4j.rb](“http://neo4j.rubyforge.org/" “Neo4j.rb”), JRuby API;
- [Lucene](“http://lucene.apache.org/java/docs/index.html" “Lucene”) for quering and indexing.
Neo4j is released under a [GNU Affero General Public License](“http://www.fsf.org/licensing/licenses/agpl-3.0.html"), so read carefully. There’s a price table for commercial products that includes severall support levels.