Azure CosmosDB - 分区键的最大大小为10 GB

时间:2017-12-30 13:55:00

标签: azure azure-cosmosdb

我使用分区键创建了一个Cosmos DB集合。由于它是一个开发环境,我已将吞吐量降低到1000.现在我收到以下错误。

消息:

  

“错误”:[“分区键达到最大大小10 GB”]

Azure Cosmos数据库容器可以创建为固定或无限制。固定大小的容器最大限制为10 GB,吞吐量为10,000 RU / s。要创建无限制容器,必须指定最小吞吐量为2,500 RU / s。

现在我已将吞吐量提高到2500.但是,我仍然遇到同样的错误。

3 个答案:

答案 0 :(得分:14)

我通过电子邮件发送了Aravind Krishna,他是Azure Cosmos数据库团队的工程师,并要求澄清这一点。这是他答案的摘要:

在Cosmos DB中,有物理和逻辑分区。在Collection中,共享相同分区键值的所有文档都将位于同一逻辑分区中。一个或多个逻辑分区占用物理分区。作为开发人员,物理分区无关紧要;我们只能控制属于逻辑分区的内容。

无论Collection是固定(10GB)还是Unlimited,10GB限制都适用于逻辑分区。期。

所以Sarva,您需要重新考虑分区密钥或实现滚动日志,以确保调试日志分区中的数据不超过10GB分区限制。

答案 1 :(得分:2)

您收到此错误的原因是因为即使unlimited collection (a.k.a. partitioned collection)没有大小限制,该集合中的分区也有10 GB。由于您已达到分区的限制,因此您收到此错误。从这link(问题6):

  

选择具有数字的分区键属性非常重要   不同的值,并允许您均匀分配您的工作量   跨越这些价值观。作为分区的自然神器,请求   涉及相同分区密钥的数据受最大吞吐量的限制   单个分区。 此外,文档的存储大小   属于同一分区键的限制为10GB。理想   分区键是经常作为过滤器出现的分区键   查询并具有足够的基数来确保您的解决方案   可扩展性。

我能想到的唯一解决方案是重新创建集合并选择一个您知道不会超过此10 GB限制的分区键。您还需要将数据从旧系统传输到新系列。

您可能会发现此帖子对于为您的收藏选择分区键非常有用:https://docs.microsoft.com/en-us/azure/cosmos-db/partition-data#design-for-partitioning

此外,根据此blog post,无限制集合的最小RU / s现在为1000而不是2500.

答案 2 :(得分:1)

CosmosDB中的数据存储在使用您选择的分区键进行分区的集合中。 每个单独的分区限制为10GB的数据。

无限制的集合不受分区数量的限制,但是固定的集合将您限制为一个分区。是唯一的区别。这就是为什么固定集合不需要分区键集(因为所有内容都归于单个分区)的原因,并且固定集合和分区的限制大小相同,为10GB。

这些分区实际上是如何存储在CosmosDB服务器上的,是您无法控制的基础结构,并且会自动对其进行复制和性能管理。您可以在集合中存储任意数量的数据,只要可以在足够的分区之间进行拆分即可。最好有更多的分区而不是更少的分区,甚至选择ID字段(在每个分区中放入一条记录)也可以正常工作。 CosmosDB可以自动将分区组合在一起以填充服务器,但是它不能将分区分开,因此请在设计时注意这一点。