4

在使用 Azure Cosmos DB 并查询一个分区时,我只需在 FeedOptions 中指定分区键。但是当我必须查询 n 个分区时,我有(afaik)2 个选项:

  1. 为每个分区运行一个单独的任务并将结果合并到我的应用程序代码中
  2. 在 FeedOoptions 中设置标志“EnableCrossPartitionQuery”(连同 MaxDegreeOfParallelism)并在查询中约束我的分区。

当我必须在整个结果集(跨所有分区)上应用排序标准和分页时,我认为第一种方法将达到它的极限。

使用 .NET SQL API 跨 Cosmos DB 中的多个分区进行查询的推荐方法是什么?

4

1 回答 1

4

不建议使用第一种方法,除非您知道文档具有的每个可能的分区键值,并且准备好编写一些并行请求代码。只有当您想查询几个分区但不是全部时,它才有效。

如果您想查询所有分区,建议启用 ,EnableCrossPartitionQuery但理想情况下,您希望尽可能少地使用它。

CosmosDB 知道分区键定义是否是查询的一部分,如果提供了分区键值,则会将其结果限制在此查询的分区中。

这意味着如果您编写类似的select * from c where c.partitionKey = 'something' || c.partitionKey = 'somethingelse'内容并启用EnableCrossPartitionQuery选项,则您的查询将仅针对作为查询一部分的 2 个分区(somethingsomethingelse)执行。

于 2018-10-15T15:29:08.703 回答