导出到新的 Neo4j 数据库
| 此功能在 AuraDS 中不可用。 |
|
在 Aura 图分析中,此功能仅可通过 Python 客户端使用。它目前无法作为 Cypher 过程或函数使用。 |
我们可以根据存储在图目录中的投影图创建新的 Neo4j 数据库。投影图中存在的所有节点、关系和属性都会被写入一个新的 Neo4j 数据库。这包括通过 gds.graph.project 投影的数据,以及通过在 mutate 模式下运行算法所添加的数据。新创建的数据库将使用指定的数据库名称存储在 Neo4j 的 databases 目录下。
此功能在以下示例场景中非常有用:
-
通过导出数据而非写回(write back),避免对生产系统造成沉重的写入负载。
-
创建生产系统的分析视图,作为运行算法的基础。
-
生成分析结果的快照,并将其持久化以用于归档和检查。
-
在组织内部共享分析结果。
语法
CALL gds.graph.export(graphName: String, configuration: Map)
YIELD
dbName: String,
graphName: String,
nodeCount: Integer,
nodePropertyCount: Integer,
relationshipCount: Integer,
relationshipTypeCount: Integer,
relationshipPropertyCount: Integer,
writeMillis: Integer
| 名称 | 类型 | 可选 | 描述 |
|---|---|---|---|
graphName |
字符串 |
否 |
图在目录中存储时所使用的名称。 |
配置 |
Map |
否 |
用于配置数据库导出的其他参数。 |
| 名称 | 类型 | 默认 | 可选 | 描述 |
|---|---|---|---|---|
dbName |
字符串 |
|
否 |
导出的 Neo4j 数据库名称。 |
dbFormat |
字符串 |
|
是 |
数据库格式。有效值为:空(无值,默认)、 |
writeConcurrency |
布尔值 |
|
是 |
用于写入数据库的并发线程数。 |
enableDebugLog |
布尔值 |
|
是 |
将调试信息打印到 Neo4j 日志文件中(已弃用)。 |
batchSize |
整数 |
|
是 |
单个线程一次处理的实体数量。 |
defaultRelationshipType |
字符串 |
|
是 |
用于 |
additionalNodeProperties |
字符串、列表或映射 |
|
是 |
允许从支持内存图的原始数据库中导出额外的节点属性。 |
字符串 |
|
是 |
可以提供一个 ID 以更轻松地跟踪算法的进度。 |
|
布尔值 |
|
是 |
如果禁用,进度百分比将不会被记录。 |
| 名称 | 类型 | 描述 |
|---|---|---|
dbName |
字符串 |
导出的 Neo4j 数据库名称。 |
graphName |
字符串 |
图在目录中存储时所使用的名称。 |
nodeCount |
整数 |
已导出的节点数量。 |
nodePropertyCount |
整数 |
已导出的节点属性数量。 |
relationshipCount |
整数 |
已导出的关系数量。 |
relationshipTypeCount |
整数 |
已导出的关系类型数量。 |
relationshipPropertyCount |
整数 |
已导出的关系属性数量。 |
writeMillis |
整数 |
将图写入新数据库所花费的毫秒数。 |
示例
my-graph 从 GDS 导出到名为 mydatabase 的 Neo4j 数据库中CALL gds.graph.export('my-graph', { dbName: 'mydatabase' })
可以使用 数据库管理命令 启动新数据库。
|
使用导出过程时,该数据库不得已存在。需要使用以下命令手动创建它。 |
:use system
CREATE DATABASE mydatabase;
:use mydatabase
MATCH (n) RETURN n;
包含额外节点属性的示例
假设我们在 Neo4j 数据库中有一个图 my-db-graph,它包含一个字符串类型的节点属性 myproperty;同时我们有一个对应的内存图 my-in-memory-graph,但其中不包含 myproperty 属性。如果我们想导出 my-in-memory-graph,同时从 my-db-graph 中添加 myproperty 属性,可以使用 additionalProperties 配置参数。
my-in-memory-graph 从 GDS 导出,并附带 my-db-graph 中的 myproperty,存入名为 mydatabase 的 Neo4j 数据库中CALL gds.graph.export('my-graph', { dbName: 'mydatabase', additionalNodeProperties: ['myproperty']})
可以使用 数据库管理命令 启动新数据库。
|
为了使导出正常工作,自加载内存表示( |
additionalNodeProperties 参数使用的语法与 图投影过程 中的 nodeProperties 相同。因此,我们例如可以为 myproperty 定义一个默认值。
my-in-memory-graph 从 GDS 导出,并附带 my-db-graph 中带有默认值的 myproperty,存入名为 mydatabase 的 Neo4j 数据库中CALL gds.graph.export('my-graph', { dbName: 'mydatabase', additionalNodeProperties: [{ myproperty: {defaultValue: 'my-default-value'}}] })