Amazon Neptune 引擎版本 1.2.1.0(2023 年 3 月 8 日) - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon Neptune 引擎版本 1.2.1.0(2023 年 3 月 8 日)

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

注意

如果从 1.2.0.0 之前的引擎版本升级:

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

  • 引擎版本 1.2.0.0 还引入了一种新的撤消日志格式。因此,必须清除早期引擎版本创建的所有撤消日志,并且 UndoLogsListSize CloudWatch 指标必须降至零,然后才能开始从 1.2.0.0 之前的版本进行任何升级。如果您尝试开始更新时撤消日志记录过多(200000 或更多),则在等待清除撤消日志完成时,升级尝试可能会超时。

    您可以通过升级集群的写入器实例(清除发生的地方)来加快清除速率。在尝试升级之前执行此操作可能会在开始之前减少撤消日志的数量。将写入器的大小增加到 24XL 实例类型,可以将清除率提高到每小时超过一百万条记录。

    如果 UndoLogsListSize CloudWatch 指标非常大,那么提出支持案例可能会帮助您探索降低该指标的其它策略。

  • 最后,1.2.0.0 版本中有一项重大变化,会影响之前使用 Bolt 协议和 IAM 身份验证的代码。从版本 1.2.0.0 开始,Bolt 需要一个用于 IAM 签名的资源路径。在 Java 中,设置资源路径可能如下所示:request.setResourcePath("/openCypher"));。在其它语言中,可以将 /openCypher 附加到端点 URI 之后。有关示例,请参阅 使用 Bolt 协议

此版本的后续补丁版本

此引擎版本中的新增功能

  • 增加了对 TinkerPop 3.6.2 的支持,它增加了许多新的 Gremlin 特征,例如新的 mergeV()mergeE()element()fail() 步骤。mergeV()mergeE() 步骤特别值得注意,因为它们为执行类似更新插入的操作提供了期待已久的声明性选项,这应该可以大大简化现有的代码模式并使 Gremlin 更易于阅读。3.6.x 版本还添加了正则表达式谓词,对采用 Mapproperty() 步骤进行了新的重载,并对 by() 调制行为进行了重大修订,此行为在使用它的所有步骤中都更加一致。

    有关版本 3.6 中的更改以及升级时需要考虑的事项的信息,请参阅 TinkerPop 更改日志升级页面

    如果您使用 fold().coalesce(unfold(), <mutate>) 进行条件插入,我们建议您迁移到此处此处描述的新 mergeV/E() 语法。Neptune 对 Merge 使用的锁定模式比对 Coalesce 使用的锁定模式更窄,这可以减少并发修改异常 (CME)。

    有关此 TinkerPop 版本中提供的新特征的更多信息,请参阅 Stephen Mallette 的博客探索 Amazon Neptune 中 Apache TinkerPop 3.6.x 的新特征

  • 增加了对由第三代 Intel Xeon 可扩展处理器提供支持的 R6i 实例类型的支持。它们非常适合内存密集型工作负载,与同类 R5 实例类型相比,计算/性价比最多可提高 15%,每个 vCPU 的内存带宽最多可提高 20%。

  • 为属性图和 RDF 图形添加了图形摘要 API 端点,可让您快速获得有关图形的摘要报告。

    对于属性 (PG) 图,图形摘要 API 会提供节点和边缘标签以及属性键的只读列表,以及节点、边缘和属性的计数。对于 RDF 图形,它提供了类和谓词键的列表,以及四元组、主语和谓词的计数。

    以下更改与新的图形摘要 API 一起推出:

    • 添加了新的 GetGraphSummary 数据面板操作。

    • 添加了一个新的 rdf/statistics 端点来替换 sparql/statistics 端点(该端点现已弃用)。

    • 将统计数据状态响应中 summary 字段的名称更改为 signatureInfo,以免将其与图形摘要信息混淆。之前的引擎版本将继续在 JSON 响应中使用 summary

    • 将统计数据状态响应中 date 字段的精度从分钟更改为毫秒。以前的格式是 2020-05-07T23:13Z(分钟精度),而新的格式是 2023-01-24T00:47:43.319Z(毫秒精度)。两者都符合 ISO 8601 标准,但此更改可能会破坏现有代码,具体取决于日期的解析方式。

    • 在 Workbench 中添加了新的 %statistics 行魔术命令,可以让您检索 DFE 引擎的统计数据。

    • 在 Workbench 中添加了新的 %summary 行魔术命令,可以让您检索图形摘要信息。

  • 为记录执行时间超过指定阈值的查询添加了慢速查询日志记录。使用两个新的动态参数,即 neptune_enable_slow_query_logneptune_slow_query_log_threshold,可以启用和控制慢速查询日志记录。

  • 增加了对两个动态参数的支持,即新的集群参数 neptune_enable_slow_query_logneptune_slow_query_log_threshold。当您对动态参数进行更改时,它会立即生效,无需重启任何实例。

  • 添加了 Neptune 特定的 removeKeyFromMap() 函数,该函数从映射中删除指定的键并返回生成的新映射。

