背景说明

测试的时候,使用的 neo4j 是 v4.x 的版本。

当时想使用一下生产的数据,看了一下已有的服务是 v3.5.x 的版本,就像看一下二者是否兼容?

参考资料

Neo4J 3.5版本升级4.X版本变化和升级步骤文档(官方)

Cypher 语法

变化详情-> Cypher Manual → Removals, deprecations, additions and extensions

从4.0版本开始,参数由 {parameter} 变为 $parameter

这个变化影响比较大,导致原来的 cypher 语法不兼容。

用户认证

3.x 版本用户认证信息保存于 Flat File 中,4.0 开始采用更加复杂和安全的方式存储于特定的数据库system中,并且采用基于角色的管理控制方式。

Authentication and authorization

数据库

从4.0版起,Neo4j支持在同一DBMS中管理多个数据库。

这些数据库的元数据(包括相关的安全模型)保存在一个称为system数据库的特殊数据库中。

默认安装完之后,应当有两个数据库

system - the system database, containing metadata on the DBMS and security configuration.

neo4j - the default database. A different name can be configured before starting Neo4j for the first time.

随着多个数据库的引入,数据库命名规则发生了变化。例如,不再可以在数据库名称中使用下划线

为了支持多个数据库,存储文件、事务文件和日志文件不再存储在基本目录中。每个数据库中的文件被分隔成不同的目录存储

指标变化

在4.x版本,有两类指标,全局指标和数据库本地指标,指标命名相对于3.x版本有所不同,具体查看Operations Manual → Metrics

注意:4.2版本指标默认开启发生变化,任何你想开启的指标必须配置在 metrics.filter 中,此外,在4.2版本中,默认情况下不再通过JMX公开指标。这些可以通过添加metrics.jmx来启用。

配置 enabled=true 在neo4j.conf中。

备份变化

从Neo4j 4.0开始,每个数据库都是单独备份的。因此,为他们中的每一个计划备份策略非常重要。有关为您的设置设计适当备份策略的详细信息,请参阅 备份和恢复

使用neo4j-admin backup命令的–database选项指定要备份的数据库。有关更多信息,请参阅 备份联机数据库。

–name参数已删除。以前使用–backup-dir时,它用于指定路径的最后一部分。路径的最后一部分现在从–database参数中推断出来,该参数指定服务器上的数据库名称。

如果以前使用–name自定义备份路径,例如,通过包含时间戳,现在可以使用–backup-dir

JMX变化

在3.x中,Neo4j公开了几个JMX MBean,以便除了Neo4j所公开的指标之外,还提供一些监控信息。在某些情况下,提供的数据不完整或不正确,在某些情况中,不同的bean甚至提供了冲突信息。所有以前的JMX端点(org.neo4j:)都已被删除,并被一组新的bean(neo4j.metrics:)所取代,这些bean暴露的信息与相应的neo4j指标完全相同。

JMX MBean仅在Enterprise Edition中可用。

Neo4J API变化

Neo4j 4.0是第一个需要JDK 11的主要版本。现在可以为JDK 11编译自定义扩展和过程,例如-target 11。通常建议使用最新的JDK 11来访问所有可用的修复和性能改进。

详细信息请查看

小结

这种不同的版本一定要注意一下,不然踩坑比较麻烦。

要保证测试环境和生产的版本兼容性。

在不同版本升级的时候,一定要非常谨慎。

如果我们在做一些设计的时候,没有必要,不要随便做一些对用户可见的变更,导致不兼容很麻烦。

还有解决方案就是,不要依赖这个库,最好申请一下其他的资源。

参考资料

chat