本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon Neptune 引擎版本 1.1.1.0 (2022-04-19)
自 2022-04-19 起,引擎版本 1.1.1.0 已正式部署。请注意,新版本在每个区域的发布需要几天的时间。
此版本的后续补丁版本
此引擎版本中的新增功能
-
Opanceu pport。
警告
此版本对使用 OpencyPher 进行 IAM 身份验证的代码进行了重大更改。在 OpencyPher 的 Neptune 预览版中,IAM 签名中的主机字符串包含协议
bolt://
,例如:"Host":"bolt://
(host URL)
:(port)
"从这个引擎版本开始,必须省略协议:
"Host":"
(host URL)
:(port)
"有关示例,请参阅使用 Bolt 协议。
-
增加了对的支持 TinkerPop
3.5.2
。此版本的更改包括对远程事务的支持和对会话的字节码支持(使用 g.tx
),以及在 Gremlin 语言中添加了该 datetime()
功能。警告
3.5.0、3.5.1 和 TinkerPop 3.5.2 中引入了几项重大更改,这些更改可能会影响您的 Gremlin 代码。例如,像这样使用由 a GraphTraversalSource 生成的遍历
将不再起作用: g.V().union(identity(), g.V())
.现在改为使用这样的匿名遍历:
g.V().union(identity(), __.V())
. 增加了对Amazon全局条件键的支持,您可以在 IAM 数据访问策略中使用这些密钥,这些策略控制对存储在 Neptune a Neptune 数据库集群中的数据的访问权限。
Ne ptune DFE 查询引擎现在可以在 OpencyPher 查询语言中正式用于生产用途,但尚未用于 Gremlin 和 SPARQL 查询。现在,您可以使用它自己的neptune_dfe_query_engine实例参数而不是实验室模式参数来启用它。
此引擎版本中的改进
向 OpenCyPher 添加了新功能,例如参数化查询支持、参数化查询的抽象语法树 (AST) 缓存、可变长度路径 (VLP) 改进以及新的运算符和子句。有关当前Amazon Neptune 符合 OpencyPher 标准的语言支持级别,请参阅。
对简单的读取和写入工作负载的 OpencyPher 进行了显著的性能改进,与版本 1.1.0.0 相比,吞吐量更高。
移除了 OpencyPher 处理可变长度路径的双向和深度限制。
-
在 DFE 引擎中完成了对 Gremlin
within
和without
谓词的支持,包括将它们与其他谓词运算符组合在一起的情况。例如:g.V().has('age', within(12, 15, 18).or(gt(30)))
-
当作用域为全局范围(即不是
order(local)
)且未使用by()
调制器时,DFE 引擎扩展了对 Gremlinorder
步骤的支持。例如,此查询现在支持 DFE:g.V().values("age").order()
在 N eptune streams 变更日志响应格式中添加了一个
isLastOp
字段,以指示记录是其事务中的最后一次操作。显著提高了审计日志记录的性能并减少了启用审计日志记录时的延迟。
在审计日志中将 Gremlin WebSocket 字节码和 HTTP 查询转换为用户可读的格式。现在可以直接从审计日志中复制查询,以便在 Neptune 笔记本和其他地方执行。请注意,对当前审计日志格式的更改构成了重大更改。
在此引擎版本中修复的缺陷
-
修复了一个罕见的 Gremlin 错误,该错误在组合使用嵌套
filter()
和count()
步骤时不会返回任何结果,例如在以下查询中:g.V("1").filter(out("knows") .filter(in("knows") .hasId("notExists")) .count())
-
修复了 Gremlin 错误,该错误在该错误中使用聚合步骤存储的顶点
to()
或与addE
步骤一起from()
遍历时会返回错误。此类查询示例:g.V("id").aggregate("v").out().addE().to(select("v").unfold()))
-
修复了使用 DFE 引擎时在极端情况下
not
步骤失败的 Gremlin 错误。例如:g.V().not(V())
修复了 Gremlin 中的
sideEffect
值不可用to()
且会from()
遍历的错误。修复了偶尔会导致快速重置触发实例故障转移的错误。
修复了批量加载器错误,该错误导致在开始下一个加载任务之前无法关闭失败的交易。
修复了内存不足可能导致系统崩溃的批量加载器错误。
添加了重试以修复批量加载器错误,该错误导致加载器等待时间不够长,IAM 证书在故障转移后才可用。
修复了未正确清除非查询端点(例如端点)的内部凭证缓存的
status
错误。修复了直播错误,以确保直播提交序列号的顺序正确排序。
修复了在启用 IAM 的集群上长时间运行的连接在十天内终止的错误。
此版本支持的查询语言版本
在将数据库集群升级到 1.1.1.0 版本之前,请确保您的项目与以下查询语言版本兼容:
支持 Gremlin 的最早版本:
3.5.2
支持 Gremlin 最新版本:
3.5.3
OpencyPher 版本:
Neptune-9.0.20190305-1.0
SPARQL 版本:
1.1
引擎版本 1.1.1.0 的升级路径
您可以手动将任何以前的 Neptune 引擎版本升级到此版本。请注意,主版本引擎 (1.1.0.0) 之前的版本将需要更长的时间才能升级到此版本。
您不会自动升级到此版本。
升级到此版本
重要
从之前的任何版本升级到此引擎版本1.1.0.0
也会触发数据库集群中所有实例的操作系统升级。 由于操作系统升级期间发生的活动写入请求将不会得到处理,因此在开始升级之前,必须暂停正在升级的集群的所有写入工作负载,包括批量数据加载。
升级开始时,Neptune 会根据您的数据库集群信息生成快照,其名称由preupgrade
后面加上自动生成的标识符组成。您无需为此快照付费,如果升级过程中出现任何问题,您可以使用它来恢复数据库集群。
引擎升级本身完成后,新的引擎版本将在旧操作系统上短暂可用,但在不到 5 分钟的时间内,集群中的所有实例将同时开始操作系统升级。此时,您的数据库集群将在大约 6 分钟内不可用。升级完成后,您可以恢复写入工作负载。
此过程会生成以下事件:
-
每个集群的事件消息:
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
如果数据库集群运行的引擎版本有此版本的升级路径,则可以立即对其进行升级。您可以使用控制台上的数据库集群操作或使用 SDK 升级任何符合条件的集群。以下 CLI 命令将立即升级符合条件的集群:
针对 Linux、OS X 或 Unix:
aws neptune modify-db-cluster \ --db-cluster-identifier
(your-neptune-cluster)
\ --engine neptune \ --engine-version 1.1.1.0 \ --allow-major-version-upgrade \ --apply-immediately
对于 Windows:
aws neptune modify-db-cluster ^ --db-cluster-identifier
(your-neptune-cluster)
^ --engine neptune ^ --engine-version 1.1.1.0 ^ --allow-major-version-upgrade ^ --apply-immediately
相反--apply-immediately
,您可以指定--no-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.
如果您遇到此错误,请等待待处理操作完成,或者立即触发维护窗口以完成之前的升级。
有关升级引擎版本的更多信息,请参阅Neptune 引擎更新。如果您有任何问题或疑问,可通过社区论坛和 AmazonPremium Support 联系 Support