备份和恢复Alpha Enterprise Edition
AuraDS 中不提供此功能。 |
此功能处于 Alpha 阶段。有关功能阶段的更多信息,请参阅 API 阶段。
在 Neo4j 图数据科学库中,图和机器学习模型存储在内存中。这主要出于性能方面的考虑,但缺点是数据库关闭后数据将会丢失。已经有一些概念可以规避此限制,例如在 写入模式 下运行算法,将图导出到 csv 或 存储模型。本节中描述的备份和恢复过程将提供一种简单且统一的方式来保存图和模型,以便在数据库重启后将其重新加载到内存中。
请注意,同一时间只能存在一个备份。调用备份将覆盖之前的备份。对于多个用户,建议管理员用户执行备份和恢复操作,因为他们可以访问所有图和模型。
此功能必须配置 |
语法
CALL gds.backup(configuration: Map)
YIELD
backupId: String,
backupTime: LocalDateTime,
exportMillis: Long
名称 | 类型 | 可选 | 描述 |
---|---|---|---|
configuration |
映射 |
是 |
配置备份的其他参数。 |
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
concurrency |
整数 |
4 |
执行备份时使用的并发线程数。 |
includeGraphs |
布尔值 |
true |
决定是否仅备份模型或还备份图的标志。 |
useLabelMapping |
布尔值 |
true |
决定导出图时是否使用节点标签映射的标志。有关详细信息,请参阅 将图导出到 csv。 |
名称 | 类型 | 描述 |
---|---|---|
graphName |
字符串 |
持久化图的名称,如果改为持久化模型,则为空字符串。 |
modelName |
字符串 |
持久化模型的名称,如果持久化的是图则为空字符串。 |
exportPath |
字符串 |
备份存储的路径。 |
backupTime |
LocalDateTime |
创建备份的时间点。 |
exportMillis |
Long |
创建备份所花费的毫秒数。 |
status |
字符串 |
持久化操作的状态。可以是 |
CALL gds.restore(configuration: Map)
YIELD
restoredGraph: String,
restoredModel: String,
status: String,
restoreMillis: Long
名称 | 类型 | 可选 | 描述 |
---|---|---|---|
configuration |
映射 |
是 |
配置恢复的额外参数。 |
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
concurrency |
整数 |
4 |
执行恢复操作时使用的并发线程数。 |
名称 | 类型 | 描述 |
---|---|---|
restoredGraph |
字符串 |
恢复的图的名称,如果恢复的是模型则为空字符串。 |
restoredModel |
字符串 |
恢复的模型的名称,如果恢复的是图则为空字符串。 |
status |
字符串 |
恢复操作的状态。可以是 |
restoreMillis |
Long |
恢复操作花费的毫秒数。 |
示例
以下所有示例都应在空数据库中运行。 这些示例使用 Cypher 投影 作为规范。原生投影将在未来版本中弃用。 |
首先,我们需要在相应的 Neo4j 数据库中创建一个图。
CREATE
(alice:Person {name: 'Alice'}),
(bridget:Person {name: 'Bridget'}),
(alice)-[:KNOWS]->(bridget)
现在我们需要投影一个我们想要备份的内存图。
MATCH (n:Person)-[r:KNOWS]->(m:Person)
RETURN gds.graph.project('myGraph', n, m)
现在我们可以运行备份过程以将内存图存储在磁盘上。
CALL gds.backup()
YIELD graphName, status
graphName | status |
---|---|
|
|
现在可以安全地删除内存图或关闭数据库,因为我们可以在以后的某个时间点恢复它。
CALL gds.graph.drop('myGraph')
如果我们想恢复备份的图,我们可以简单地运行恢复过程将其加载回内存。
CALL gds.restore()
YIELD restoredGraph
restoredGraph |
---|
|
如我们所见,该过程恢复了一个名为 myGraph
的图。