爬虫類データ重複除外:
- ページの変更かどうかを判断するために指紋を生成するためにMD5を使用します
- データ保存のMongoDB、キーワードの複合インデックス(以下ください)
- キーワードハッシュマップデータ指紋収集Redisのかどうかに、および要求オブジェクトかどうかを決定するためにチームに介してフィルタリングするかどうかを決定するためにフィンガープリントを生成するために、要求フィルター(百万レベル)の目的
- ブルームフィルタ、大規模なデータ重複排除(億のレベル)
ブルームフィルタ:
実装:
- 最初の予想エラー率Pを、n個のサンプルの所望の数が、長さのビットmの必要数を算出します
M = -n * LNP /(LN2)** 2
- ハッシュ関数の数kの再計算
K = LN2×m個/ N
- 再びMによれば、nは、kは、真の誤り率を計算するM、Kの上方に調整するので、真の誤り率<予想エラーレートため
P =(1-E **( - NK / M))** K
- k個のハッシュ関数のk個のハッシュ値によって得られたデータ(キー)
- グループインデックス位置に対応するビットの数を得るために、m個のモジュロ演算の得られたハッシュ値
インデックス=ハッシュコード(キー)・(M-1)
- 保存された場合、ビット配列は、インデックスに対応する位置となります
- クエリ場合は、ビットのグループ番号に対応するインデックスは、すべて1であり、すべての1が存在するか否かを判断します
原理:ハッシュマップ
- 値は、キーハッシュマップにマッピングすることができる(1)の時間計算量Oに結果を返します
- ハッシュマップのデフォルトの長さは、2つの拡張の各パワーがある16であります
ハッシュ関数のプロパティ:
- ハッシュ衝突:異なる入力が同じハッシュ関数の結果出力、限られた入力フィールド、無制限の出力フィールドすることができ
- ディスクリート:出力フィールドの各出力フィールド結果が均一に全体に分散されています