有关 Azure Cosmos DB for Apache Gremlin 的常见问题解答

适用对象: Gremlin

Gremlin 查询

如何评估 Gremlin 查询的效率?

ExecutionProfile() 预览步骤可用于提供查询执行计划的分析。 此步骤需要添加到任何 Gremlin 查询的末尾。 例如,可以将该步骤添加到 g.V('example').out('relationship') 查询的末尾,结果为 g.V('example').out('relationship').executionProfile()

上述配置文件的输出显示了获取顶点对象、边对象所花费的时间量,以及工作数据集的大小。 这与 Azure Cosmos DB 查询的标准成本度量相关。

其他常见问题解答

在图形数据库上运行查询时如何针对每秒的 RU 数目收费?

所有图形对象、顶点和边,都显示为后端中的 JSON 文档。 由于一个 Gremlin 查询一次可以修改一个或多个图对象,因此与之关联的成本与对象(该查询处理的边)直接相关。 这是 Azure Cosmos DB 对所有其他 API 使用的同一进程。 有关详细信息,请参阅 Azure Cosmos DB 中的请求单位

RU 费用取决于遍历的工作数据集,而不是结果集。 例如,如果查询旨在获取单个顶点作为结果,但在此过程中需要遍历多个其他对象,则成本取决于计算一个结果顶点所需的全部图对象。

图形数据库可在 Azure Cosmos DB for Gremlin 中拥有的最大规模是怎样的?

Azure Cosmos DB 利用水平分区自动满足增加存储和吞吐量的需求。 工作负荷的最大吞吐量和存储容量由与给定容器关联的分区数量决定。 但是,API for Gremlin 容器有一组用于按规模确保适当性能体验的特定准则。 有关分区和最佳做法的详细信息,请参阅 Azure Cosmos DB 中的分区一文。

对于 C#/.NET 开发,我是否应使用 Microsoft.Azure.Graphs 包或 Gremlin.NET?

Azure Cosmos DB for Gremlin 使用开源驱动程序作为服务的主要连接器。 因此,建议的选项是使用 Apache 支持的驱动程序

如何使用 Gremlin 驱动程序防范注入式攻击?

大多数本机 Apache Tinkerpop Gremlin 驱动程序允许用户选择为执行查询提供参数字典。 这里提供了有关如何执行此操作的示例(分别以 Gremlin.NetGremlin Javascript 编写)。

为什么我收到“Gremlin 查询编译错误:找不到任何方法”错误?

Azure Cosmos DB for Gremlin 实现了 Gremlin 外围应用中定义的功能的子集。 有关受支持的步骤和详细信息,请参阅 Gremlin 支持一文。

最佳解决方法是使用受支持的功能重新编写所需的 Gremlin 步骤,因为 Azure Cosmos DB 支持所有基本 Gremlin 步骤。

为什么我收到“WebSocketException:当状态代码应为‘101’时,服务器返回了状态代码‘200’”错误?

正在使用不正确的终结点时,可能会引发此错误。 导致出现此错误的终结点采用以下模式:https://<account-name>.documents.azure.cn:443/

这是图形数据库的文档终结点。 要使用的正确终结点是 Gremlin 终结点,它采用以下格式:

https://YOUR_DATABASE_ACCOUNT.gremlin.cosmosdb.azure.cn:443/

为什么会收到“RequestRateIsTooLarge”错误?

此错误表示,每秒分配的请求单位不足,无法为查询提供服务。 此错误在运行某个获取所有顶点的查询时出现:

// Query example:
g.V()

此查询尝试检索图中的所有顶点。 因此,此查询的成本将至少等于以 RU 表示的顶点数。 应调整每秒 RU 数目的设置以满足此查询的需要。

为何我的 Gremlin 驱动程序连接最终被删除了?

Gremlin 连接是通过 WebSocket 连接进行的。 尽管 WebSocket 连接没有特定生存时间,但 Azure Cosmos DB for Gremlin 会在空闲连接处于非活动状态 30 分钟后将其终止。

为什么在本机 Gremlin 驱动程序中不能使用 Fluent API 调用?

Fluent API 调用尚不受 Azure Cosmos DB for Gremlin 支持。 Fluent API 调用需要一种称为字节码支持的内部格式设置功能,Azure Cosmos DB for Gremlin 目前不支持此功能。 由于同一原因,最新的 Gremlin-JavaScript 驱动程序当前也不受支持。

下一步