【问题标题】:CosmosDb - Determining best partitionKey when only fetching data by their IdCosmosDb - 仅通过其 Id 获取数据时确定最佳 partitionKey
【发布时间】:2020-03-05 17:50:36
【问题描述】:

我一直在涉足 CosmosDb,现在开始处理超过 10k 个文档,而不仅仅是几个。

我正在纠结如何最好地进行分区。

一些背景 • 我将在 CosmosDb 中有 10-50k 文档(可能在后期阶段更多) • 我在 Azure 搜索中的索引之上有一个索引,用于这些文档属性的一小部分) • 我不会在 CosmosDb 中执行复杂的搜索 除了: • 我将通过其 Id 从 cosmosDb 获取文档(最有可能来自 Azure 搜索结果,当用户单击其中一个结果时) o 最初只需要一份文件 o 将来,我可能会要求例如同时有 10 个文档,全部按 ID。

我目前有 1 个分区,感觉浪费了一个好的系统。 我可以在例如分区文档编号的最后一位数字,这将使文档很好地分布在 10 个分区中。

我的具体问题: 如果我在 10 个分区中平均分布数据(几乎是随机的,说实话),这是否会加快按 Id 获取文档的速度(假设同时调用许多系统,每个按 Id 获取 1 个文档)。

我的推理:最后一位决定分区,所以只访问1个分区来查找文档,这比同时搜索所有分区要好?

【问题讨论】:

    标签: azure-cosmosdb


    【解决方案1】:

    跨分区传播数据不会使分区数据存储中的读取路径更快。它有帮助的地方在于写入路径,因为您同时将负载水平分散到多台计算机上。这仅在吞吐量超过单个分区可以实现的程度时才重要。对于 Cosmos DB,这是 10,000 RU。

    快速读取的关键是在你的读取中指明分区键值。分区键基本上是存储数据的路由器。一旦到达那里,它就会使用索引(或在您的情况下为 id)来查找数据。

    有些文章提供了一些有用的分区细节。

    Partitioning in Azure Cosmos DB

    How to model and partition data on Azure Cosmos DB using a real-world example

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2022-09-23
      • 2023-02-10
      • 1970-01-01
      • 1970-01-01
      • 2022-06-15
      • 1970-01-01
      • 2021-10-01
      • 1970-01-01
      • 2020-04-04
      相关资源
      最近更新 更多