【问题标题】:Do cross-partition queries break infinite CosmosDB horizontal scalability?跨分区查询会破坏无限的 CosmosDB 水平可伸缩性吗?
【发布时间】:2020-12-18 22:59:42
【问题描述】:

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

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

这是否意味着每个分区最终将达到其每秒可以服务的请求数限制,而水平扩展将不再带来任何好处?因为对于每个新的物理分区,CDB 都会增加需要处理所有进来的请求,所以它不会增加新的容量,只增加存储。

下游的含义是,即使在小规模下,您也可以接受增加跨分区查询的 RU 成本,但要真正能够无限期扩展,您的数据模型应该确保查询只命中一个分区(可能通过非规范化它)。

【问题讨论】:

    标签: nosql azure-cosmosdb distributed-database


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-14
      • 2019-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多