Cosmos DB 中频繁更改的小数据应该使用哪个 partitionKeyPath?

Which partitionKeyPath should be used for frequently changed small data in Cosmos DB?

Cosmos DB partitionKeyPath 的文档仅指向大数据和缩放。但是频繁更改的小数据是什么。例如,使用 TTL 为几秒的容器。频繁创建和删除逻辑分区是一种开销吗?

在这种情况下我应该使用静态分区键值以获得最佳性能吗?

或者我应该使用 /id 因为如果所有内容都在一个物理分区中,这无关紧要?

TLDR:尽可能使用细化 LP 密钥。文档 id 将完成这项工作。

有几个因素会影响性能和您从逻辑分区 (LP) 选择中获得的结果。在评估您的分区策略时,您应该记住逻辑和物理分区 (PP) 大小的一些限制。

LP 限制:

  • 最大 20GB 文件

PP 限制:

  • 每个物理分区最多 10k RU
  • 最大 50GB 文档

超出 PP 限制将导致分区拆分 - 倾斜的 PP 将被替换并且数据在两个新配置的 PP 之间平均拆分。它对每个 PP 的最大 RU 有影响,因为最大吞吐量是根据 [provisioned throughput]/[number of PPs]

计算的

我绝对不建议使用静态 LP 密钥。 更小的逻辑分区 - 容器的性能更易于维护和预测。

非常具体和独特的数据消费模式可能会受益于更大的 LPs,但只有当您尝试微优化查询以获得更好的性能和大多数查询时,您才会 运行 将通过 LP 键过滤数据。此外,即使对于这种情况,也存在重大缺陷的高风险 - 热分区和分区数据倾斜 containers/DBs 且大小超过 50GB。