本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Neptune 支持服务器生成的内联边缘。 IDs未启用neptune_enable_inline_server_generated_edge_id
时,可以通过 Neptune 配置参数将其启neptune_streams
用。从引擎版本 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 的数据,则会显示错误。
通过将集群级别的参数设置为,可以启用服务器生成的内联边缘 ID 功能。neptune_enable_inline_server_generated_edge_id
1
需要重启实例。以下示例启用服务器生成的 Edge 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": []
}
}
}