Neo4j databases and graphs
Cypher® queries are executed against a Neo4j database, but normally apply to specific graphs. It is important to understand the meaning of these terms and exactly when a graph is not a database.
- DBMS
-
A Neo4j Database Management System is capable of containing and managing multiple graphs contained in databases. Client applications will connect to the DBMS and open sessions against it. A client session provides access to any graph in the DBMS.
- Graph
-
This is a data model within a database. Normally there is only one graph within each database, and many administrative commands that refer to a specific graph do so using the database name.
Cypher queries executed in a session may declare which graph they apply to, or use a default, given by the session.
In Neo4j Fabric it is possible to refer to multiple graphs within the same query.
- Database
-
A database is a storage and retrieval mechanism for collecting data in a defined space on disk and in memory.
Most of the time Cypher queries are reading or updating queries which are run against a graph. There are, however, administrative commands that apply to a database, or to the entire DBMS. Such commands cannot be run in a session connected to a normal user database, but instead need to be run within a session connected to the special system database.
More on this requirement is described in the chapter on Administration.
The system database and the default database
All Neo4j servers will contain a built-in database called system
which behaves differently than all other databases.
This database stores system data and you can not perform graph queries against it.
A fresh installation of Neo4j will include two databases:
-
system
- the system database described above, containing meta-data on the DBMS and security configuration. -
neo4j
- the default database, named using the config optiondbms.default_database=neo4j
.
Different editions of Neo4j
Neo4j has two editions, a commercial Enterprise Edition with additional performance and administrative features, and an open-source Community Edition. Cypher works almost identically between the two editions, and as such most of this manual will not differentiate between them. In the few cases where there is a difference in Cypher language support or behaviour between editions, these are highlighted as described below in Limited Support Features.
However it is worth listing up-front the key areas that are not supported in the open-source edition:
Feature | Enterprise | Community |
---|---|---|
Any number of user databases |
Only |
|
Role-based security |
User, Role and Privilege management for flexible access control and sub-graph access control. |
Multi-user management. All users have full access rights. |
Constraints |
Existence constraints and multi-property |
Limited Support Features
Some elements of Cypher do not work in all deployments of Neo4j, and we use specific markers to highlight these cases:
Marker | Description | Example |
---|---|---|
|
This feature is deprecated and will be removed in a future version |
|
|
This feature only works in the enterprise edition of Neo4j |
|
|
This feature only works in a fabric deployment of Neo4j. |
|