我已使用许多不同的值(为该集合定义的分区键属性)将其插入CosmosDB集合300k文档中。当我尝试从ChangeFeed中读取(同时使用Azure函数和ChangeFeedProcessor示例)时,我总是得到一个单线程,同时将PartitionKeyRange值为0的事件合计。
我不明白为什么即使从集合的已定义分区键中有很多不同的值,也只能从单一的PartitionKeyRange中获得更改。
有什么建议吗?
更新:我已经运行了samples中的Cosmos DB中的PartitionStats项目,您可以在下面的输出中看到。似乎我所有的“逻辑分区”都只有一个“ PartitionKeyRange”。
答案 0 :(得分:1)
PartitionKeyRanges不等同于分区键。这种命名有点混乱,我们正在努力在下一版SDK中进行更改。将分区键视为可以控制的逻辑数据分组,分区键是后端控制的分组的物理表示。它通常包含许多逻辑分区键。
PartitionKeyRanges的数量不能由您(最终用户)控制,而是由后端为您管理。它由保留的吞吐量,已使用的存储量和利用率模式的组合确定。建议不要围绕可以随时更改的更多PartitionKeyRanges进行设计,而应着重于尽快处理提要。例如,您可能需要将任何占用大量CPU的工作推送到一个队列中,在该队列中可以进一步并行化工作而不会延迟流的处理。