Azure cosmosdb Azure CosmosDB-类似字典的对象集合的分区策略

Azure cosmosdb Azure CosmosDB-类似字典的对象集合的分区策略,azure-cosmosdb,Azure Cosmosdb,我们需要从内存缓存中移出大量数据,因为它占用了太多的空间。为此,我们正在考虑CosmosDB。数据结构和用例在底部提供。在测试过程中,我发现了一些无法解决的问题:单个项目检索花费的时间太长(大约2秒),事务似乎比它应该花费的更多,并且无法决定最佳吞吐量。 因此,我有以下问题: 如何使用提供的数据结构处理分区?如果它真的有效果呢 一周内的总体吞吐量应该很低(每秒数百个请求),但我们预计,请求会及时出现峰值(几十倍以上)。在使用率较低的情况下,我们如何配置容器以绕过节流风险而不支付过高的费用 我应该

我们需要从内存缓存中移出大量数据,因为它占用了太多的空间。为此,我们正在考虑CosmosDB。数据结构和用例在底部提供。在测试过程中,我发现了一些无法解决的问题:单个项目检索花费的时间太长(大约2秒),事务似乎比它应该花费的更多,并且无法决定最佳吞吐量。 因此,我有以下问题:

  • 如何使用提供的数据结构处理分区?如果它真的有效果呢
  • 一周内的总体吞吐量应该很低(每秒数百个请求),但我们预计,请求会及时出现峰值(几十倍以上)。在使用率较低的情况下,我们如何配置容器以绕过节流风险而不支付过高的费用
  • 我应该考虑另一种选择吗?
    [
    {
    id:“”,
    散列:“”
    数据:[{},{},…]
    },
    ...
    ]
    
    该集合有三个用例:

  • 阅读整个集合并获取id和哈希以确定哪些项发生了更改
  • 如果有更改,则更换/插入一批项目
  • 读取检索数据属性值的单个项

  • 我有一些问题。您存储了多少数据?您是否正在使用Cosmos SQL API并将id作为分区键?您正在使用id查询数据吗?谢谢。在10GB(大约3GB)下,我只使用SQLAPI查询整个容器,对于特定的项目,我使用方法GetItemAsync。我将id设置为分区键(也尝试使用带有常量值的假字段),是的,我正在按id进行查询。是否在GetItemAsync请求选项中传递分区键值?每个项目平均有多大?谢谢。更准确地说,我使用了ReadItemAsync,是的,我使用分区键作为请求选项“container.ReadItemAsync(id,new PartitionKey(id))”。项目平均应在3kb左右
    [
      {
        id: '<unique_id>',
        hash: '<custom_hash>'
        data: [{}, {},...]
      },
      ...
    ]