【问题标题】:DocumentDB partitions sizesDocumentDB 分区大小
【发布时间】:2018-03-09 22:46:51
【问题描述】:

根据文档,具有不同partitionKey 的文档可能最终位于同一分区中,但具有相同partitionKey 的文档保证最终位于同一分区中。

现在,让我们考虑一个情况,您有 partitionKeycardinality=100(例如 100 个租户)。 最初,所有数据大致均等地分布在各个分区中。

假设您最终得到的分区大小约为 50GB。我假设在这种情况下,您可能在同一个分区中包含一些分区键。然后,突然之间,您的 2 个租户呈指数增长,并且它们的大小达到 200GB。

由于分区有 250GB 的限制,现在你有问题了。

问题:

  1. 这是如何解决的?
  2. DocumentDB 分区是否处理这种迁移到单独分区的问题?
  3. 我们是否应该(甚至能够)查看每个 partitionKey(而不是 partition)的数据/存储消耗?

如果有人能对这些困境有所了解,因为我无法在文档中找到这些具体问题的答案。

【问题讨论】:

    标签: azure-cosmosdb


    【解决方案1】:

    目前 Single partition key 的逻辑分区不能超过 10GB。这意味着您必须确保在任何给定时间点您的逻辑分区不超过 10GB。

    Source MSDN

    逻辑分区是物理分区中的一个分区,它存储与单个分区键值关联的所有数据。一个逻辑分区最大为 10 GB。

    关于你的问题。

    这是如何解决的?

    选择适当的分区键并确保其平衡良好。如果您预计租户数据可能会增长到超过 10GB,那么将租户 ID 作为分区键不是一种选择。您必须拥有其他可以扩展的分区键。

    DocumentDB 分区是否处理这种迁移到单独的分区?

    是的,CosmosDB 将负责物理分区处理。

    我们是否应该(甚至能够)查看每个 partitionKey(不是分区)的数据/存储消耗?

    是的,在 Azure 门户中,转到 Azure Cosmos DB 帐户并单击“监控”部分中的“指标”,然后在右侧窗格中单击“存储”选项卡以查看您的数据如何在不同的物理分区中进行分区

    【讨论】:

    • 感谢您的链接!我以前读过它,但我不知何故错过了每个逻辑分区 10GB 的这一部分。因此,似乎最安全的方法是选择 partitionKey 具有:1)最高基数和 2)最均匀分布。对吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 2013-03-06
    • 2020-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多