亚马逊 Neptune Engine 版本 1.4.0.0 (2024-11-06) - Amazon Neptune

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

亚马逊 Neptune Engine 版本 1.4.0.0 (2024-11-06)

截至 2024 年 11 月 6 日,引擎版本 1.4.0.0 已全面部署。请注意,新版本在每个区域的发布需要几天的时间。

注意

引擎版本 1.3.0.0 为自定义参数组和自定义集群参数组引入了一种新格式。因此,如果您要从 1.3.0.0 之前的引擎版本升级到引擎版本 1.3.0.0 或更高版本,则必须使用参数组系列 neptune1.3 重新创建所有现有的自定义参数组和自定义集群参数组。早期版本使用参数组系列 neptune1neptune1.2,而这些参数组不适用于版本 1.3.0.0 及更高版本。请参阅Amazon Neptune 参数组了解更多信息。

警告

暂时不支持查询计划缓存用于执行涉及数字参数值的参数化查询的用例,这是因为在处理查询中重复使用数值类型参数时存在错误。例如:

MATCH (n:movie) WHERE n.runtime>=$minutes RETURN n UNION MATCH (n:show) WHERE n.duration>=$minutes RETURN n parameters={"minutes":130}

对语句或字典索引进行大量索引搜索的查询可能会出现5%的性能下降。例如,获取所有顶点的计数或获取所有顶点id的数量不会受到影响。获取所有顶点的所有属性最多可能有 5% 的回归。

此引擎版本中的新功能

  • 在没有显式 ID 的情况下向属性图中添加边时,默认情况下,服务器会分配一个UUID基于边缘 ID,该边缘 ID 存储在字典中。现在,通过设置新的群集参数neptune_enable_server_generated_edge_id = 1,服务器将IDs使用内部管理的 8 字节整数进行分配,而不会产生任何字典开销。这样可以节省存储空间并提高查询性能,而无需对查询进行任何更改。目前仅支持通过 Gremlin 查询语言进行插入。

  • 增加了对引擎嵌套遍历中执行 Gremlim limit () 步骤的支持。DFE

    g.V().project("foo").by(out().order().by(T.id).limit(1))

此引擎版本中的改进

一般改进
  • 一旦交易完成并且不再需要日志进行恢复,Neptune 将自动回收大型事务持有的撤消存储空间。

  • Support 支持全局数据库可存活副本。此功能允许辅助群集在主群集上重启写入器实例期间仍能处理读取请求。以前,当写入器实例重新启动时,辅助群集中的所有读取器实例也会重新启动。在此版本中,辅助集群读取器实例在写入器实例重启期间继续处理读取请求,从而提高了集群中的读取可用性。

  • 审计日志现在是同步写入的,这保证了每个查询都被记录下来。这可能会影响特别大的查询 (>100kb) 或高吞吐量工作负载 (>1000 qps) 的性能。

Gremlin 改进
  • 默认情况下,每个查询的超时时间被强制小于集群级别的超时。在之前的版本中,引入了此检查,但需要通过实验室模式参数 “” StrictTimeoutValidation 显式启用。在此版本中,“StrictTimeoutValidation” 将默认启用,必须明确禁用才能保持原来的行为。

openCypher 改进
  • 在之前的版本中,我们引入了扩展的日期时间格式支持,该支持通过实验室模式参数DatetimeMillisecond启用。默认情况下,此扩展日期时间格式支持已启用。

SPARQL改进
  • 新的查询权限显式IAM操作。

    Previously: COPY: WriteDataViaQuery & ReadDataViaQuery MOVE: WriteDataViaQuery & DeleteDataViaQuery DELETEINSERT: ReadDataViaQuery & DeleteDataViaQuery Now, COPY: WriteDataViaQuery & ReadDataViaQuery & DeleteDataViaQuery MOVE: WriteDataViaQuery & ReadDataViaQuery & DeleteDataViaQuery DELETEINSERT: ReadDataViaQuery, WriteDataViaQuery if there is INSERT clause, DeleteDataViaQuery if there is DELETE clause.

此引擎版本中修复的缺陷

常规修复
  • 修复了无服务器实例的一个问题,该问题可能导致数据库在向上扩展时重新启动。

  • 修复了与审计日志文件管理有关的问题,该问题可能导致无法访问日志文件进行下载或轮换,在某些情况下还会增加CPU使用量。

  • 修复了与优化延迟DFE引擎中地图输出生成相关的查询问题。

  • 修复了导致审核日志和慢速查询日志之间时间戳不匹配的问题。

