我正在尝试确定 CosmosDB 表的最佳分区键,该表同时具有客户 ID(每个客户的唯一值)和客户城市(在北美,会产生数千个可能的值)。
在阅读 Azure 文档时,我发现许多相互矛盾的信息,哪一个最好。一些文档指定更唯一的值将提供更好的跨分区的项目分布。而其他文件指出使用城市是最好的。
所以我的问题是:
每个分区键是否都经过哈希处理?每个分区是否包含具有一系列哈希值的键的项目?即,如果客户 ID 是分区键,那么一个分区的 ID 是否为 1 到 1000,另一个分区的 ID 为 1000 到 2000,等等?和城市一样,一个分区会不会有多个城市?或者,每个分区是否会以 1:1 的方式映射到特定分区键(即 ID 或城市)?
基于上述,哪一个更好(性能更高,成本更低)?拥有尽可能细粒度的分区键(id 客户 ID)?还是客户城市?
谢谢你!
理解分区工作原理的一个很好的类比是考虑查找某人的地址:
如果我给了你我家的钥匙(物品 ID),但没有其他任何东西,你将需要尝试世界上的每一扇门,直到你偶然发现正确的一扇门(也称为跨分区查询)。如果我告诉你国家(分区键),那么你可以立即消除数百万个门,但你仍然有数百万个门需要检查,所以仍然不是很有效。如果我给你城市,虽然会少一些,但仍然有很多需要检查......但如果我给你我的邮政编码,那么我们刚刚将查询从数十亿条记录优化到 15-20 条。
| 归档时间: |
|
| 查看次数: |
2766 次 |
| 最近记录: |