Azure cosmosdb CosmosDb-仅通过Id获取数据时确定最佳分区键

Azure cosmosdb CosmosDb-仅通过Id获取数据时确定最佳分区键,azure-cosmosdb,Azure Cosmosdb,我已经涉猎了CosmosDb,现在开始获得超过10k个文档,而不仅仅是一些 我正在努力解决如何最好地进行分区 一些背景 •我将在CosmosDb中拥有10-50k个文档(在以后的阶段可能会有更多) •我在Azure Search中的索引之上有一个索引,用于这些文档属性的一小部分) •我不会在CosmosDb中执行复杂的搜索 除: •我将通过其Id从cosmosDb获取文档(当用户单击其中一个结果时,最有可能来自Azure搜索结果) o最初只需要1份文件 o可能,在将来,我可能会要求同时提供10份

我已经涉猎了CosmosDb,现在开始获得超过10k个文档,而不仅仅是一些

我正在努力解决如何最好地进行分区

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

我目前有1个分区,这感觉像是对一个好系统的浪费。 我可以根据文档编号的最后一位进行分区,这样可以在10个分区中很好地分布文档

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


我的推理是:最后一位数字将决定分区,因此只有一个分区会被访问以查找文档,这比同时搜索所有分区要好?

在分区数据存储中,跨分区传播数据并不会加快读取路径。它的帮助在于写入路径,因为您同时在多台计算机上水平分布加载。这只关系到吞吐量的多少会使单个分区的性能过载。对于Cosmos DB,这是10000 RU

快速读取的关键是指示读取中的分区键值。分区密钥基本上是存储数据的路由器。一旦到了那里,它就使用索引(在您的例子中是id)来查找数据

有一些文章提供了一些关于分区的详细信息,这些内容很有帮助

希望这有帮助