用于比较多个任意值的存储算法

时间:2013-05-25 18:39:33

标签: algorithm memory-management comparison

我目前正在编写一个消息队列,要求我保留服务器已经看过的消息的历史记录。我为每条消息都有唯一的固定大小的ID字段,这使得它变得微不足道。但是,我担心存储每条消息的ID的长期前景,以及之后比较它们的延迟。我当前的ID长度为160位(是的,SHA1)。

我最想知道的是,是否有办法将多个ID压缩到一个字段中以节省内存,如果存在,该算法的假位置和假置为率为消息压缩的功能。理想情况下,我并不真正关心假阴性率,而是关注假阳性的很多,这使得agrep之类的比较非常好。

3 个答案:

答案 0 :(得分:1)

这个问题并没有真正包含足够的信息来提供明确的答案,但您可能需要查看bloom filters

答案 1 :(得分:1)

我建议使用MD5,它是每封邮件的128摘要。碰撞显然是无关紧要的,因为你总是可以仔细检查任何匹配字节的字节。 128位的优点是它比SHA1稍短(16字节)。

您可以将MD5存储在基数树中。这将使数据紧凑且易于搜索。

答案 2 :(得分:0)

我认为你想要一个持久哈希映射或持久集。大多数哈希映射/集实现通过比较实际对象来处理冲突。

如果所有的键哈希值都可以存储在内存中,这就可以进行摊销的常量时间查找。