Azure 如何在documentDb中找到分区键的有效性?

Azure 如何在documentDb中找到分区键的有效性?,azure,azure-cosmosdb,nosql,Azure,Azure Cosmosdb,Nosql,为了在documentDb中获得最佳性能,我们必须为分区键选择正确的键。假设我们确实选择了一个键作为分区键(在我们有任何数据之前,考虑一下未来)。与数据的情况一样,一旦数据在documentDb中积累,分区键可能是最优的,也可能不是最优的,尽管我们的意图是最好的 documentDb中是否有任何逻辑可以让我们清楚地看到当前分区键是否是最优的(即数据真正分布在所有分区上)?开发人员可以使用哪些策略以清晰、明确的方式查看此信息?如本篇关于分区键的文章所述: 分区键的选择是设计时必须做出的一个重要决定

为了在documentDb中获得最佳性能,我们必须为分区键选择正确的键。假设我们确实选择了一个键作为分区键(在我们有任何数据之前,考虑一下未来)。与数据的情况一样,一旦数据在documentDb中积累,分区键可能是最优的,也可能不是最优的,尽管我们的意图是最好的

documentDb中是否有任何逻辑可以让我们清楚地看到当前分区键是否是最优的(即数据真正分布在所有分区上)?开发人员可以使用哪些策略以清晰、明确的方式查看此信息?

如本篇关于分区键的文章所述:

分区键的选择是设计时必须做出的一个重要决定。您必须选择一个JSON属性名,该属性名具有广泛的值,并且可能具有均匀分布的访问模式

最好的做法是使用具有大量不同值(至少100s-1000s)的分区键

下面是一些关于如何为应用程序选择适当分区键的示例:

  • 如果您正在实现一个用户配置文件后端,那么用户ID是分区密钥的一个很好的选择

  • 如果您使用DocumentDB记录时间序列数据,那么主机名或进程ID是分区键的良好选择

有关更多详细信息,您可以参考这篇关于分区设计的文章

documentDb中是否有任何逻辑可以让我们清楚地看到当前分区键是否是最优的(即数据真正分布在所有分区中)


根据您的需求,我假设您可以为DocumentDB工作负载实施性能测试,并评估您当前的DocumentDB是否已经为高性能场景做好准备。有关更多详细信息,您可以跟随这位官员使用Azure DocumentDB进行性能和规模测试。

我认为您的查询模式同样重要。如果无法预测分区键,则必须查询每个集合,有效地处理整个分区方案。如果根据您的数据,您有一个或两个以上的逻辑密钥方案,我会感到惊讶。您能解释一下逻辑密钥方案是什么意思吗?Bruce提到的教程介绍了部分内容。另一种看待它的方式是,您将如何查询数据?如果您的查询是从API触发的,那么您是否可以从API请求中确定分区密钥以避免查询所有分区?而不是进行测试(并产生进一步的成本),我一直在寻找documentDb可以提供给我们的方法,因为它已经有了数据,而且它必须知道分区键在分区之间的有效性。具体地说,我正在寻找查询信息,比如1)每个分区是否有相同数量的记录?2) 对于给定的分区键等,所有分区的数据可变性是什么。