在按文档ID检索时是否需要分区键

时间:2017-01-14 09:08:52

标签: partitioning azure-cosmosdb

是否可以通过其ID检索文档而无需指定分区键?

我从阅读documentation的理解是,当未指定分区键时,查询将在所有分区中扇出:

  

以下查询在分区键上没有过滤器   (DeviceId)并扇出到执行它的所有分区   反对分区的索引。请注意您必须指定   EnableCrossPartitionQuery(x-ms-documentdb-query-enablecrosspartition   在REST API中)让SDK跨分区执行查询

这对于非键属性是有意义的,但鉴于ID是专门处理的,我希望我不需要为它启用跨分区查询。

如果我确实需要启用跨分区查询,这会是一项昂贵的操作吗?

1 个答案:

答案 0 :(得分:7)

只通过ID查询将是一个跨分区操作。您应该在FeedOptions.PartitionKey中的这些查询中包含分区键,或者作为过滤器的一部分。 在DocumentDB中,ID在集合中的所有文档中都是唯一。相反,“partition key”和“id”的组合是主键,并且唯一地标识集合中的文档。

某些应用程序将分区密钥编码为ID的一部分,例如分区键是客户ID,ID = "customer_id.order_id",因此您可以从ID值中提取分区键。