跨分区查询会破坏无限的 CosmosDB 水平可扩展性吗?

Do cross-partition queries break infinite CosmosDB horizontal scalability?

据我了解,当您执行不按一个主键过滤的查询时,您执行的是跨分区查询。要执行此操作,查询将发送到 CDB 集合的所有物理分区,在每个物理分区中并行执行,然后返回。

当您扩展到每秒数万个请求时,这意味着数万个请求中的每一个都在每个物理分区上执行。

这是否意味着最终每个分区都会达到其每秒可服务的请求数限制,并且水平扩展将不再提供任何好处?因为对于每个新的物理分区CDB 补充说,它将需要为所有传入的请求提供服务,因此它不会增加新的整体容量,只会增加存储空间。

下游的含义是,即使规模较小,您也可以接受跨分区查询增加的 RU 成本,要真正能够无限扩展,您的数据模型应确保查询仅命中一个分区 (可能通过对其进行反规范化)。

是的,跨分区查询不允许像 Cosmos DB(或任何水平可扩展的数据库)这样的数据库进行扩展。

像 Cosmos DB 这样的数据库可以提供无限的规模,因为它可以水平扩展。 objective 您的分区策略应该是用一个或至少一组有界分区来回答您的大量查询。围绕分区策略的努力是选择几乎总是在查询中传递的 属性。非规范化通常更多地是围绕请求对数据建模的功能。直接跟分区关系不大

如果您想了解有关使用 Cosmos DB 进行分区和建模的更多信息,我强烈建议您观看此视频。它很好地呈现了主题,Data modeling & partitioning: What every relational database dev needs to know