本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Neptune 服务器生成的内联边缘 ID
Neptune 支持服务器生成的内联边缘。 IDs未启用 neptune_streams 时,您可以通过 Neptune 配置参数 neptune_enable_inline_server_generated_edge_id 启用该功能。从引擎版本 1.4.3.0 开始,此功能可用于 Gremlin 查询,并将在 future 版本 OpenCypher 中可用于查询。
边缘 ID 是边缘的唯一标识符。插入边缘时,您可以提供边缘 ID。如果未提供 ID,则默认情况下,服务器会生成基于 UUID 的 ID 并将其分配给边缘。与用户定义的 ID 一样,基于 UUID 的服务器生成的 ID 存储在字典中。
启用 neptune_enable_inline_server_generated_edge_id 功能后,如果查询中未提供 ID,则服务器会生成一个唯一的内联 ID。内联边缘 IDs 不存储在字典中,从而提高了存储效率。服务器生成的内联 IDs 以保留前缀开头。neptune_reserved
警告
Neptune 保留服务器生成的内联'neptune_reserved'前缀。 IDs如果查询尝试插入的数据具有以预留前缀开头的用户定义的 ID,则会显示错误。
通过将集群级别的参数 neptune_enable_inline_server_generated_edge_id 设置为 1,可以启用服务器生成的内联边缘 ID 功能。该操作需要重启实例。以下示例启用服务器生成的边缘 ID 功能:
"ParameterName=neptune_enable_inline_server_generated_edge_id,ParameterValue=1,ApplyMethod=pending-reboot"
要验证该功能是否已启用,您可以在引擎状态下检查相关功能。如果 neptune_streams 已启用,则该功能会自动禁用。以下示例输出显示已启用功能的引擎状态:
"features":{"InlineServerGeneratedEdgeId":"enabled"}
服务器生成的内联边缘 ID 功能启用后,以下 Gremlin 示例会添加一个没有用户定义的 ID 的边缘:
curl - X POST--url https: //<neptune-cluster-endpoint>:8182/gremlin/ --data '{"gremlin":"g.withSideEffect(\"Neptune#disablePushdownOptimization\", true).addV().property(id, \"a\").addV().property(id, \"b\").addE(\"el\").to(V(\"a\"))"}' { "requestId": "b6b84605-53ad-4c04-baf1-7f0f31a3aeaf", "status": { "message": "", "code": 200, "attributes": { "@type": "g:Map", "@value": [] } }, "result": { "data": { "@type": "g:List", "@value": [{ "@type": "g:Edge", "@value": { "id": "neptune_reserved_231850767", "label": "el", "inVLabel": "vertex", "outVLabel": "vertex", "inV": "a", "outV": "b" } }] }, "meta": { "@type": "g:Map", "@value": [] } } }