考虑一个假设的 HBase 表。
(k, m, n)
密钥必须对0 到 1000 之间的 3 元组整数进行编码。m
典型的读取是对和的范围查询n
,将 的值固定为k
。- 读取负载相对于呈指数分布
k
。换句话说,少数几个值k
负责大部分读取负载。
Alice 认为,"k-m-n"
为了利用参考的局部性,密钥应该看起来像。理想情况下,一台机器应该能够服务于整个查询。
Bob 认为,"sha1(k-m)-n"
为了避免热点,密钥应该看起来像:如果k=1
访问非常频繁,那么所有k=1
记录最好不要都在相同的几台机器上。
这两个论点对我来说都有意义。我如何确定哪个选项更具可扩展性/面向未来?有没有一种快速、实用的方法来凭经验对此进行测试?