私は10Mのレコードを持っています。各レコードには約100のフィールドがあります。私がレコードを読むとき、私はそのレコードが前に読んだ別のレコードの複製であるかどうかを判断したい。重複チェックの基準は20フィールドに基づいており、正確な同等性をチェックします。私は新しい記録を取って、20の各フィールドの前のすべての記録と比較することができます。ユニークなハッシュ値を生成する方法は?
私が検討しているもう1つのアプローチは、20個のフィールドを1つのフィールドにハッシュし、そのハッシュと以前のすべてのレコードのハッシュを比較することです。このために私には一意性を与えるハッシュ関数が必要です。私は、SHA512、SHA224などの機能があることを認識しています。どのハッシュ関数が私のユースケースに適していますか?
よろしく、 "perfect hashing" と呼ばれているあなたは後にしている
ヤシュ
任意のハッシュ関数が衝突を起こす可能性があります。同様のハッシュセットまたはsmthを使用する必要があります。 – AdamSkywalker
一見すると、SHA-256などが必要です。 20のフィールドは何ですか? ints?文字列?文字列の場合は平均の長さですか? – Taylor
と同じくらい良くて強く、ハッシュ関数は一意性を保証しません。 あなたは最高の状態を取って、衝突の可能性を狭める完全な別のアプローチで別のものに組み合わせることもできますが、それは理論上でも可能です。 –