Gremlin 修复
  • 解决了 Gremlin WebSocket 连接管理中的一个问题,即运行时间超过连接空闲超时时间的查询会过早终止。这特别影响了使用传输的 Python Gremlin 客户端。AIOHTTP

openCypher 修复
  • 修复了收集步骤中的一个问题,该问题在收集(distinct (n))查询构造期间存在空值时会导致内部失败异常。

  • 修复了启用查询计划缓存时查询中NullPointerException可能出现的问题。

  • 修复了查询包含LIMIT子句时评估的数据量超过所需数据的问题。

  • 修复了在带有查询计划缓存的参数化查询中使用范围运算(<、<=、>、>=)会产生重复结果的问题。

  • 修复了使用螺栓连接执行UNION和UNIONALL操作时转置结果列的问题。

此版本支持的查询语言版本

在将数据库集群升级到版本 1.4.0.0 之前,请确保您的项目与以下查询语言版本兼容:

  • 支持的 Gremlin 最早版本:3.7.1

  • 支持的 Gremlin 最新版本:3.7.1

  • openCypher 版本:Neptune-9.0.20190305-1.0

  • SPARQL版本:1.1

引擎版本 1.4.0.0 的升级路径

您可以从引擎版本 1.2.0.0 或更高版本升级到此版本。

升级到此版本

如果数据库集群运行的引擎版本有此版本的升级路径,则可以立即对其进行升级。您可以使用控制台上的数据库集群操作或使用,升级任何符合条件的集群SDK。以下CLI命令将立即升级符合条件的集群:

对于 Linux、OS X 或 Unix:

aws neptune modify-db-cluster \ --db-cluster-identifier (your-neptune-cluster) \ --engine-version 1.4.0.0 \ --allow-major-version-upgrade \ --apply-immediately

对于 Windows:

aws neptune modify-db-cluster ^ --db-cluster-identifier (your-neptune-cluster) ^ --engine-version 1.4.0.0 ^ --allow-major-version-upgrade ^ --apply-immediately

您可以指定 --no-apply-immediately,而不是 --apply-immediately。要执行主要版本升级, allow-major-version-upgrade参数是必需的。另外,请务必包括引擎版本,否则您的引擎可能会升级到其它版本。

如果集群使用自定义集群参数组,请确保包含以下参数以指定此参数组:

--db-cluster-parameter-group-name (name of the custom DB cluster parameter group)

同样,如果集群中的任何实例使用自定义数据库参数组,请确保包含此参数以指定此参数组:

--db-instance-parameter-group-name (name of the custom instance parameter group)

升级前始终先测试

发布新的主要或次要 Neptune 引擎版本时,请务必先在该版本上测试您的 Neptune 应用程序,然后再升级到该版本。即使是次要版本升级,也可能引入会影响代码的新特征或行为。

首先,将当前版本的发行说明页面与目标版本的发行说明页面进行比较,以查看查询语言版本是否会发生变化或是否会发生其它重大更改。

在升级生产数据库集群之前测试新版本的最佳方法是克隆生产集群,以便克隆运行新的引擎版本。然后,您可以在不影响生产数据库集群的情况下在克隆上运行查询。

请在升级之前始终创建手动快照

在执行升级之前,我们强烈建议您始终创建数据库集群的手动快照。拥有自动快照只能提供短期保护,而手动快照在您显式删除它之前仍然可用。

在某些情况下,作为升级过程的一部分,Neptune 会为您创建手动快照,但您不应依赖此快照,无论如何都应创建自己的手动快照。

当您确定不需要将数据库集群恢复到其升级前的状态时,可以显式删除自己创建的手动快照以及 Neptune 可能已创建的手动快照。如果 Neptune 创建手动快照,则其名称将以 preupgrade 开头,后跟数据库集群的名称、源引擎版本、目标引擎版本和日期。

注意

如果您在待处理操作正在进行时尝试升级,则可能会遇到如下错误:

We're sorry, your request to modify DB cluster (cluster identifier) has failed. Cannot modify engine version because instance (instance identifier) is running on an old configuration. Apply any pending maintenance actions on the instance before proceeding with the upgrade.

如果遇到此错误,请等待待处理操作完成,或者立即触发维护时段,让之前的升级完成。

有关升级引擎版本的更多信息,请参阅维护 Amazon Neptune 数据库集群。如果您有任何疑问或疑虑, AWS 可通过社区论坛和AWS 高级支持与支持团队联系