What is a graph database
A Neo4j graph database stores data as nodes, relationships, and properties instead of in tables or documents. This means you can organize your data in a similar way as when sketching ideas on a whiteboard.
And since graph databases are not restricted to a pre-defined model, you can take more flexible approaches and strategies when working with them.
How it works
Graph databases are structured through nodes and relationships.
Nodes are entities in the graph which can:
-
Be tagged with labels representing their different roles in a domain (e.g.,
Person
). -
Hold any number of key-value pairs as properties (e.g.,
name
). -
Be indexed and bound by constraints.
Relationships provide named connections between two nodes (e.g., Person - LOVES
- Person) and they:
-
Must always have a start node, an end node, and exactly one type.
-
Must have a direction.
-
Can have properties, like nodes.
-
Nodes can have multiple relationships of various types without sacrificing performance.
In summary, nodes and relationships are an efficient and flexible way to store data since they allow you to:
-
Create traversals in big graphs for both depth and breadth.
-
Scale-up your database to billions of nodes.
-
Design flexible property graph data models that can adapt over time.
Why use a graph database
Projects often deal with large amounts of complex data and graph databases can be a powerful tool.
There are other ways to store data as objects and connections, such as relational databases, for example.
However, relational databases use computing-wise expensive JOIN
operations or cross-looks, which are often tied to a rigid data model.
Graph databases do not use JOINs. Rather, relationships are stored natively alongside the data elements (nodes) in a more flexible format, which allows the optimization of data traversing and millions of connections to be accessed per second.
Moreover, many daily challenges and tasks can be viewed from a graph perspective as it allows you to:
-
Navigate deep hierarchies.
-
Find hidden connections between distant items.
-
Discover inter-relationships between items.
How to use
Whether it’s a social or a road network, all networks can be structured as an interconnected graph of relationships. Many times, a project’s questions and challenges revolve around the relationship between elements, not the elements themselves (e.g. how to get from A to B, instead of what A is and what B is). For this reason, graphs can be applied to many areas of society and to a wide variety of projects.
Neo4j is frequently used today by startups, educational institutions, and large enterprises in a variety of sectors including financial services, government, energy, technology, retail, and manufacturing. Graphs have been successful in helping them on the development of innovative new technology, business management, insight and revenue regenration, as well as overall improvements in efficiency.
You can find more information about use cases on Neo4j’s main website.
Keep learning
If you want to get a better and deeper understanding of graph databases, you can read more about Graph database concepts, or enroll to the GraphAcademy course on Neo4j Fundamentals.
Glossary
- label
-
Marks a node as a member of a named and indexed subset. A node may be assigned zero or more labels.
- labels
-
A label marks a node as a member of a named and indexed subset. A node may be assigned zero or more labels.
- node
-
A node represents an entity or discrete object in your graph data model. Nodes can be connected by relationships, hold data in properties, and are classified by labels.
- nodes
-
A node represents an entity or discrete object in your graph data model. Nodes can be connected by relationships, hold data in properties, and are classified by labels.
- relationship
-
A relationship represents a connection between nodes in your graph data model. Relationships connect a source node to a target node, hold data in properties, and are classified by type.
- relationships
-
A relationship represents a connection between nodes in your graph data model. Relationships connect a source node to a target node, hold data in properties, and are classified by type.
- property
-
Properties are key-value pairs that are used for storing data on nodes and relationships.
- properties
-
Properties are key-value pairs that are used for storing data on nodes and relationships.
- cluster
-
A Neo4j DBMS that spans multiple servers working together to increase fault tolerance and/or read scalability. Databases on a cluster may be configured to replicate across servers in the cluster thus achieving read scalability or high availability.
- clusters
-
A Neo4j DBMS that spans multiple servers working together to increase fault tolerance and/or read scalability. Databases on a cluster may be configured to replicate across servers in the cluster thus achieving read scalability or high availability.
- graph
-
A logical representation of a set of nodes where some pairs are connected by relationships.
- graphs
-
A logical representation of a set of nodes where some pairs are connected by relationships.
- schema
-
The prescribed property existence and datatypes for nodes and relationships.
- schemas
-
The prescribed property existence and datatypes for nodes and relationships.
- [[database schema]]database schema
-
The prescribed property existence and datatypes for nodes and relationships.
- indexes
-
Data structure that improves read performance of a database. Read more about supported categories of indexes.
- indexed
-
Data structure that improves read performance of a database. Read more about supported categories of indexes.
- constraints
-
Constraints are sets of data modeling rules that ensure the data is consistent and reliable. See what constraints are available in Cypher.
- data model
-
A data model defines how information is organized in a database. A good data model will make querying and understanding your data easier. In Neo4j, the data models have a graph structure.
- data models
-
A data model defines how information is organized in a database. A good data model will make querying and understanding your data easier. In Neo4j, the data models have a graph structure.