迁移指南

APOC v.5 升级与迁移

有关如何迁移 Neo4j 数据库的信息,请参阅Neo4j 迁移指南

升级或修补 APOC v.5

查看变更

查看发布页上的更新日志,了解新版本中引入或更改的内容。

弃用、更新和新增内容的列表也可以在此处找到。

从 Neo4j v.4.4 迁移数据库

数据库只能从 Neo4j v.4.4 迁移到 Neo4j v.5。

自 Neo4j v5 版本起,APOC 已被拆分为两个独立的存储库:

  • APOC Core 库 - 由 Neo4j 官方支持。

  • APOC Extended - 一个由社区管理、非 Neo4j 官方管理的存储库。

APOC 完整包 (APOC Core + APOC Extended) 已不再可用。要使用非官方支持的 APOC Extended 过程和函数,请参阅 APOC Extended 存储库。

APOC 配置

自 APOC v.5 起,neo4j.conf 不再支持 apoc.* 配置设置。所有配置设置都应放在 apoc.conf 中。它们也可以通过环境变量设置。

如果配置设置在 neo4j.conf 中且 server.config.strict_validation.enabled 设置为 true,则数据库将无法启动。另请注意,如果此设置被禁用,neo4j.conf 中剩余的任何 apoc.* 设置将不会被读取,因此也不会生效。

APOC 触发器

将 Neo4j 从 v.4.4 迁移到 v.5 需要恢复备份。由于 APOC 触发器存储在 system 数据库中,它们不包含在备份中,因此不会随其余数据一起迁移。

因此,需要使用 apoc.trigger.install 过程重新创建所有触发器,并根据需要调整 apoc.trigger.stop

例如,在已安装现有 APOC 触发器的 Neo4j v.4.4 数据库中,可以运行以下查询(针对 neo4j 数据库执行):

CALL apoc.trigger.list();
表 1. 结果
名称 查询 选择器 参数 已安装 已暂停

"count-removals"

MATCH (c:NodesCounter) SET c.count = c.count + size([f IN $deletedNodes WHERE id(f)  0] SET time = $time)

{"phase":"after"}

{time: 1674218712858}

TRUE

FALSE

"count-relationships"

MATCH (c:RelationshipsCounter) SET c.count = c.count + size([f IN $createdRelationships WHERE id(f)  0])

{}

{}

TRUE

TRUE

上述触发器可以在 Neo4j v.5 数据库(针对系统 LEADER 数据库执行)上通过以下方式重新创建:

CALL apoc.trigger.install(
  'neo4j',
  'count-removals',
  "MATCH (c:NodesCounter) SET c.count = c.count + size([f IN $deletedNodes WHERE id(f) > 0] SET time = $time)",
  {phase: 'after'},
  {params: {time: 1674218712858}}
);

CALL apoc.trigger.install(
  'neo4j',
  'count-relationships',
  "MATCH (c:RelationshipsCounter) SET c.count = c.count + size([f IN $createdRelationships WHERE id(f) > 0])",
  {}
);

CALL apoc.trigger.stop('neo4j', 'count-relationships')

APOC 触发器现已迁移到您的新 Neo4j v5 数据库。

© . All rights reserved.