导出到新的 Neo4j 数据库

此功能在 AuraDS 中不可用。

此功能在 Aura 图形分析无服务器中不可用。

我们可以从图目录中存储的投影图创建新的 Neo4j 数据库。投影图中的所有节点、关系和属性都将被写入新的 Neo4j 数据库。这包括在 gds.graph.project 中投影的数据,以及在 mutate 模式下运行算法添加的数据。新创建的数据库将使用给定的数据库名称存储在 Neo4j 的 databases 目录中。

此功能在以下示例场景中非常有用:

  • 通过导出数据而非写回,避免对操作系统造成繁重写入负载。

  • 创建操作系统的分析视图,可作为运行算法的基础。

  • 生成分析结果快照并将其持久化,以便归档和检查。

  • 在组织内部共享分析结果。

语法

将投影图导出到 Neo4j 数据库目录中的新数据库
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
表 1. 参数
名称 类型 可选 描述

graphName

字符串

图在目录中存储的名称。

configuration

映射

配置数据库导出的额外参数。

表 2. 图导出配置
名称 类型 默认值 可选 描述

dbName

字符串

导出的 Neo4j 数据库的名称。

dbFormat

字符串

db_format 默认值

数据库格式。有效值为空白(无值,默认)、standardalignedhigh_limitblock

writeConcurrency

布尔值

4

用于写入数据库的并发线程数。

enableDebugLog

布尔值

false

将调试信息打印到 Neo4j 日志文件(已弃用)。

batchSize

整数

10000

单个线程一次处理的实体数量。

defaultRelationshipType

字符串

__ALL__

用于 * 关系投影的关系类型。

additionalNodeProperties

字符串、列表或映射

{}

允许从支持内存中图的原始图导出额外的节点属性。

表 3. 结果
名称 类型 描述

dbName

字符串

导出的 Neo4j 数据库的名称。

graphName

字符串

图在目录中存储的名称。

nodeCount

整数

导出的节点数量。

nodePropertyCount

整数

导出的节点属性数量。

relationshipCount

整数

导出的关系数量。

relationshipTypeCount

整数

导出的关系类型数量。

relationshipPropertyCount

整数

导出的关系属性数量。

writeMillis

整数

将图写入新数据库的毫秒数。

示例

将 GDS 中的 my-graph 导出到名为 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 配置参数。

将 GDS 中的 my-in-memory-graph(带 my-db-graph 中的 myproperty)导出到名为 mydatabase 的 Neo4j 数据库中
CALL gds.graph.export('my-graph', { dbName: 'mydatabase', additionalNodeProperties: ['myproperty']})

新数据库可以使用 数据库管理命令启动。

为了使导出正常工作,原始数据库(my-db-graph)自加载要导出的内存表示(my-in-memory-graph)以来不得发生更改。

additionalNodeProperties 参数使用与 图项目过程nodeProperties 相同的语法。因此,我们可以为 myproperty 定义一个默认值。

将 GDS 中的 my-in-memory-graph(带 my-db-graph 中的 myproperty 默认值)导出到名为 mydatabase 的 Neo4j 数据库中
CALL gds.graph.export('my-graph', { dbName: 'mydatabase', additionalNodeProperties: [{ myproperty: {defaultValue: 'my-default-value'}}] })
© . All rights reserved.