You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CosmosDB Graph是否支持像文档API那样的单请求一致性级别?

好问题!这其实是很多跨API操作Cosmos DB的开发者都会遇到的场景,我来给你详细说明:

Cosmos DB图API的请求级一致性与会话令牌复用

一、单个请求指定一致性级别(完全支持)

不管是用Gremlin.NET还是官方的Cosmos Graph SDK,都支持在单个请求级别指定一致性级别,完全可以覆盖集合的默认一致性设置,和文档API的逻辑一致。

举个Gremlin.NET的代码示例:

// 初始化GremlinClient(省略连接配置)
var gremlinClient = new GremlinClient(...);

// 创建请求选项,设置会话一致性级别
var requestOptions = new RequestOptions
{
    ConsistencyLevel = ConsistencyLevel.Session
};

// 提交带一致性设置的Gremlin查询
var queryResult = await gremlinClient.SubmitAsync<dynamic>("g.V().hasLabel('user')", requestOptions);

如果用新版的Microsoft.Azure.Cosmos SDK里的Graph相关操作,也可以通过CosmosGraphRequestOptions来设置一致性级别,核心逻辑是相通的。

二、DocumentClient会话令牌复用在Gremlin查询(可行)

完全可以!Cosmos DB的会话令牌是跨API通用的,只要是同一个账户下的操作,不管是文档API还是图API,都能复用会话令牌来维持会话一致性。

具体操作步骤:

  1. 从DocumentClient获取会话令牌:执行文档API操作后,从响应对象的SessionToken属性提取令牌:
var documentClient = new DocumentClient(new Uri(endpoint), authKey);
var docResponse = await documentClient.ReadDocumentAsync(
    UriFactory.CreateDocumentUri("myDatabase", "myCollection", "myDocumentId")
);
string sessionToken = docResponse.SessionToken;
  1. 在Gremlin查询中复用令牌:把拿到的会话令牌传入Gremlin请求的选项中,同时设置一致性级别为Session:
var gremlinRequestOpts = new RequestOptions
{
    SessionToken = sessionToken,
    ConsistencyLevel = ConsistencyLevel.Session
};
var gremlinResult = await gremlinClient.SubmitAsync<dynamic>("g.V('myVertexId')", gremlinRequestOpts);

需要注意的是,会话令牌有有效期(默认约15分钟),且只能用于同一个会话上下文的操作,过期或跨会话的令牌会失效。

内容的提问来源于stack exchange,提问作者Cristian Diaconescu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:55:06