在 Aura 中升级到 Neo4j 5

本教程介绍如何将运行 Neo4j 4 版本的 Aura 实例升级到 Neo4j 5 版本。

新的 AuraDS 和 AuraDB 免费实例默认使用 Neo4j 5,而其他所有实例在创建期间可以选择 Neo4j 4 和 5。

准备升级

驱动程序

Neo4j 的官方驱动程序在版本之间有一些重大且不兼容的更改,您需要了解这些更改。为了实现顺利迁移

  1. 检查您使用的每个驱动程序的不兼容更改,例如在 Python 驱动程序GDS 客户端 中。

  2. 确保您切换到与 Neo4j 数据库版本一致的最新版本的驱动程序。这可以在升级您与 Aura 一起使用的 Neo4j 版本之前完成,因为 5.x 驱动程序向后兼容。

更新和迁移指南 包含所有信息并列出了所有不兼容更改。

索引

在 Neo4j 5 中,BTREE 索引被 RANGE、POINT 和 TEXT 索引替换。在迁移数据库之前,在 Neo4j 4 中,您应该为每个 BTREE 索引(或索引支持的约束)创建一个匹配的 RANGE、POINT 或 TEXT 索引。您可以对 Neo4j 4 数据库运行 SHOW INDEXES 以显示其索引。

在大多数情况下,RANGE 索引可以替换 BTREE。但是,在某些情况下,其他索引类型可能更合适,例如

  • 如果属性值类型为 point 并且对属性使用 distancebounding box 查询,则使用 POINT 索引。

  • 如果属性值类型为 text 并且值可以大于 8Kb,则使用 TEXT 索引。

  • 如果属性值类型为 text 并且在属性的查询中使用 CONTAINSENDS WITH,则使用 TEXT 索引。

创建新索引后,应删除旧索引。以下示例显示了如何创建新的 RANGE 索引并删除现有的 index_name 索引

CREATE RANGE INDEX range_index_name FOR (n:Label) ON (n.prop1);
DROP INDEX index_name;

以下示例显示了如何创建由 RANGE 索引支持的约束

CREATE CONSTRAINT constraint_with_provider FOR (n:Label) REQUIRE (n.prop1) IS UNIQUE OPTIONS {indexProvider: 'range-1.0'}

有关创建索引的更多信息,请参阅 Cypher 手册→创建索引

Cypher 更新

Neo4j 5 对 Cypher 语法和错误处理进行了一些更改。

Cypher 语法

Cypher 语言语法中的所有更改都详细说明在 Cypher 手册→移除、弃用、添加和扩展 中。仔细查看您要迁移到的版本中的此部分,并在您的代码中进行必要的更改。

以下是 Neo4j 5 中引入的主要更改的简短列表

已弃用的功能 详情
MATCH (n)-[r:REL]->(m) SET n=r

改为使用 properties() 函数获取节点/关系的属性映射,然后可以在 SET 子句中使用

MATCH (n)-[r:REL]->(m) SET n=properties(r)
MATCH (a), (b), allShortestPaths((a)-[r]->(b)) RETURN b

MATCH (a), (b), shortestPath((a)-[r]->(b)) RETURN b

没有 可变长度关系shortestPathallShortestPaths 已弃用。改为使用带有 LIMIT 1 的 MATCH

MATCH (a), (b), shortestPath((a)-[r*1..1]->(b)) RETURN b
CREATE DATABASE databaseName.withDot ...

使用未转义的点创建数据库名称已弃用,改为转义数据库名称

CREATE DATABASE `databaseName.withDot` ...

Cypher 中的错误处理

Cypher 找到的许多语义错误都被报告为 Neo.ClientError.Statement.SyntaxError,即使它们是语义错误而不是语法错误。在 Neo4j 5 中,Cypher 查询返回的元数据得到了改进。

  • 某些警告代码的严重性已移至信息

    • SubqueryVariableShadowingWarningSubqueryVariableShadowing

    • NoApplicableIndexWarningNoApplicableIndex

    • CartesianProductWarningCartesianProduct

    • DynamicPropertyWarningDynamicProperty

    • EagerOperatorWarningEagerOperator

    • ExhustiveShortestPathWarningExhaustiveShortestPath

    • UnboundedVariableLengthPatternWarningUnboundedVariableLengthPattern

    • ExperimentalFeatureRuntimeExperimental

APOC

Aura 中可用的所有 APOC 过程和函数都列在 APOC 核心库 中。有关更多详细信息,请参阅 APOC 文档

过程

某些过程已被命令替换

过程 替代

db.indexes

SHOW INDEXES 命令

db.indexDetails

SHOW INDEXES YIELD * 命令

db.schemaStatements

SHOW INDEXES YIELD * 命令和 SHOW CONSTRAINTS YIELD * 命令

db.constraints

SHOW CONSTRAINTS 命令

db.createIndex

CREATE INDEX 命令

db.createUniquePropertyConstraint

CREATE CONSTRAINT …​ IS UNIQUE 命令

db.index.fulltext.createNodeIndex

CREATE FULLTEXT INDEX 命令

db.index.fulltext.createRelationshipIndex

CREATE FULLTEXT INDEX 命令

db.index.fulltext.drop

DROP INDEX 命令

dbms.procedures

SHOW PROCEDURES 命令

dbms.functions

SHOW FUNCTIONS 命令

dbms.listTransactions

SHOW TRANSACTIONS 命令

dbms.killTransaction

TERMINATE TRANSACTIONS 命令

dbms.killTransactions

TERMINATE TRANSACTIONS 命令

dbms.listQueries

SHOW TRANSACTIONS 命令

dbms.killQuery

TERMINATE TRANSACTIONS 命令

dbms.killQueries

TERMINATE TRANSACTIONS 命令

dbms.scheduler.profile

-

有关已移除和弃用的完整列表,请参阅更新和迁移指南

Neo4j 连接器

如果您使用的是用于Apache SparkApache Kafka的 Neo4j 连接器,请确保其版本与 Neo4j 5 兼容。

下载中心中提供的 Neo4j BI 连接器与 Neo4j 5 兼容。

执行升级

准备 Neo4j 4 Aura 实例后,即可将其迁移到新的或现有的 Neo4j 5 实例。

克隆

如果您有现有的 Neo4j 5 实例,则可以在 Neo4j 4 AuraDBAuraDS 实例上使用“克隆到现有”实例操作。

如果您没有现有的 Neo4j 5 实例,则可以在 Neo4j 4 AuraDBAuraDS 实例上使用“克隆到新”实例操作。

导出和导入

或者,您可以从 Neo4j 4 AuraDBAuraDS 实例导出快照转储文件,手动创建新的 Neo4j 5 实例,然后将转储文件导入到新的 Neo4j 5 AuraDBAuraDS 实例。