创建分片属性数据库InfinigraphAura 不可用2025.12 版本引入
您可以使用 Cypher 命令 CREATE DATABASE 创建分片属性数据库(需要 Cypher 25,随 Neo4j 2025.06.0 版本引入)。
|
从 Neo4j 2026.02 版本开始,分布式 neo4j.conf 明确设置了 |
语法
| 命令 | 语法 |
|---|---|
|
|
创建分片属性数据库时,会生成以下内容:
-
一个虚拟的分片属性数据库
<name>。 -
一个名称为
<name>-g000的单一图分片(graph shard)。 -
若干名称为
<name>-p<index>的属性分片(property shards),其中<index>的范围从000到999。SET PROPERTY SHARDS中的 count 属性指定了属性分片的数量。
|
|
选项
CREATE DATABASE 命令可以包含一个选项映射,例如 OPTIONS {key: 'value'}。对于分片数据库,仅支持 seedURI、seedConfig、seedSourceDatabase、seedRestoreUntil 和 txLogEnrichment 选项。有关详细信息,请参阅 创建数据库 → 选项。
|
手动指定每个构件(artifact)时,映射的键(key)为分片名称,其中图分片名称 = |
拓扑的默认数量
分片属性数据库使用 Neo4j 集群拓扑。因此,您需要考虑以下设置将如何影响分片属性数据库的创建。initial.dbms.default_primaries_count 和 initial.dbms.default_secondaries_count 仅影响图分片。
| 配置设置 | 默认值 | 有效值 | 描述 |
|---|---|---|---|
|
|
标准数据库的主节点初始默认数量。在 DBMS 首次启动时初始化。如果用户未在 |
|
|
|
标准数据库的从节点初始默认数量。在 DBMS 首次启动时初始化。如果用户未在 |
|
|
|
属性分片的副本初始默认数量。在 DBMS 首次启动时初始化。如果用户未在 |
创建空分片属性数据库
您可以使用 CREATE DATABASE 命令创建空分片数据库。该命令允许您指定属性分片的数量和图分片的拓扑结构。以下示例展示了如何创建具有不同配置的空分片数据库。
示例 1:创建一个具有默认拓扑(1 个主节点、无从节点,每个属性分片 1 个副本)的空分片数据库
CYPHER 25 CREATE DATABASE `foo-sharded`
PROPERTY SHARDS { COUNT 3 };
从 URI 创建分片数据库(在线)
您可以通过使用来自一个或多个 URI 的数据进行种子填充(seeding),从现有的分片属性数据库创建新的分片属性数据库。当您想要将现有数据库复制为新数据库、数据来自其他来源、种子数据分布在多个位置,或者种子数据为转储格式而非备份格式时,这非常有用。有关从 URI 进行种子填充工作原理的更多信息,请参阅 从 URI 创建数据库。
以下示例展示了如何通过从一个或多个 URI 填充数据来创建分片属性数据库。
示例 1:通过从一个 URI 填充数据来创建分片数据库
从单个 URI(文件夹路径)进行填充时,DBMS 会使用元数据将数据分配到正确的数据库。这要求种子数据必须为备份格式,并且 DBMS 会在指定位置查找 foo-sharded-g000.backup、foo-sharded-p001.backup、foo-sharded-p002.backup 等文件。
CYPHER 25 CREATE DATABASE `foo-sharded`
PROPERTY SHARDS { COUNT 3 }
OPTIONS { seedURI: “s3://bucket/folder/” };
示例 2:通过从不同名称的备份填充数据来创建分片数据库
此示例类似于示例 1,但 DBMS 会查找 other-database-g000 等。
CYPHER 25 CREATE DATABASE `foo-sharded`
PROPERTY SHARDS { COUNT 3 }
OPTIONS { seedURI: “s3://bucket/folder/”, seedSourceDatabase: “other-database” };
示例 3:通过从转储(dumps)填充数据来创建分片数据库
从转储进行填充时,URI 需要以其用于填充的分片名称作为键,因为没有元数据来指示哪些数据属于哪个分片。在此示例中,分片名称将为 foo-sharded-g000 以及 foo-sharded-p000 到 foo-sharded-px,其中 x 为属性分片数量 -1。
CYPHER 25 CREATE DATABASE `foo-sharded`
PROPERTY SHARDS { COUNT 3 }
OPTIONS { seedUri: {
`foo-sharded-g000`: "s3://bucket/folder/foo-g000.dump",
`foo-sharded-p000`: "s3://bucket/folder/foo-p001.dump",
`foo-sharded-p001`: "s3://bucket/folder/foo-p002.dump",
`foo-sharded-p002`: "s3://bucket/folder/foo-p003.dump"
} };
示例 4:通过从分布在多个位置的数据填充来创建分片数据库
从存储在多个位置的备份进行填充时,需要为每个分片指定不同的 URI。
CYPHER 25 CREATE DATABASE `foo-sharded`
PROPERTY SHARDS { COUNT 3 }
OPTIONS {
seedUri: {
`foo-sharded-g000`: "s3://bucket/folder1/foo-g000.backup",
`foo-sharded-p000`: "s3://bucket/folder2/foo-p001.backup",
`foo-sharded-p001`: "s3://bucket/folder3/foo-p002.backup",
`foo-sharded-p002`: "s3://bucket/folder4/foo-p003.backup"
}
};