导出到新的 Neo4j 数据库

此功能在 AuraDS 中不可用。

我们可以从存储在图目录中的投影图创建新的 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-graphmyproperty 属性,可以使用 additionalProperties 配置参数。

使用来自 my-db-graphmyproperty 从 GDS 导出 my-in-memory-graph 到名为 mydatabase 的 Neo4j 数据库。
CALL gds.graph.export('my-graph', { dbName: 'mydatabase', additionalNodeProperties: ['myproperty']})

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

为了使导出正常工作,原始数据库 (my-db-graph) 自加载内存表示 (my-in-memory-graph) 以来必须没有更改。

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

使用来自 my-db-graphmyproperty 从 GDS 导出 my-in-memory-graph 到名为 mydatabase 的 Neo4j 数据库,并使用默认值。
CALL gds.graph.export('my-graph', { dbName: 'mydatabase', additionalNodeProperties: [{ myproperty: {defaultValue: 'my-default-value'}}] })