阅读模型分区关键策略

时间:2018-09-27 13:20:07

标签: nosql azure-cosmosdb partitioning database-partitioning azure-cosmosdb-sqlapi

我有一系列如下文件:

enter image description here

每个VIN / SiteID只有一个文档,并且我们的访问模式正在显示所有文档 在特定站点。我看到我们可以选择两个潜在的分区键:

  1. SiteID-我们只有75个站点,因此基数不是很高。另外,文件不是很大,因此10GB的限制可能还可以。
  2. SiteID / VIN:现在,数据分布更加均匀,但是这意味着每个逻辑分区将仅存储一项。这是反模式吗?同样,因此,为了支持我们的访问模式,我们将需要使用跨分区查询。再次,数据集很小,这是一个问题吗?

根据我的描述,哪个分区键更有意义?

任何其他建议将不胜感激!

1 个答案:

答案 0 :(得分:0)

您的第一个选择很有道理,并且可能是一个很好的分区键,但是“可能还可以”一词并不能真正激发人们的信心。请记住,更改分区键的唯一方法是迁移到新集合。如果您可以冒险,那么SiteId(我想您永远都会有)是一个很好的分区密钥。

如果在进行读取或查询时同时具有VIN和SiteId,则这是更安全的组合。每个逻辑分区本身都可以存储一项没有问题。当您执行跨分区查询时,这只是一个问题。如果您在查询中同时知道VIN和SiteId,那么这是一个不错的计划。

您还必须记住,您的RU在集合内的分区之间平均分配。