Azure cosmosdb 物理分区-Azure CosmosDB

Azure cosmosdb 物理分区-Azure CosmosDB,azure-cosmosdb,Azure Cosmosdb,我们正在评估Azure Cosmos DB是否有MongoDB替代品。我们收集了500万个文档,每个文档的大小约为20KB。Mongo中集合的总大小约为50GB,由于JSON的大小,我们预计Cosmos中会多出15%。此外,文件数量提前增加了160万份。我们的吞吐量要求约为每秒10000个查询。查询可以是单个文档、一组文档。查询单个文档大约需要5个RU,查询多个文档大约需要10到20个RU 为了获得所需的吞吐量,我们需要对集合进行分区 想获得以下问题的答案吗 Cosmos DB内部使用了多少个物

我们正在评估Azure Cosmos DB是否有MongoDB替代品。我们收集了500万个文档,每个文档的大小约为20KB。Mongo中集合的总大小约为50GB,由于JSON的大小,我们预计Cosmos中会多出15%。此外,文件数量提前增加了160万份。我们的吞吐量要求约为每秒10000个查询。查询可以是单个文档、一组文档。查询单个文档大约需要5个RU,查询多个文档大约需要10到20个RU 为了获得所需的吞吐量,我们需要对集合进行分区

想获得以下问题的答案吗

  • Cosmos DB内部使用了多少个物理分区?门户度量仅显示10个分区。总是这样吗
  • 每个物理分区的最大大小是多少?门户指标将其表示为10 GB。我们如何存储超过100 GB的数据
  • 每个分区的最大RU是多少?当单个分区变得非常热而无法查询时,我们是否会受到限制
  • 这些都是我们想要克服的开始障碍,在我们能够在宇宙DB的采用上取得进一步进展之前

  • 物理分区的数量由Cosmos服务管理。一般来说,你从10开始,但如果需要更多,系统将透明地为你添加它们

  • 物理分区的最大大小不应该是应用程序关心的问题。创建分区集合时,您处理的是“逻辑分区”,而不是物理分区。Cosmos将确保属于逻辑分区(具有相同分区键)的所有文档始终放在一个物理分区上。但是,如第1部分所述,Cosmos将负责确保您有适当数量的物理分区来存储数据。换句话说,任何给定的物理分区都将是许多逻辑分区的所在地,这些分区可以根据需要进行负载平衡和移动

  • 每个物理分区的最大RU数是总RU/s除以物理分区数。因此,如果您有一个10000 RU的集合,其中包含10个物理分区,那么实际上每个物理分区限制为1000 RU。因此,为文档选择适当的逻辑分区键非常重要。如果您创建了热点,则可以将其限制在总调配RU以下

  • 我建议您花一些时间阅读有关宇宙划分和缩放的内容。这很有帮助。以下是直接从该页面复制的一些附加信息:

    • 您可以为Cosmos DB容器提供T请求/s吞吐量
    • 在幕后,Cosmos DB提供服务T请求/s所需的分区。如果T高于每个分区T的最大吞吐量,那么Cosmos DB provisions N=T/T分区
    • Cosmos DB在N个分区上均匀分配分区密钥散列的密钥空间。因此,每个分区(物理分区)承载1-N个分区键值(逻辑分区)
    • 当物理分区p达到其存储限制时,Cosmos DB将p无缝地拆分为两个新分区p1和p2,并将大约一半的密钥对应的值分配给每个分区。此拆分操作对应用程序不可见
    • 类似地,当您提供高于t*N吞吐量的吞吐量时,Cosmos DB会分割一个或多个分区以支持更高的吞吐量