我有10M的记录。每条记录大约有100个字段。当我读取记录时,我想确定该记录是否与我之前读过的另一条记录重复。重复检查的标准基于20个字段并检查确切的相等性。我可以记录新记录并与20个字段中的每个字段的所有先前记录进行比较。
我正在考虑的另一种方法是将20个字段散列到单个字段中,并将散列与所有先前记录的散列进行比较。为此,我需要一个哈希函数,它将给我独特性。我知道有像SHA512,SHA224等功能。哪种哈希函数适合我的用例?
的问候,
佳日
答案 0 :(得分:0)
你所追求的是“perfect hashing”。有一种经典的方法,你可以分两步构造一个哈希函数,即通过组合两个哈希函数。这种结构有点牵扯,但你可能想要研究它。
答案 1 :(得分:0)
我之前没有在如此大规模的问题上解决过类似的问题,但我会分享我的经验,希望它会有所帮助。这是一个简单的解决方案,因为你使用java标签发布了这个,我假设你知道基础知识。 该解决方案将有3个部分: