Neo4j is a graph database that leverages data relationships as first-class entities. It provides ACID Transactions with online backups and high availability.[01]
- Website
- https://neo4j.com[01]
- Source Code
- https://github.com/neo4j/neo4j[02]
- Tech Docs
- https://neo4j.com/docs/[03]
- Developer
- Country of Origin
- SE
- Project Types
- Commercial, Open Source
- Operating Systems
- All OS with Java VM, Linux, Windows
- Wikipedia
- https://en.wikipedia.org/wiki/Neo4j[04]
Neo4j is a graph database that leverages data relationships as first-class entities. It provides ACID Transactions with online backups and high availability.[01]
History[05]
Neo4j's first version was released in February, 2010 by Neo Technology in San Francisco. It is an ongoing project with the latest stable release 3.0 in April 2016. The idea behind developing Neo4j as a graph processing software was to store your relationships as first-class entities unlike NoSQL aggregate databases.
Checkpoints[06]
Neo4j can be backed up while it continues to serve user traffic (called “online” backup). Neo4j offers two backup options: full or incremental. These strategies can be combined to provide the best mix of safety and efficiency. Depending on the risk profile of the system, a typical strategy might be to have daily full backups and hourly incremental backups, or weekly full backups with daily incremental backups.
Concurrency Control[07]
Neo4j uses locks for transactions which may lead to deadlock. Deadlocks are detected and the transaction is marked for rollback. The transaction may be retried if needed by the user. The retry logic is left to the user.
Data Model[08][09]
Neo4j uses a Graph data model. The fundamental units which form a graph are nodes and relationships. This is stored with key-value style properties on both. Relationships connect two different nodes to each other, and are both typed and directed although we still have the flexibility to traverse the relationships in both the directions.
Foreign Keys[10][11]
The traditional notion of foreign keys in RDBMS is used in Neo4j as relationships.The simple abstraction of nodes and relationships in connected structures helps enable the concept of foreign keys in Neo4j.
Indexes[12][13][14]
Initially Neo4j did not support indexes however schema indexes were added in Neo4j 2.0, and automatically index labelled nodes by one or more of their properties. Those indexes are then implicitly used by Cypher as secondary indexes and to infer the starting point(s) of a query. As of Neo4j 3.5, indexes can also be used to skip sorting for ORDER BY clauses.
Isolation Levels[15]
Neo4j supports ACID Transactions and the default isolation provided is READ_COMMITTED. The user can however acquire locks on nodes and relationships to achieve the SERIALIZABLE isolation. Deadlock Detection is inbuilt in the system.
Joins[16][17]
NodeHashJoin API provided in the documentation joins the input coming from the left with the input coming from the right. The support for ValueHashJoins was also merged with the github Neo4j 3.0 repository.
Logging[18]
Logical transaction logs in Neo4j are used in scenarios when the database needs to be recovered after a unclean shutdown. They are also used for online backup operations, especially for incremental backups. These transaction log files are rotated after surpassing a certain size (25 Mb in size). The amount of log files or the used space can be configured.
Query Compilation[19]
Neo4j uses (byte) code generation in addition to JIT compilation. The JIT compilation is provided by the JVM.
Query Interface[20]
Cypher is a declarative, SQL-inspired language for describing patterns in graphs visually using an ascii-art syntax. One of the most powerful ability of Cypher is the notion to use the -> operator to define relationships.
Storage Architecture[21]
Neo4j has a disk-based, native storage manager optimised (optimisations typically revolve around using the cache effectively to avoid trips to the disk) for storing graph structures with maximum performance and scalability.
Storage Model[22][23]
Each node and its properties are stored on the disk using a doubly linked list. Layout : byte 0 : 4 high bits of previous, 4 high bits of next pointers, bytes 1-4 : previous property record, bytes 5-8 : next property record, bytes 9-40 : payload
Stored Procedures[24]
Stored procedures in Neo4j are called using Cypher calls. Arguments can be supplied directly within the query or taken from the associated parameter set. Procedures can be written in Java, compiled as jar files and put into the database as plugins.
System Architecture[25][06]
Neo4j offers a shared-nothing architecture with a single write master and multiple read replicas thus consumes significant instance based storage.
Views[26]
Neo4j does not support the concept of views like traditional RDMS. However, one can create a special VIEW Node. Querying a view now implies querying the created view node, traversing the edges to find the results.
Citations
27 sources- Neo4j Graph Intelligence Platform neo4j.com
- https://github.com/neo4j/neo4j github.com
- Neo4j documentation - Neo4j Documentation neo4j.com
- Neo4j - Wikipedia wikipedia.org
- Impossible Is Nothing: The History (& Future) of Graph Data neo4j.com
- https://d0.awsstatic.com/whitepapers/Database/neo4j-graph-databases-aws.pdf awsstatic.com
- The Neo4j Java Reference v2026.05 - Java Reference neo4j.com
- Tutorial: Create a graph data model - Getting Started neo4j.com
- Modeling Categories in Neo4j - Neo4j Graph Platform neo4j.com
- Comparing relational to graph database - Getting Started neo4j.com
- Neo4j System Properties db-engines.com
- Neo4j Graph Database 3.5: Everything You Need to Know [GA Release] neo4j.com
- Neo4j documentation - Neo4j Documentation neo4j.com
- Welcome to the Dark Side: Neo4j Worst Practices (& How to Avoid Them) neo4j.com
- The Neo4j Java Reference v2026.05 - Java Reference neo4j.com
- https://neo4j.com/docs/developer-manual/3.4/cypher/execution-plans/combining-operators/#query-plan-node-hash-join neo4j.com
- Neo4j 3.0 changelog · neo4j/neo4j Wiki · GitHub github.com
- Performance - Operations Manual neo4j.com
- https://twitter.com/mesirii/status/863670543156957184 twitter.com
- Introduction - Cypher Manual neo4j.com
- Introduction - OGM Library neo4j.com
- http://digitalstain.blogspot.com/2011/11/rooting-out-redundancy-new-neo4j.html blogspot.com
- Easily Transfer Data Between Neo4j and Cassandra neo4j.com
- User-defined procedures - Java Reference neo4j.com
- What Is a Graph Database? - Graph DB Explained - AWS amazon.com
- Advances in Databases and Information Systems: 19th East European Conference ... - Google Books google.com
- https://twitter.com/peterneubauer/status/9248821667 twitter.com