阅读模型分区关键策略
Read Model Partition Key Strategy
我有一组文档,如下所示:
每个 VIN/SiteID 一个文档,我们的访问模式显示所有文档
在特定站点。我看到了两个可供选择的潜在分区键:
- SiteID - 我们只有 75 个站点,因此基数不是很高。另外,文档不是很大,所以 10GB 的限制可能没问题。
- SiteID/VIN:数据现在分布更均匀,但这意味着每个逻辑分区将只存储一项。这是反模式吗?此外,为了支持我们的访问模式,我们将需要使用跨分区查询。同样,数据集很小,所以这是一个问题吗?
根据我的描述,哪个分区键更有意义?
任何其他建议将不胜感激!
您的第一个选项很有意义,可能是一个很好的分区键,但是 "probably OK" 并不能真正培养信心。请记住,更改分区键的唯一方法是迁移到新集合。如果您可以冒这个风险,那么 SiteId(我猜您将永远拥有)是一个很好的分区键。
如果您在阅读或查询时同时拥有 VIN 和 SiteId,那么这是更安全的组合。让每个逻辑分区本身存储一项是没有问题的。当您进行跨分区查询时,这只是一个问题。如果您在查询中同时知道 VIN 和 SiteId,那么这是一个不错的计划。
您还必须记住,您的 RU 在集合内的分区之间平均分配。
我有一组文档,如下所示:
每个 VIN/SiteID 一个文档,我们的访问模式显示所有文档 在特定站点。我看到了两个可供选择的潜在分区键:
- SiteID - 我们只有 75 个站点,因此基数不是很高。另外,文档不是很大,所以 10GB 的限制可能没问题。
- SiteID/VIN:数据现在分布更均匀,但这意味着每个逻辑分区将只存储一项。这是反模式吗?此外,为了支持我们的访问模式,我们将需要使用跨分区查询。同样,数据集很小,所以这是一个问题吗?
根据我的描述,哪个分区键更有意义?
任何其他建议将不胜感激!
您的第一个选项很有意义,可能是一个很好的分区键,但是 "probably OK" 并不能真正培养信心。请记住,更改分区键的唯一方法是迁移到新集合。如果您可以冒这个风险,那么 SiteId(我猜您将永远拥有)是一个很好的分区键。
如果您在阅读或查询时同时拥有 VIN 和 SiteId,那么这是更安全的组合。让每个逻辑分区本身存储一项是没有问题的。当您进行跨分区查询时,这只是一个问题。如果您在查询中同时知道 VIN 和 SiteId,那么这是一个不错的计划。
您还必须记住,您的 RU 在集合内的分区之间平均分配。