Azure cosmosdb 宇宙数据库“;在;运算符SQL查询

Azure cosmosdb 宇宙数据库“;在;运算符SQL查询,azure-cosmosdb,Azure Cosmosdb,我需要根据批处理请求中的唯一密钥按文档(cosmos DB)进行查询 我对上述要求的态度 因为我的密钥说customerId是唯一的,所以我将customerId设为Id,分区密钥也设为/Id 由于它的批读取请求(每个请求25次调用,每秒10次批处理请求),我在SQL查询中使用“in”操作符,并通过CosmosClient.CreateDocumentQuery函数提取所有文档 例如:我的SQL查询看起来像“Select*fromc,其中c.Id位于('a1','b1')) 以下是我的提要选项:

我需要根据批处理请求中的唯一密钥按文档(cosmos DB)进行查询

我对上述要求的态度

  • 因为我的密钥说customerId是唯一的,所以我将customerId设为Id,分区密钥也设为/Id
  • 由于它的批读取请求(每个请求25次调用,每秒10次批处理请求),我在SQL查询中使用“in”操作符,并通过CosmosClient.CreateDocumentQuery函数提取所有文档 例如:我的SQL查询看起来像“Select*fromc,其中c.Id位于('a1','b1'))
  • 以下是我的提要选项:

    新的饲料选择 { MaxItemCount=-1, EnableCrossPartitionQuery=true, MaxDegreeOfParallelism=-1, MaxBufferedItemCount=-1 }

  • 基于上述场景:

  • 我是否真的很好地利用了按Id查询功能来实现更快的响应时间

  • EnableCrossPartitionQuery在当前场景中有意义吗

  • 我是不是在分道扬镳

  • 是否有更好的方法可以利用提取数据的能力是键值对方式

    1.EnableCrossPartitionQuery在当前场景中有意义吗

    是。由于您的分区键是唯一id,您需要
    enableCrospartitionQuery=true
    以确保在查询
    id
    列时查询可以扫描所有分区

    2.我是否真的很好地利用了按Id查询功能来实现 更快的响应时间?我的分区是否正确

    根据您在问题中提到的场景,我相信您已经阅读了的概述。由于您设置了
    MaxItemCount=-1
    (返回所有筛选数据而不分页),您必须按照上述链接中提到的规则平衡RUs设置:

    Azure Cosmos容器的最小吞吐量为400个请求单元 每秒(RU/s)。在数据库上设置吞吐量时, 每个容器的最小RU为每秒100个请求单位(RU/s)。 对同一分区密钥的请求不能超过 分配给分区。如果请求超过分配的吞吐量, 请求是有速率限制的。因此,选择分区键很重要 这不会导致应用程序中出现“热点”

    如果您不想提高RUS设置,您可以考虑设置<代码> MaxItMeCalt =一些页< /代码>大小,并通过<代码>继续令牌< /代码>加载所有数据。

    3.有没有更好的方法可以利用提取数据的能力 数据是键值对的时尚吗

    如果您的设备ID有一些常见的命名规则,也许您可以考虑以下2个想法:

    1.根据本文件调整DeviceID的索引策略:


    2.尝试按照以下链接创建一个合成分区键:例如,在设备ID之前添加一些后缀。

    谢谢@Jay Gong。我将详细介绍这些links@Sushma当然,有什么问题,请告诉我。