备份与恢复

此功能在 AuraDS 中不可用。

此功能处于 Alpha 级别。有关功能级别的更多信息,请参阅API 级别

在 Neo4j 图数据科学库中,图和机器学习模型存储在内存中。这主要是出于性能原因的需要,但其缺点是数据库关闭后数据将丢失。已经有一些概念可以规避此限制,例如在写入模式下运行算法、将图导出为 CSV存储模型。本节中描述的备份和恢复过程将提供一种简单统一的方式来保存图和模型,以便在数据库重启后将它们重新加载到内存中。

请注意,同一时间只能存在一个备份。调用备份将覆盖先前的备份。对于多个用户,建议由管理员用户执行备份和恢复操作,因为他们可以访问所有图和模型。

必须为该功能配置 gds.export.location 参数。

语法

备份内存中的图和模型
CALL gds.backup(configuration: Map)
YIELD
  backupId: String,
  backupTime: LocalDateTime,
  exportMillis: Long
表 1. 参数
名称 类型 可选 描述

配置

映射

配置备份的附加参数。

表 2. 配置
名称 类型 默认值 描述

并发

整数

4

执行备份时使用的并发线程数。

包含图

布尔值

true

决定是否只备份模型或同时备份图的标志。

使用标签映射

布尔值

true

决定导出图时是否使用节点标签映射的标志。详见将图导出为 CSV

表 3. 结果
名称 类型 描述

图名称

字符串

持久化图的名称,如果持久化的是模型则为空字符串。

模型名称

字符串

持久化模型的名称,如果持久化的是图则为空字符串。

导出路径

字符串

备份存储的路径。

备份时间

本地日期时间

备份创建的时间点。

导出毫秒

长整型

创建备份所用的毫秒数

状态

字符串

持久化操作的状态。可以是 SUCCESSFUL(成功)或 FAILED(失败)。

恢复图和模型
CALL gds.restore(configuration: Map)
YIELD
  restoredGraph: String,
  restoredModel: String,
  status: String,
  restoreMillis: Long
表 4. 参数
名称 类型 可选 描述

配置

映射

配置恢复的附加参数。

表 5. 配置
名称 类型 默认值 描述

并发

整数

4

执行恢复时使用的并发线程数。

表 6. 结果
名称 类型 描述

已恢复的图

字符串

已恢复图的名称,如果恢复的是模型则为空字符串。

已恢复的模型

字符串

已恢复模型的名称,如果恢复的是图则为空字符串。

状态

字符串

恢复操作的状态。可以是 SUCCESSFUL(成功)或错误消息。

恢复毫秒

长整型

恢复所用的时间(毫秒)。

示例

以下所有示例都应在一个空数据库中运行。

示例通常使用Cypher 投影。原生投影将在未来的版本中弃用。

首先,我们需要在相应的 Neo4j 数据库中创建一个图。

以下 Cypher 语句将在 Neo4j 数据库中创建示例图
CREATE
  (alice:Person {name: 'Alice'}),
  (bridget:Person {name: 'Bridget'}),

  (alice)-[:KNOWS]->(bridget)

现在我们需要投影一个我们想要备份的内存图。

以下语句将使用原生投影投影一个图,并将其以名称 'myGraph' 存储在图目录中。
MATCH (n:Person)-[r:KNOWS]->(m:Person)
RETURN gds.graph.project('myGraph', n, m)

现在我们可以运行备份过程,将内存中的图存储到磁盘上。

以下将运行备份过程
CALL gds.backup()
YIELD graphName, status
表 7. 结果
图名称 状态

"myGraph"

"SUCCESSFUL"

现在可以安全地删除内存中的图或关闭数据库,因为我们可以在以后恢复它。

以下将删除内存中的图
CALL gds.graph.drop('myGraph')

如果我们要恢复已备份的图,只需运行恢复过程即可将其重新加载到内存中。

以下将运行恢复过程
CALL gds.restore()
YIELD restoredGraph
表 8. 结果
已恢复的图

"myGraph"

正如我们所看到的,名为 myGraph 的一个图已通过该过程恢复。

© . All rights reserved.