Azure cosmosdb Azure CosmosDB如何查询物理分区

Azure cosmosdb Azure CosmosDB如何查询物理分区,azure-cosmosdb,Azure Cosmosdb,我正在尝试执行一个需要返回数百万条记录的非常大的查询,因此我希望对查询进行分区,并使用多台机器来处理结果 我的逻辑分区键将是文档的UUID,因此这对我将不同的部分分配给每个工作节点没有多大帮助。我可以获取物理分区ID并仅在特定物理分区内执行查询吗 以下是我尝试过的: FeedOptions feedOptions = new FeedOptions(); feedOptions.setEnableCrossPartitionQuery(false); feedOptions.setPartiti

我正在尝试执行一个需要返回数百万条记录的非常大的查询,因此我希望对查询进行分区,并使用多台机器来处理结果

我的逻辑分区键将是文档的UUID,因此这对我将不同的部分分配给每个工作节点没有多大帮助。我可以获取物理分区ID并仅在特定物理分区内执行查询吗

以下是我尝试过的:

FeedOptions feedOptions = new FeedOptions();
feedOptions.setEnableCrossPartitionQuery(false);
feedOptions.setPartitionKeyRangeIdInternal("0");

client.queryDocuments(collectionPath, "SELECT * FROM e where e.docType
= 'address'", feedOptions).flatMapIterable(FeedResponse::getResults);
但是更改partitionKeyRangeId似乎根本不会改变结果


请告知。

据我所知,目前无法在特定的物理分区内执行。在中找不到任何与物理分区相关的参数。您在代码中提到的代码用于请求

根据中的声明,我们无法管理cosmos db中的物理分区:

Azure Cosmos DB将自动缩放物理 基于工作负载的分区。所以你不应该迟到 数据库设计基于物理分区的数量,而不是您 应该确保选择正确的分区键来确定 逻辑分区

然而,由于COSMOSDB是灵活、可用和开明的,如果您确实有与物理分区相关的此类要求,您可以提交以请求进一步的助手

希望对你有帮助


更新答案:

有很多方法可以提高处理大量数据的性能,我在这里给出一些个人建议

1。您可以尝试选择比<> > uuID更合适的分区键,以大大提高性能。

2.尝试使用
页面大小
限制每个查询的项数,然后通过多线程实现查询和进程并行

3.增加RUs设置以提升性能


更多想法,请参考此。

谢谢您的回答。有没有办法实现并行批处理?假设查询将返回大量文档,而对于每个文档,我都有很重的工作量来处理它们。我怎样才能并行化进程并使其更快?@zhouchong90请查看我的更新答案。如果你认为我的答案对你有用,你可以记下来。非常感谢。嗨,谢谢你的回答。然而,我不认为你解决了我的问题。为了有效地利用cosmosDB,我想使用主键作为分区键,这样就不会成为访问10G数据的问题。我想实现与节点集群的并行性。CosmosDB本身将具有高性能,但我将开发的应用程序需要时间,因为它需要调用大量第三方API来处理每个文档。