Overview

../_images/neo4j.png

Neo4j is a graph database, storing data in the nodes and relationships of a graph.

The most generic of data structures, a graph elegantly represents any kind of data, preserving the natural structure of the domain.

Main Features

Neo4j is an open source project,

  • An intuitive graph-oriented model for data representation
  • 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 scale out across multiple machines
  • A powerful traversal framework for high-speed traversals in the node space
  • Can be deployed as a full server or a very slim database with a small footprint (~750k jar)
  • A simple and convenient object-oriented API
  • True ACID transactions

Why Neo4j

  • Flexibility
  • The Graph nature of Neo4j implies that it can adapt easily to describe many problems.
  • It has been called whiteboard friendly meaning that if you can represent the problem in a whiteboard by drawing boxes and relationships, then you can store it in Neo4j.
  • Focus on Relationships
  • Rather than focusing on the commonalities among sets of values, Neo4j focuses on the relationships between values.
  • Therefore, it can store highly variable data and still explore its relationships in a natural way.
  • Scalable
  • Small enough to be inserted in any application
  • Able to store tens of billions of nodes and as many edges.
  • It has support for Clusters
  • Master-slave replication
  • Rich language support
  • Java
  • REST
  • Cypher
  • Ruby
  • Gremlin
  • Highly Connected Data
  • While a RDMBS is optimized for aggregated data, a graph database is optimized for highly connected data.