本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
亚马逊 Neptune Engine 版本 1.4.1.0 (2024-11-21)
截至 2024 年 11 月 21 日,引擎版本 1.4.1.0 已全面部署。请注意,新版本在每个区域的发布需要几天的时间。
警告
暂时不支持查询计划缓存用于执行涉及数字参数值的参数化查询的用例,这是因为在处理查询中重复使用数值类型参数时存在错误。例如:
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% 的回归。
此引擎版本中的新功能
-
增加了对带有只读
CALL
子查询的子查询的支持,允许在定义的范围内执行操作。CALL
子查询对每个传入行执行一次,子查询中返回的变量可用于封闭查询的外部作用域。可以使用导入子WITH
句将外部作用域的变量导入到CALL
子查询中。有关更多信息,请参阅 Ne ptune 中的呼叫子查询支持。MATCH (origin:airport {code:"AUS"})-[:route]->(stopover) CALL { WITH stopover MATCH (stopover)-[r:route]->(destination) RETURN destination ORDER BY r.dist DESC LIMIT 2 } RETURN stopover, destination
-
添加了 OpenCypher 函数。我们引入了八个新函数来帮助处理字符串、集合操作和集合排序。这些包括:
textIndexOf
、collToSet
、collSubtract
collIntersection
、collSort
、collSortMaps
、collSortMulti
、和collSortNodes
。有关描述、输入参数、输出和示例,请参阅 Ne ptune OpenCypher 函数。
此引擎版本中的改进
Gremlin 改进
-
新的实验室模式参数
AccurateQRCMemoryEstimation
。Gremlin 查询结果缓存启用后,允许在数据库上缓存查询结果。默认情况下,使用近似估计值来确定缓存结果的大小。AccurateQRCMemoryEstimation
启用此实验室模式参数后,缓存结果的大小估计将使用准确的大小估计值而不是近似值。 -
修复了在默认执行引擎上执行的 Gremlin 查询中 “非” 过滤器优化的问题。当使用 not () 步骤与 outV () /inV () /OtherV () 中的任何一个步骤结合使用过滤边时,此问题会影响查询。示例查询包括:
-
g.E().hasLabel("knows").not(outV().hasId("5"))
-
g.V().has('airport','code','ROC').outE().where(not(otherV().has(id, within('1','5','7')))).count()
-
openCypher 改进
-
提高了使用大型静态列表或地图的查询的性能。使用 UNWIND 对用于插入/更新具有属性的节点的大量嵌套映射列表进行某些查询会显著提高性能。
-
引入了新的 OpenCypher 查询提示,以指示引擎为查询中使用的值假设一致的数据类型。有关新AssumeConsistentDataTypes的 OpenCypher 查询提示的详细信息,请参阅。
-
引入了一组用于处理文本和集合值的新 OpenCypher 函数。
此引擎版本中修复的缺陷
Gremlin 修复
-
修复了在
GraphTraversalSource
“g” 对象上使用任何withStrategies()/withoutStrategies()/with()
步骤时, TinkerPop OSS 代码路径中用于构建遍历查询的字节码表示形式的问题。该问题错误地将新指令附加到字节码,而不是替换相同策略的现有指令,并导致在结果缓存失效期间缓存键不匹配以清除存储的结果。
openCypher 修复
-
更正了 in CREATE/MERGE/MATCH 子
`~id`match
句的行为。当使用诸如空或非字符串类型之类的无效`~id`
值时,CREATE/MERGE 子句现在会抛出正确的异常,而子句返回的结果为零。MATCH
-
修复了用户在聚合函数(即 sum (<string>))中使用不受支持的类型的值时的 IFE。
-
修复了来自大量查询工作负载的某些低延迟突变查询因错误 OutOfMemory 而失败的问题。
SPARQL 修复
-
修复了处理包含该
'%'
字符的 SPARQL 查询时的审计日志问题。
此版本支持的查询语言版本
在将数据库集群升级到版本 1.4.1.0 之前,请确保您的项目与以下查询语言版本兼容:
支持的 Gremlin 最早版本:
3.7.1
支持的 Gremlin 最新版本:
3.7.1
openCypher 版本:
Neptune-9.0.20190305-1.0
SPARQL 版本:
1.1
引擎版本 1.4.1.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.1.0 \ --allow-major-version-upgrade \ --apply-immediately
对于 Windows:
aws neptune modify-db-cluster ^ --db-cluster-identifier
(your-neptune-cluster)
^ --engine-version 1.4.1.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 高级支持与支持团队联系