Neo4j 支持在同一 DBMS 中管理多个数据库。这些数据库的元数据(包括相关的安全模型)保存在一个称为数据库的特殊数据库中system
。所有多数据库管理命令都必须针对数据库运行。当通过 Bolt 连接到 DBMS 时,system
这些管理命令会自动路由到数据库。system
滚动升级期间不应使用管理命令。有关更多信息,请参阅升级和迁移指南 → 升级集群。 |
创建数据库
您可以使用 Cypher 命令创建数据库CREATE DATABASE
。
数据库名称需遵守数据库名称部分中指定的规则。不建议在数据库名称中使用点 ( |
在 Neo4j 5.22 之前的版本中,所有新数据库的默认存储格式为aligned
。从 Neo4j 5.22 开始,block
只要未db.format指定设置,所有新创建的数据库的默认格式都是 。
如果要更改它,您可以在neo4j.confdb.format文件中为配置设置一个新值。 或者,您可以使用命令设置新数据库的存储格式。但是,如果存储以或为种子,或者如果命令用于挂载磁盘上已经存在的预先存在的存储文件,它们将使用其当前存储格式而不进行任何更改。CREATE DATABASE databasename OPTIONS {storeFormat: 'the-new-format'}
seedURI
existingDataSeedInstance
有关 Neo4j 中可用的数据库存储格式的更多详细信息,请参阅存储格式。
句法
命令 | 句法 |
---|---|
|
|
选项
该CREATE DATABASE
命令可以有一个选项图,例如OPTIONS {key: 'value'}
。
钥匙 | 价值 | 描述 |
---|---|---|
|
| 控制系统在创建数据库时如何处理磁盘上的现有数据。目前,仅支持 和 |
| 集群服务器ID | 定义哪个服务器用于为创建的数据库播种数据。 |
| 现有数据库的备份或转储的 URI。 | 从外部源定义一个相同的种子,该种子将用于为所有服务器提供种子。 |
| 以逗号分隔的配置值列表。 |
|
| 证书 | 定义需要传递到某些种子提供商的凭证。 |
|
| 定义出于变更数据捕获 (CDC) 目的而应用于事务日志的丰富级别。 有关丰富模式的详细信息,请参阅变更数据捕获手册 → 在自管理实例上启用 CDC → 设置丰富模式。 |
|
| 如果创建的数据库是新的,则定义存储格式。如果存储以 |
|
例子
创建数据库
要创建名为 的数据库customers
,请使用命令CREATE DATABASE
后跟该数据库的名称。
CREATE DATABASE customers
当您创建数据库时,它会显示在命令提供的列表中SHOW DATABASES
:
SHOW DATABASES YIELD name
+-------------+
| 名称 |
+-------------+
| “顾客” |
| “电影” |
| “neo4j”|
| “系统” |
+-------------+
使用以下方式创建数据库slow,并WAIT
子句WAIT
允许您指定命令必须完成并返回的时间限制。
CREATE DATABASE slow WAIT 5 SECONDS
+------------------------------------------------ ------+
| 地址 | 状态 | 消息 | 成功 |
+------------------------------------------------ ------+
| “localhost:7687” | “CaughtUp” | “被抓住了” | TRUE |
+------------------------------------------------ ------+
该success
列提供了命令是否成功的汇总状态。因此,每一行都具有相同的值,该值取决于命令是否成功完成且没有超时。
IF NOT EXISTS
使用或创建数据库OR REPLACE
该CREATE DATABASE
命令是可选的幂等命令,如果数据库已存在,则默认行为会失败并出现错误。有两种方法可以避免此行为。
首先,附加IF NOT EXISTS
到命令可确保不会返回任何错误,并且如果数据库已存在则不会发生任何事情。
CREATE DATABASE customers IF NOT EXISTS
其次,添加OR REPLACE
到命令中会删除任何现有数据库并创建一个新的数据库。
CREATE OR REPLACE DATABASE customers
这相当于跑步DROP DATABASE customers IF EXISTS
然后CREATE DATABASE customers
。
IF NOT EXISTS
和的行为OR REPLACE
适用于标准数据库和复合数据库(例如,复合数据库可以替换标准数据库或另一个复合数据库)。
|
启动数据库
可以使用命令启动数据库START DATABASE
。
标准数据库和复合数据库都可以使用此命令启动。 |
句法
命令 | 句法 |
---|---|
|
|
例子
启动数据库
启动数据库是一个简单的操作。假设您有一个名为 的数据库customers
。要启动它,请使用以下命令:
START DATABASE customers
您可以通过运行命令来查看已启动数据库的状态SHOW DATABASE name
。
SHOW DATABASE customers YIELD name, requestedStatus, currentStatus
+------------------------------------------------------------------------+
| 名称 | 请求状态 | 当前状态 |
+------------------------------------------------------------------------+
| “客户” | “在线” | “在线” |
+------------------------------------------------------------------------+
停止数据库
可以使用命令停止数据库STOP DATABASE
。
句法
命令 | 句法 |
---|---|
|
|
例子
停止数据库
要停止数据库,请使用以下命令:
STOP DATABASE customers
使用此命令可以停止标准数据库和复合数据库。 |
可以使用以下命令查看已停止数据库的状态SHOW DATABASE name
:
但其会提示错误:
Unsupported administration command: STOP DATABASE neo4j
SHOW DATABASE customers YIELD name, requestedStatus, currentStatus
+------------------------------------------------------------------------+
| 名称 | 请求状态 | 当前状态 |
+------------------------------------------------------------------------+
| “客户” | “离线” | “离线” |
+------------------------------------------------------------------------+
使用以下命令停止数据库WAIT
您还可以使用子句来停止数据库WAIT
,该子句允许您指定系统等待数据库停止的时间。
STOP DATABASE customers WAIT 10 SECONDS
使用该命令停止的数据库 |