What is Neo4j?

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.

Neo4j is an open source project available in a GPLv3 Community edition, with Advanced and Enterprise editions available under both the AGPLv3 as well as supported by Neo Technology with a commercial license.

Neo4j Features

  • 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 be sharded to 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

What is a Graph Database?

A graph database stores data in a graph, the most generic of data structures, capable of elegantly representing any kind of data in a highly accessible way. Let’s follow along some graphs, using them to express themselves. We’ll “read” a graph by following arrows arond the diagram to form sentences.

spacer

Video: Emil Eifrem introduces you to the world of graphs

  • A Graph contains Nodes and Relationships

    “A Graph –records data in–> Nodes –which have–> Properties.”

    The simplest possible graph is a single Node, a record that has named values referred to as Properties. A Node could start with a single Property and grow to a few million, though that can get a little awkward. At some point it makes sense to distribute the data into multiple nodes, organized with explicit Relationships.

    “Nodes –are organized by–> Relationships — which also have–> Properties.”

    Relationships organize Nodes into arbitrary structures, allowing a Graph to resemble a List, a Tree, a Map, or a compound Entity – any of which can be combined into yet more complex, richly inter-connected structures.

    spacer

  • Query a Graph with a Traversal

    “A Traversal –navigates–> a Graph; it –identifies–> Paths –which order–> Nodes.”

    A Traversal is how you query a Graph, navigating from starting Nodes to related Nodes according to an algorithm, finding answers to questions like “what music do my friends like that I don’t yet own,” or “if this power supply goes down, what web services are affected?”

    spacer

  • Indexes look-up Nodes or Relationships

    “An Index –maps from–> Properties –to either–> Nodes or Relationships.
    It –is a special–> Traversal.”

    Often, you want to find a specific Node or Relationship according to a Property it has. This special case of Traversal is so common that it is optimized into an Index look-up, for questions like “find the Account for username master-of-graphs.”

    spacer

  • Neo4j is a Graph Database

    “A Graph Database –manages a–> Graph and –also manages related–> Indexes”

    Neo4j is a commercially supported open-source graph database, that is:

    • intuitive, using a graph model for data representation
    • reliable, with fully ACID transactions
    • durable, using disk-based, native storage
    • massively scalable, up to several billion nodes/relationships/properties
    • highly-available, when sharded to scale out across multiple machines
    • expressive, with a powerful traversal framework for high-speed graph queries
    • embeddable, with a few small jars
    • simple, accessible by a convenient REST interface or object-oriented API

    spacer

What is a Graph Database?

A graph database stores data in a graph, the most generic of data structures, capable of elegantly representing any kind of data in a highly accessible way. Let’s follow along some graphs, using them to express themselves. We’ll “read” a graph by following arrows arond the diagram to form sentences.

spacer

Video: Emil Eifrem introduces you to the world of graphs

  • “Neo4j –is a–> Graph Database”

    A Graph Database is a a fully transactional database that stores data structured as graphs. A graph is a flexible data structure that can naturally represent any kind of data, excelling at highly connected data.

    spacer

  • “A Graph Database –transforms a–> RDBMS”
    spacer spacer

    Topple the stacks of records in a relational database while keeping all the relationships, and you’ll see a graph. Where an RDBMS is optimized for aggregated data, Neo4j is optimized for highly connected data.

  • “A Graph Database –relates a–> Key-Value Store”
    spacer spacer

    A Key-Value model is great for lookups of simple or even complex values. When the values are themselves interconnected, you’ve got a graph. Neo4j lets you traverse quickly among all the connected values.

  • “A Graph Database –navigates a–> Document Store”
    spacer spacer

    The container hierarchy of a document database accommodates nice, schema-free data that can easily be represented as a tree. Which is of course a graph. Refer to other documents (or document elements) within that tree and you have a more expressive representation of the same data that you can easily navigate with Neo4j.

Get Started

  • View all Downloads
  • Pragmatic Licensing Guide
  • Platform Requirements
  • Language and Framework Bindings
  • Source Code

More Resources

Community

  • Neo4j Blog
  • Discussions
  • Community Contributions
  • Conferences and Events

More Resources

Learn More

  • Getting Started Tutorials
  • The Neo4j Manual for the latest stable release (1.6)
  • API Docs: Javadocs for the current stable release (1.6)
  • Neo4j on Windows Azure
  • Guidelines for Building a Neo4j Application (Wiki)
  • Spring Developers – click here
  • Neo4j Screenshots

More Resources

Download Neo4j Now – Community Edition

gipoco.com is neither affiliated with the authors of this page nor responsible for its contents. This is a safe-cache copy of the original web site.