【问题标题】:How to find effectiveness of partition key in documentDb?如何在 documentDb 中查找分区键的有效性?
【发布时间】:2017-02-28 04:50:57
【问题描述】:

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

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

【问题讨论】:

  • 我会说您的查询模式同样重要。如果您无法预测分区键,您将不得不查询每个集合,从而有效地针对整个分区方案工作。如果根据您的数据,这会给您留下一两个以上的逻辑密钥方案,我会感到惊讶。
  • 你能解释一下你所说的逻辑键方案是什么意思吗?
  • Bruce 提到的教程中涵盖了其中的一部分。另一种看待它的方式是,您将如何查询数据?如果您的查询是从 API 触发的,您能否从 API 请求中确定分区键以避免查询所有分区?

标签: azure azure-cosmosdb nosql


【解决方案1】:

正如document 中提到的关于分区键

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

最好的做法是让分区键具有大量不同的值(至少 100 到 1000 个)。

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

  • 如果您正在实施用户配置文件后端,那么用户 ID 是分区键的不错选择。

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

更多细节,你可以参考tutorial关于分区设计。

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

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

【讨论】:

  • 我没有进行测试(并产生进一步的成本),而是在寻找 documentDb 可以为我们提供的方法,因为它已经拥有数据并且它必须知道分区键跨分区的有效性。具体来说,我正在寻找查询信息,例如 1) 每个分区是否有相同数量的记录? 2) 对于给定的分区键等,所有分区的数据可变性是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多