此引擎版本中的改进

  • 将 Gremlin DFE 支持扩展到具有本地范围的 limit 步骤。

  • 在 DFE 引擎中增加了对 Gremlin DedupGlobalStepby() 调制支持。

  • 增加了对 Gremlin SelectStepSelectOneStep 的 DFE 支持。

  • 各种 Gremlin 运算符的性能改进和正确性修复,包括 repeatcoalescestoreaggregate

  • 提高了涉及 MERGEOPTIONAL MATCH 的 openCypher 查询的性能。

  • 改进了 openCypher 查询的性能,这些查询涉及文本值映射列表的 UNWIND

  • 改进了对 id 具有 IN 筛选条件的 openCypher 查询的性能。例如:

    MATCH (n) WHERE id(n) IN ['1', '2', '3'] RETURN n
  • 增加了使用 BASE 语句为 SPARQL 查询指定基本 IRI 的功能(请参阅用于查询和更新的默认基本 IRI)。

  • 缩短了 Gremlin 和 openCypher 仅限边缘批量加载的加载处理等待时间。

  • 使批量加载在 Neptune 重启时异步恢复,以避免在恢复尝试失败之前因 Amazon S3 连接问题而导致的漫长等待时间。

  • 改进了对 SPARQL DESCRIBE 查询的处理,这些查询将 describeMode 查询提示设置为 "CBD"(简洁的界限描述),并且涉及大量空白节点。

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

  • 修复了一个 openCypher 错误,即在 Bolt 和 SPARQL-JSON 中,查询返回字符串 "null",而不是 null 值。

  • 修复了列表推导中的 openCypher 错误,该错误会生成 null 值而不是为列表元素提供的值。

  • 修复了字节值未正确序列化的 openCypher 错误。

  • 修复了 UnionStep 中的一个 Gremlin 错误,该错误发生在输入是边缘遍历到子遍历内的顶点时。

  • 修复了一个 Gremlin 错误,该错误导致与 UnionStep 关联的步骤标签无法正确传播到每个子遍历的最后一步。

  • 修复了 dedup 步骤的 Gremlin 错误,其中 repeat 步骤后面有标签,附加到 dedup 步骤的标签无法在查询中进一步使用。

  • 修复了一个 Gremlin 错误,即转换 union 步骤中的 repeat 步骤失败并出现内部错误。

  • 修复了 Gremlin 正确性问题,此类问题通过回退到 Tinkerpop 影响将 limit 作为非并集步骤的子遍历的 DFE 查询。以下形式的查询会受到影响:

    g.withSideEffect('Neptune#useDFE', true).V().as("a").select("a").by(out().limit(1))
  • 修复了一个 SPARQL 错误,即 SPARQL GRAPH 模式不会考虑 FROM NAMED 子句提供的数据集。

  • 修复了一个 SPARQL 错误,即包含一些 FROM 和/或 FROM NAMED 子句的 SPARQL DESCRIBE 并不总是正确使用默认图形中的数据,有时还会引发异常。请参阅SPARQL DESCRIBE 相对于默认图形的行为

  • 修复了一个 SPARQL 错误,以便在拒绝 null 字符时返回正确的异常消息。

  • 修复了一个 SPARQL explain 错误,该错误会影响包含 PipelinedHashIndexJoin 运算符的计划。

  • 修复了在提交返回常量值的查询时引发内部错误的错误。

  • 修复了死锁探测器逻辑偶尔会导致引擎无响应的问题。

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

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

  • 支持的 Gremlin 最早版本:3.6.2

  • 支持的 Gremlin 最新版本:3.6.2

  • openCypher 版本:Neptune-9.0.20190305-1.1

  • SPARQL 版本:1.1

引擎版本 1.2.1.0 的升级路径

您可以从任何高于或等于 1.1.0.0 的先前 Neptune 引擎版本手动升级到此版本。

注意

引擎版本 1.2.0.0 开始,您在 1.2.0.0 之前的引擎版本中使用的所有自定义参数组和自定义集群参数组现在都必须使用参数组系列 neptune1.2 重新创建。之前的版本使用参数组系列 neptune1,而这些参数组将不适用于 1.2.0.0 以后的版本。请参阅Amazon Neptune 参数组了解更多信息。

您不会自动升级到此主要发行版本。

升级到此版本

Amazon Neptune 1.2.1.0 现已正式发布。

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

对于 Linux、OS X 或 Unix:

aws neptune modify-db-cluster \ --db-cluster-identifier (your-neptune-cluster) \ --engine-version 1.2.1.0 \ --apply-immediately

对于 Windows:

aws neptune modify-db-cluster ^ --db-cluster-identifier (your-neptune-cluster) ^ --engine-version 1.2.1.0 ^ --apply-immediately

更新将同时应用于数据库集群中的所有实例。更新操作要求在所有这些实例上重启数据库,因此,会出现从 20-30 秒到几分钟的停机,之后您可以重新使用数据库集群。

升级前始终先测试

发布新的主要或次要 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 数据库集群。如果您有任何问题或疑问,可通过社区论坛和 Amazon Premium Support 联系 Amazon Support 团队。