我有几个关于扩展Cosmos DB的问题,我无法使用官方文档进行验证。像userid这样的分区键将每个唯一的userid放入一个逻辑分区,该分区存储在一个物理分区中。对于一个2500-5000RU/s的集合,cosmos db提供了10个物理分区,每个物理分区的吞吐量为250-500RU/s。如果我到现在为止都错了,请纠正我。另外一点:我对Cosmos DB with DocumentDB-API很感兴趣。
现在的问题是: Cosmos db的自动缩放到底是如何工作的?我猜他们以任何方式扩展物理分区,但这到底是如何工作的呢?如果一个物理分区达到其吞吐量,是否有可伸缩性?是否会将消耗大量吞吐量的逻辑分区移动到另一个具有空闲吞吐量的物理分区?如果一个物理分区达到其存储限制,会发生什么情况?Cosmos db会提供更多的物理分区吗?如果是,最大吞吐量将被拆分为当前物理分区的数量,到目前为止,这是正确的吗?
发布于 2017-08-06 01:18:23
我希望Cosmos DB团队中的某个人能提供一个权威的答案。尽管微软指出了Stackoverflow的问题,但我还没有看到官方的答案。话虽如此,这就是我试图回答的问题。
对于具有2500-5000RU/s cosmos db的集合,
提供了10个物理分区,每个物理分区的吞吐量为250-500RU/s。
最初有10个物理分区。但这在任何地方都没有文档记录。
如果一个物理分区达到其吞吐量,是否有可伸缩性?
不,只有当分区达到存储限制(看起来是10 it )时,分区才会被拆分。
是否会将消耗大量吞吐量的逻辑分区移动到另一个具有空闲吞吐量的物理分区?
不是的。
以及如果一个物理分区达到其存储限制会发生什么?Cosmos db会提供更多的物理分区吗?如果是,最大吞吐量将被拆分为当前物理分区的数量,到目前为止,这是正确的吗?
来自文档:当物理分区p达到其存储限制时,Cosmos DB将p无缝地拆分为两个新分区p1和p2,并将与大约一半的键相对应的值分配给每个分区。此拆分操作对您的应用程序是不可见的。
你没有提到每分钟的RU,这是系统的一个非常重要的方面。似乎在任何分区中都可以根据需要使用RU/m (而不是绑定到物理分区的RU/s )。这是微软博客中特别提到的一种处理热分区键的方法。更新:博客帖子不再可用;可能是因为信息不准确。这是最初的博客帖子:
发布于 2017-08-04 02:11:28
分区管理完全由Azure Cosmos DB管理,您不必编写复杂的代码或管理分区。Cosmos DB容器在存储和吞吐量方面是无限的。我建议你阅读this以获得更多信息。
发布于 2017-08-09 21:42:47
否,只有当达到分区的存储限制(似乎是10 it )时,才会拆分分区。
你能验证一个完整的分区被分成两个新的分区吗?对于测试用例,我在所有分区中分布了多个分区键值,并用唯一的分区键值填充了一个分区。与cosmos db指标相关,该值消耗了大约5.1 GB的存储空间,并且物理分区已经达到了其10 GB存储空间的限制。如果我试图添加更多具有相同分区键值的文档,我在VS中的c#控制台应用程序抛出一个ForbiddenException,上面写着“超过了‘文档’的存储配额”。“metrics视图也显示了一个完整的分区,但这个完整的分区没有任何自动拆分。有人能帮我解决问题吗?
https://stackoverflow.com/questions/45464543
复制相似问题