The data elements Neo4j stores are nodes, edges connecting them, and attributes of nodes and edges. Described by its developers as an ACID-compliant transactional database with native graph storage and processing,[3] Neo4j is available in a non-open-source "community edition" licensed with a modification of the GNU General Public License, with online backup and high availability extensions licensed under a closed-source commercial license.[4] Neo also licenses Neo4j with these extensions under closed-source commercial terms.[5]
Neo4j is implemented in Java and accessible from software written in other languages using the Cypher query language through a transactional HTTP endpoint, or through the binary "Bolt" protocol.[6][7][8][9] The "4j" in Neo4j is a reference to its being built in Java, however is now largely viewed as an anachronism.[10]
In November 2016, Neo4j successfully secured $36M in Series D Funding led by Greenbridge Partners Ltd.[14]
In November 2018, Neo4j successfully secured $80M in Series E Funding led by One Peak Partners and Morgan Stanley Expansion Capital, with participation from other investors including Creandum, Eight Roads and Greenbridge Partners.[15]
In June 2021, Neo4j announced another round of funding, $325M in Series F.[16]
Neo4j comes in five editions. Two are on-premises editions, Community (free) and Enterprise, and three are cloud-only editions: AuraDB Free, AuraDB Professional, and AuraDB Enterprise.
It is dual-licensed: GPL v3 (with parts of the code under AGPLv3 with Commons Clause), and a proprietary license. The Community Edition is free but is limited to running on one node only due to the lack of clustering and is without hot backups.[19]
The Enterprise Edition unlocks these limitations, allowing for clustering, hot backups, and monitoring. The Enterprise Edition is available under a closed-source commercial license.
The licensing is controversial and has been the subject of at least one lawsuit.[20]
Data structure
The data elements are nodes, edges which connect nodes to one another, and attributes of nodes and edges. Nodes and edges can be labelled. Labels can be used to narrow searches. As of version 2.0, indexing was added to Cypher with the introduction of schemas.[21] Previously, indexes were supported separately from Cypher.[22]
Criticisms
Database researcher Andy Pavlo from Carnegie Mellon University has questioned graph databases' decision to abandon the longstanding relational model in favor of a custom model.[23] Researchers from CWI benchmarked a modified version of DuckDB against Neo4j on graph-related workloads and found that, despite being an extension of a relational database running SQL, their implementation outperforms Neo4j in a few specific tasks.[24]
Neo4j sued PureThink, a small business that had used a power created under the terms of the GNU AGPL, to remove a restrictive Commons clause that Neo4j had added to the AGPL license.[20][25] The United States District Court for the Northern District of California made a decision on 2024-07-22 to impose $597,000 in actual damages on PureThink, having previously decided that PureThink had violated the DMCA by removing the Commons Clause from Neo4j's AGPL license, and that it had violated trademark law by continuing to use the name Neo4j in selling to government agencies.[26]