当前位置: 首页 > 知识库问答 >
问题:

Azure Cosmos DB(SQLAPI)ItemRequest estOptions的一致性级别回退

秦昊穹
2023-03-14

我正在使用Microsoft.Azure.CosmosSDK(用于SQLAPI)从Azure Cosmos DB读取项目。在此SDK下,在读取项目(使用container.ReadItemAsync)时,我们可以在以下两个位置覆盖默认一致性级别(在Azure门户中的数据库级别设置):

  1. 在创建CosmosClient时,我们可以在CosmosClientOptions下指定ConistencyLevel。此属性的留档是:“摘要:这可用于削弱读取操作的数据库帐户一致性级别。如果未设置此设置,则数据库帐户一致性级别将用于所有请求。”
  2. 在触发container.ReadItemAsync请求时,我们可以在ItemRequest estOptions下指定一致性级别。属性的留档是:"摘要:获取或设置Azure Cosmos DB服务中请求所需的一致性级别。虽然这是在数据库帐户级别设置的,但Azure Cosmos DB允许开发人员覆盖每个单独请求的默认一致性级别。"

这两个属性都指示它们会覆盖在数据库帐户级别(从 Azure 门户)指定的默认一致性。

现在,如果我在数据库帐户级别(Azure门户中)将默认一致性设置为“强”,并且在创建CosmoClient(使用CosmoScientOptions)时将一致性级别覆盖为“会话”,如下所示:

var clientOption = new CosmosClientOptions
            {
                ConsistencyLevel = ConsistencyLevel.Session              
            };
var cosmosClient = new CosmosClient(connectionString, clientOption);

当我试图用容器读取一个项目时。ReadItemAsync(使用我刚刚创建的CosmosClient获取容器)并且不要在ItemRequestOptions下指定任何ConsistencyLevel,如下所示:

var itemRequestOptions = new ItemRequestOptions();
container.ReadItemAsync<string>(id, partitionKey, itemRequestOptions)

现在,执行读取操作的一致性级别是多少(强或会话)?

共有1个答案

宗政浩慨
2023-03-14

一致性将为会话。

这很容易通过检查读取的RU电荷进行检查。使用强一致性的1kb或更少数据上的ReadItemsAsync()将为2RU/s,因为使用强一致的读取是针对2个副本进行的。当使用会话或较弱的一致性时,读取在单个副本上完成,因此成本仅为1 RU/s。

 类似资料:
  • 想象一个电子商务应用程序: 假设我有三个并且我的一致性级别(CL)很弱:即 我有一个产品表,例如 这是跨三个节点同步的初始数据 > 现在,客户端A从N1读取信息,客户端B从N2读取信息 客户端1看到1台计算机可用 客户端 2 看到 1 台计算机可用 他们现在都去购买客户A先下订单。所以N1,表格如下所示: 现在客户端 2 下订单,因此在 N2 处,表将如下所示: 但实际上客户2的订单不应该被处理。

  • 有人能帮助我如何通过datastax.cassandraconnector设置一致性吗?

  • 我有一个3节点的Cassandra集群,其密钥空间的复制因子为3: (仅部署在一个数据中心) 当进行失败测试时,即关闭一个节点,我在尝试查询我的键空间时得到这些异常: 我不知道为什么会看到这个错误,因为: 我的复制因子设置为3(即我仍然有2个节点,每个节点包含所有数据) 我的一致性级别设置为QUORUM。(为什么我看到LOCAL_ONE?)

  • 我正在为我的应用程序创建一个cassandra会话对象,并为它创建一些准备好的语句。对每个准备好的语句设置不同的一致性级别。 我们之前只有statement1,cassandra读取延迟小于10ms。当我们添加statement2并从代码的一部分开始使用它时,每次cassandra调用的延迟都会增加到250ms。 这是datastax中的错误吗?有没有可能 正在将一致性级别设置为? 我错过了一些愚

  • 我对卡珊德拉的一致性有疑问。我在集群中有3个Cassandra节点(版本2.0.14.352 ),我使用< b >一致性级别仲裁读取和写入,我的< b >复制因子是3。如果我理解replication_factor " >这个对我来说卡珊德拉应该是一致的,因为2 ^ 2 与相应的表 dataProvider.setValue()内部将给定值放入NavigableMap。dataProvider.s

  • 我正在编写一个连接到Microsoft Azure CosmosDB中的Cassandra数据库的Java应用程序。根据文档页面:https://docs.microsoft.com/en-us/azure/cosmos-db/how-to-manage-consistency,cosmosdb具有设置读取操作的一致性级别的选项。然而,我无法找到在使用针对cassandra的SQL API时如何做