Amazon Neptune 引擎版本 1.1.0.0(2021 年 11 月 19 日) - Amazon Neptune

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

Amazon Neptune 引擎版本 1.1.0.0(2021 年 11 月 19 日)

截至 2021 年 11 月 19 日,引擎版本 1.1.0.0 正在普遍部署中。请注意,新版本在每个区域的发布需要几天的时间。

重要

从早于 1.1.0.0 的版本升级到此引擎版本还会触发数据库集群中所有实例的操作系统升级。由于不会处理操作系统升级过程中发生的活动写入请求,因此在开始升级之前,必须暂停对正在升级的集群的所有写入工作负载,包括批量数据加载。

为了成功完成升级,每个可用区 (AZ) 中的每个子网对于每个 Neptune 实例都必须至少有一个可用的 IP 地址。例如,如果子网 1 中有一个写入器实例和两个读取器实例,子网 2 中有两个读取器实例,则在开始升级之前,子网 1 必须至少有 3 个空闲的 IP 地址,子网 2 必须至少有 2 个空闲的 IP 地址。

升级开始时,Neptune 会根据您的数据库集群信息生成一个快照,其名称由 preupgrade 后跟自动生成的标识符组成。您无需为此快照付费,如果升级过程中出现任何问题,您可以使用它来还原数据库集群。

当引擎升级本身完成后,新的引擎版本将在旧操作系统上短暂可用,但不到 5 分钟后,集群中的所有实例将同时开始操作系统升级。此时,您的数据库集群将在几分钟内不可用。升级完成后,您可以恢复写入工作负载。

此过程会生成以下事件:

  • 每个集群的事件消息:

    • Upgrade in progress: Creating pre-upgrade snapshot [preupgrade-(autogenerated snapshot ID)]

    • Database cluster major version has been upgraded

  • 每个实例的事件消息:

    • Applying off-line patches to DB instance

    • DB instance shutdown

    • Finished applying off-line patches to DB instance

    • DB instance restarted

注意

从此引擎版本开始,Neptune 不再支持 R4 实例类型。如果您在数据库集群中使用 R4 实例,则在升级到此版本之前,必须手动将其替换为其它实例类型。如果您的写入器实例是 R4,请按照以下说明进行移动。

此版本的后续补丁版本

此引擎版本中的新增功能

  • 引入了由 AWS Graviton2 处理器提供支持的通用 T4g 和内存优化型 R6g 数据库实例。与当前一代基于 x86 的同类实例相比,基于 Graviton2 的实例可为各种工作负载提供明显更好的性价比。在这些新的实例类型上,应用程序可以正常运行,升级到它们时无需移植应用程序代码。

    有关定价和区域可用性的更多信息,请参阅 Amazon Neptune 定价页面

  • 在 Neptune ML 中引入了自定义模型

  • 在 Neptune ML 中增加了对 SPARQL 推理查询的支持。

  • 为属性图数据添加了一个新的流端点,即:

    https://Neptune-DNS:8182/propertygraph/stream

    这个端点的输出格式(名为 PG_JSON)与旧 gremlin/stream 输出的 GREMLIN_JSON 格式完全相同。

    新的 propertygraph/stream 端点将 Neptune 流支持扩展到 openCypher,并将 gremlin/stream 端点替换为其关联的 GREMLIN_JSON 输出格式。

此引擎版本中的改进

  • 对 Neptune 流进行了改进:

    • Neptune 流更改日志响应格式records 对象中添加了一个 commitTimestamp 字段,以便为更改日志流中的每个记录提供时间戳。

    • iteratorType 参数添加了 LATEST 值,允许您从流中检索最后一个有效的 eventId。请参阅呼叫直播 API

  • 增加了对在 Gremlin 节点分类和回归查询中获取推理置信度分数的支持。

  • 添加了对 openCypher 中 OPTIONAL MATCH 子句的支持。

  • 添加了对 openCypher 中 MERGE 子句的支持。

  • 添加了对在 openCypher 的 WITH 子句中使用 ORDER BY 的支持。

  • 在 openCypher 中增加了对模式理解的支持,并扩展了对存在性检查之外的模式表达式的支持。

  • 扩展了对 openCypher 中 DELETEDELETE DETACH 子句的支持,以便它们现在可以与其它更新子句一起使用。

  • 扩展了对 openCypher 中与 RETURN 一起使用的 CREATEUPDATE 子句的支持。

  • 在 DFE 引擎中添加了对 Gremlin limitrangeskip 步骤的支持。

  • 改进了 DFE 引擎中既没有请求 explain 也没有请求 profile 时的查询执行。

  • 改进了 DFE 引擎中 value 表达式的查询执行。

  • 改进了许多链接的 Gremlin 条件插入模式,以避免并发修改异常并允许链接这样的查询模式:

    • 按 ID 进行有条件的顶点插入,例如:

      g.V(ID).fold().coalesce(unfold(), g.addV("L1").property(id,ID))
    • 使用多个标签进行有条件的顶点插入,例如:

      g.V(ID).fold().coalesce(unfold(), g.addV("L1::L2").property(id,ID))
    • 按 ID 进行有条件的边缘插入,例如:

      g.E(ID).fold().coalesce(unfold(), V(from).addE(label).to(V(to)).property(id, ID))
    • 使用多个标签进行有条件的边缘插入,例如:

      g.E(ID).fold().coalesce(unfold(), g.addE(label).from(V(from)).to(V(to)).property(id, ID))
    • 有条件的插入,后跟查询,例如:

      g.V(ID).fold().coalesce(unfold(), g.addV("L1").property(id,ID)).project("myvalues").by(valueMap())
    • 带有附加属性的有条件插入,例如:

      g.V(ID).fold().coalesce(unfold(), g.addV("L1").property(id,ID).property("name","pumba"))

在此引擎版本中修复的缺陷

  • 已对 T3.medium 实例类型禁用统计数据特征,此实例类型无法支持该特征。

  • 修复了 explain 中使用非常量值的 IN 函数的 SPARQL 错误。

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

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

  • Gremlin 版本:3.4.11

  • SPARQL 版本:1.1

引擎版本 1.1.0.0 的升级路径

您可以将任何以前的 Neptune 引擎版本手动升级到此版本。

您不会自动升级到此版本。

升级到此版本

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

对于 Linux、OS X 或 Unix:

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

对于 Windows:

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

您可以指定 --no-apply-immediately,而不是 --apply-immediately。要执行主要版本升级,需要使用 allow-major-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 Premium Support 联系 AWS Support 团队。