我们正在评估Azure Cosmos数据库以进行MongoDB替换。我们收集了大量500万份文档,每份文档大小约为20 KB。 Mongo中的集合总大小约为50 GB,由于JSON大小,我们预计Cosmos的总大小将增加15%。此外,还提前增加了160万份文件。我们的吞吐量要求大约是每秒10000次查询。查询可以是单个文档,一组文档。查询单个文档大约需要5个RU,多个文档大约需要10到20个RU。 为了获得所需的吞吐量,我们需要对集合进行分区。
想获得以下问题的答案吗?
这些是我们想要克服的起步障碍,然后才能真正进一步推进Cosmos DB的采用。
答案 0 :(得分:3)
物理分区的数量由Cosmos服务管理。通常你从10开始,但如果需要更多,系统将透明地为你添加它们。
物理分区的最大大小不应该是您的应用程序的关注点。创建分区集合时,您正在处理“逻辑分区”而不是物理分区。 Cosmos将确保所有属于逻辑分区(具有相同分区键)的文档将始终放在其中一个物理分区上。但是,如第1部分所述,Cosmos将确保您拥有适当数量的物理分区来存储数据。换句话说,任何给定的物理分区都将是许多逻辑分区的所在,这些分区可以根据需要进行负载平衡和移动。
每个物理分区的最大RU是您的总RU / s除以物理分区的数量。因此,如果您有一个包含10个物理分区的10000 RU集合,则实际上每个物理分区限制为1000 RU。因此,为文档选择适当的逻辑分区键非常重要。如果您创建热点,则可以将其限制在总配置的RU之下。
我建议您花些时间阅读有关使用Cosmos进行分区和缩放的内容。 The documentation and video available on this page非常有帮助。以下是直接从该页面复制的一些其他信息: