提问人:Slater Victoroff 提问时间:6/27/2013 更新时间:3/2/2014 访问量:198
确保哈希函数与切片很好地混合在一起
Ensuring a hash function is well-mixed with slicing
问:
如果这个问题很愚蠢,请原谅我,但我开始学习一致的哈希,在阅读了 Tom White 的博客文章后,我意识到大多数默认哈希函数没有很好地混合,我有一个想法,确保任意哈希函数的混合程度最低。
我的想法最好用这样的例子来解释:
Bucket 1: 11000110
Bucket 2: 11001110
Bucket 3: 11010110
Bucket 4: 11011110
在跨这些存储桶进行一致缓存的标准哈希环实现下,您将获得糟糕的性能,并且几乎每个条目都会归入存储桶 1。但是,如果我们在每种情况下都使用位 4 和 5 作为 MSB,那么这些存储桶会突然很好地混合在一起,并且将新对象分配给缓存变得微不足道,只需要检查 2 位。
在我看来,当跨多个节点构建分布式网络时,这个概念可以很容易地扩展。在我的特定情况下,我将使用它来确定将给定数据放入哪个缓存。提高放置速度并不是一个真正的问题,但确保我的缓存混合良好是,我正在考虑只选择几个为我给定的缓存最佳混合的位。以后编入索引的任何信息都将基于相同的位进行编入索引。
在我幼稚的头脑中,这是一个比引入虚拟节点或构建更好的哈希函数更简单的解决方案。也就是说,我看不到任何提到这样的方法,我担心在我的哈希无知中我在这里做错了什么,我可能会引入意想不到的后果。
这种方法安全吗?我应该使用它吗?这种方法以前是否使用过,是否有任何既定的算法来确定最小的唯一位组?
答: 暂无答案
上一个:从数据库生成直方图
下一个:了解一般不变性、协方差和逆变性
评论