【问题标题】:Is the partition key required when retrieving by the document ID按文档ID检索时是否需要分区键
【发布时间】:2017-01-15 00:36:31
【问题描述】:

是否可以在不指定分区键的情况下通过 ID 检索文档?

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

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

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

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

【问题讨论】:

    标签: partitioning azure-cosmosdb


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢阿拉文德。我可能需要重新考虑我的身份识别策略。出于好奇,基于文档 ID 的跨分区查询是否被认为是昂贵的(就 RU 而言)操作?
    • 如果您想讨论更多信息,请随时发送电子邮件至 askdocdb@microsoft.com。是的,按 Id 进行跨分区查询相对昂贵。
    • @AravindKrishnaR.:分区键的编码作为 ID 的一部分是推荐的模式吗?如果您有时间,请在这里link 分享您对此的想法作为答案。干杯
    • 如果我不知道分区键值并且只有文档ID怎么办?在那种情况下我还能使用 ReadDocumentAsync 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-02
    • 1970-01-01
    相关资源
    最近更新 更多