为您的迁移做准备
主要版本引入了显著改进,且与之前的主要版本不兼容。与数据库交互的系统可能需要更新。并且总是需要停机。
查看变更
首先,查看新功能、修复和重大变更。在此过程中,列出您连接到 Neo4j 的需要更新的外部系统。特别是,
-
《发行说明》描述了新版本中引入或更改的内容。
-
重大变更页面是 Neo4j 4.x 与 Neo4j 5.x 之间所有重大变更的汇总列表。
-
有关 Cypher 语言的变更,请参阅《Cypher® 手册 → 弃用、新增和兼容性》。
-
企业版 从 5.23 版本开始,
block
格式是企业版的推荐格式,因为它具有卓越的性能和可伸缩性。它使用高级数据结构和内联技术来增强数据局部性,从而实现更好的资源利用。因此,强烈建议企业版用户尽早将所有数据库迁移到block
格式,以确保获得最佳性能。block
格式是 5.23 及更高版本中创建的新数据库的默认格式,也是 5.26 及更高版本中所有数据库的默认格式。欲了解更多信息,请参阅《操作手册 → 存储格式 → 更改现有数据库的存储格式》。 -
standard
和high_limit
格式在 5.23 版本中已弃用,并将在未来版本中移除。欲了解更多信息,请参阅《操作手册 → 存储格式 → 格式弃用》。 -
从 Neo4j 5.26 LTS 开始,在以下操作系统上部署数据库已被弃用,但仍受 5.26.x LTS 版本的支持
-
macOS 11, 12
-
Windows 桌面版 10
-
Amazon Linux 2022 AMI
-
Ubuntu Server 16.04, 18.04, 20.04
-
Windows Server 2016, 2019
-
停机时间
在 Neo4j 不同版本之间迁移数据库总是需要停机。尽管可以将旧版本保持在线并设置为只读模式。
由于每个案例都不同,建议您准备一个可以测试迁移过程的环境。这将为您提供比您估计的更准确的时间,并让您了解该过程的预期持续时间。
迁移数据库的时间将取决于数据库的大小,因为每个数据库都必须进行备份和恢复。4.4 和 5 之间没有文件格式变更需要长时间的转换操作。
准备索引
在 Neo4j 5 中,BTREE 索引被 RANGE、POINT 和 TEXT 索引取代。建议在迁移之前,为每个 BTREE 索引和由索引支持的约束创建匹配的 RANGE、POINT 或 TEXT 索引,并在 Neo4j 4.4 中填充它们。这有助于避免在 Neo4j 5 迁移期间删除 BTREE 索引时出现任何性能下降。
不要删除旧的 BTREE 索引。它们必须与 Neo4j 4.4 中新创建的索引共存,因为新索引无法被您的 4.4 安装使用。旧索引将在迁移过程中自动删除。 |
选择替代索引
在大多数情况下,RANGE 索引可以替代 BTREE。但是,在某些情况下,不同的索引类型可能更适用,例如
-
如果属性值类型为
point
并且该属性使用了distance
或bounding box
查询,请使用 POINT 索引。 -
如果属性值类型为
text
且值可能大于 8Kb,请使用 TEXT 索引。 -
如果属性值类型为
text
且在对该属性的查询中使用了CONTAINS
和ENDS WITH
,请使用 TEXT 索引。
可以在属性上拥有不同索引类型的多个索引。
创建索引
您可以在 Neo4j 4.4 数据库上运行 SHOW INDEXES
以显示其索引。对于每个索引和由索引支持的约束,创建 额外的 RANGE、POINT 或 TEXT 类型的索引或约束。
以下代码块展示了如何创建 RANGE 索引
CREATE RANGE INDEX range_index_name FOR (n:Label) ON (n.prop1)
由 RANGE 索引支持的约束的创建示例
CREATE CONSTRAINT constraint_with_provider FOR (n:Label) REQUIRE (n.prop1) IS UNIQUE OPTIONS {indexProvider: 'range-1.0'}
在数据库迁移期间,可以使用 |
有关创建索引的更多信息,请参阅《Cypher 手册 → 创建索引》。
应用程序代码
根据您的应用程序与 Neo4j 的交互方式,您应该准备好审查您的应用程序代码。所有可能影响您的应用程序和 Neo4j 的重大变更都可以在《Neo4j 4.4 与 Neo4j 5.x 之间的重大变更》中找到。
驱动程序
Neo4j 4.4 驱动程序与 Neo4j 5 向前兼容,Neo4j 5 驱动程序与 Neo4j 4.4 向后兼容。这意味着您可以先使用现有驱动程序将应用程序迁移到 Neo4j 5,然后再升级驱动程序,反之亦然。请注意,只有在使用最新的 Neo4j 5 驱动程序时,才能访问新的 Neo4j 5 数据库功能。
Neo4j 5.x 中的集群
Neo4j 的集群在 5.x 系列中得到了显著改进,旧的因果集群不再受支持。新的集群基础设施将服务器与数据库解耦,提高了可伸缩性和云就绪性。要熟悉新概念,请阅读《操作手册 → 集群简介》。
在 Neo4j 5.23 版本中,发现服务 v1 已弃用,并引入了发现服务 v2。在 2025.01 版本中,发现服务 v1 已移除。因此,强烈建议从 v1 过渡到 v2,并且必须在升级到 Neo4j 2025.01 之前完成。有关更多详细信息,请参阅《操作手册 → 从发现服务 v1 迁移到 v2》。 |
插件(包括自定义插件)
记下您正在使用的插件,并确保它们与 Neo4j 5.x 兼容。如果您开发了任何自定义插件,您应该像审查应用程序代码一样审查它们。
如果您正在使用 Neo4j Bloom 或图数据科学,您可以在Neo4j 部署中心找到这些产品的最新版本。
如果您正在使用 APOC,请参阅《APOC 迁移指南》以获取指导。