我在Cosmos Graph中运行gremlin中的以下查询:
g.V().hasLabel('vertex_label').limit(1)
此查询在考虑从DB返回的数据大小时会出现问题,因为此查询会返回所选顶点的所有inE
和outE
。问题是如何在查询结果大小的概念中优化此查询?
答案 0 :(得分:0)
如上所述,上述查询返回一个包含所有依赖关系和连接的顶点。因此,在大量数据中(当与指定顶点有很多连接时)可能会出现问题。因此,我们可以使用properties
,properyMap
,values
和valueMap
等内容优化查询。总而言之,相关查询结束时valueMap(true)
可能很有用,并最大限度地减少了来自Cosmos的传输数据的大小。例如:
g.V().hasLabel('play').limit(1).valueMap(true)
除了顶点属性之外,布尔值还用于获取顶点的id
和label
。
此外,如果查询结构中存在任何优化概念,您可以在this link中找到更多信息。
答案 1 :(得分:0)
您是如何通过Microsoft.Azure.Graphs SDK或Gremlin服务器使用CosmosDB Graph的?
如果您使用的是Microsoft.Azure.Graphs,则最新版本(发布时为0.2.4-preview)支持将GraphSONFormat
指定为DocumentClient.CreateGremlinRequest(..)
上的参数。您可以选择GraphSONFormat.Normal
或GraphSONFormat.Compact
,如果未提供,则Compact
应为默认值。
对于CosmosDB Gremlin服务器,Compact
也是默认行为。
使用GraphSONFormat.Compact
时,顶点结果不会包含边,因此,在获取顶点时可以跳过outE
和inE
次提取。如果需要,GraphSONFormat.Normal
将返回完整的GraphSON响应。
附加说明:limit()
上的优化将包含在SDK /服务器的下一个版本中,因此我希望您在提供的遍历示例中获得额外的性能提升该版本可用。