2.1. 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 graph concepts. We’ll “read” a graph by following arrows around the diagram to form sentences.
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 Properties, though that can get a little awkward. At some point it makes sense to distribute the data into multiple nodes, organized with explicit Relationships.
Relationships organize the Graph
“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.
Labels group the Nodes
“Nodes —are grouped by→ Labels —into→ Sets”
Labels are a means of grouping the nodes in the graph. They can be used to restrict queries to subsets of the graph, as well as enabling optional model constraints and indexing rules.
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?”
Indexes look-up Nodes or Relationships
“An Index —maps from→ Properties —to either→ Nodes or Relationships”
Often, you want to find a specific Node or Relationship according to a Property it has. Rather than traversing the entire graph, use an Index to perform a look-up, for questions like “find the Account for username master-of-graphs.”
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. It was designed and built from the ground-up to be a reliable database, optimized for graph structures instead of tables. Working with Neo4j, your application gets all the expressiveness of a graph, with all the dependability you expect out of a database.