gpt4 book ai didi

azure-cosmosdb - DocumentDb 跨分区查询策略

转载 作者:行者123 更新时间:2023-12-04 06:44:03 25 4
gpt4 key购买 nike

基于这篇文章,我有一个策略的问题:

https://learn.microsoft.com/en-us/azure/cosmos-db/partition-data

A) 我应该构建我的分区键以便我的查询(理想情况下)在一个分区结束吗?例如。 PartitionKey = CustomerId

B) 文档是否仍然有效地处理跨多个(许多)分区的查询?例如。 PartitionKey = "CustomerId+ContextName+TypeName"

我们目前已经实现了“A”,但已经讨论了“B”,因为文章中引用了这句话:

It is a best practice to have a partition key with many distinct values (100s-1000s at a minimum).

强调“至少”。我们的 CustomerId 不会产生超过 2-300 个分区键。我们是否应该向它添加更多信息(“B”),知道一个查询可能会命中 30-50 个分区(即特别是“TypeId”添加)

SELECT * FROM c 
WHERE(MyPartition = "1+ContextA+TypeA"
OR MyPartition = "1+ContextA+TypeB"
OR MyPartition = "1+ContextA+TypeC"
...)
AND <some other conditions>

文章中列出的场景似乎假定客户或用户将生成大量 key 。这对我们来说不是真的。

最佳答案

Docdb Sdk 在您运行跨分区查询时进行并行调用。如果您检查网络流量,您会注意到,它首先查询物理分区键范围,然后单独调用每个分区键范围。它并行执行,并且允许控制最大并行度等。

话虽如此,但有两个方面需要考虑:

  • 数据量

如果您的卷是 1 TB,这意味着它至少需要 100 个物理分区(每个分区为 10 GB),因此它至少会进行 100 次调用。如果您的数据量增加,进行更多调用可能会开始损害性能。

  • 查询聚合

如果您正在使用聚合,目前 doc db SUM/AVG/COUNT/MIN/MAX 支持。这些不能跨分区执行。

关于azure-cosmosdb - DocumentDb 跨分区查询策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45572364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com