ビッグデータ重複除外ソリューション

時間が経つにつれて、ユーザーのデータは、寸法が変更される可能性があり、それはあなたが記録を表示するたびに保存されますので、データベース内のテーブルには、ストアのユーザーデータへの特別な寸法を有しているがあります。
今、私たちは、重複排除データベースのみ同等のは明らかに現実的ではありません、ユーザーがデータを分析する必要がありますが、重複データの多くを持っています。

MD5値データコンテンツを探します

    MD5値特性:
    1つの圧縮:任意の長さのデータは、MD5値の計算された長さが固定されています。
    2.容易に計算:MD5の値を容易に元のデータから計算されます。
    3.抗修正可能:のみバイト改変は、得られたMD5の値は非常に異なっていても、元のデータへの変更、。
    4.強力なアンチコリジョン:オリジナルデータとその既知のMD5値データを見つけるためには(すなわち、データの改ざん)同じMD5の値を持っていることは非常に困難です。

MD5値の特性に応じて、各レコードの寸法データの内容のMD5値を計算し、次いで、MD5値に応じて記録を繰り返し決定されます。

データストレージは、直接SQL複製データを使用して検出または削除された後、データは、マーカーを繰り返します。

この段階の効率に少なくともメモリとCPUは、一定時間内に体重を限定し、同時にメモリにできないデータの重複排除処理を大量に確認されています。ソートアルゴリズム外部および内部ソートアルゴリズムは非常に異なっているように、我々はデータの再チェックのアルゴリズム設計の多くのために、このような問題が発生が必要です。

ブルームフィルタ

ブルームフィルタは再使用して、ハッシュ法をチェックするためのツールです。これは、データの各別個のハッシュ処理をn回、各処理は、N個の整数の合計を与えるために、整数値を得ました。長い配列を使用する異なる整数を表す(それが一定に設定されている場合)、それぞれが1にn個の整数0に対応し、この位置を挿入します。次回これらの場所が記述が既に存在する場合、同じ計算を通して見ます。

キーに関係なく同時に高効率に実行することができる複数のハッシュアルゴリズムの、メモリので、非常に省スペースに格納されていないため、利点ブルームフィルタは、使いやすいです。欠点は、このコンセプトは、偽陽性率を持って、明らかに、そのようなアルゴリズムは、可能性のあるエラーですです。ハッシュの数とは、偽陽性率を減らすことができますが、正義の例がない流産ことを保証することはできません。

ビットマップ

たとえば、私たちはユニークな整数を見つけることはありません、メモリ空間2.5億は、整数の整数2.5億を収容するのに十分ではありません。

唯一の3つのデジタル状態は、一つだけ重複して存在していません。したがって、我々は唯一の2ビットは、状態の数のために保存することができる必要がある、私たちは存在しない番号00を設定したと、01があり、二回11などより多くのがあります。その後、我々はおそらく、ストレージスペースのメガバイト数十程度必要です。次のタスクは、それが01になると、対応するステータス・ビットが00である場合、この2.5億図回通過することであり、対応するステータス・ビットが01である場合、それは11になり、11 ,,対応する場合過渡的には変わりません。

最後に、我々は01ビットの統計情報を記載しますが、桁数が繰り返し取得していない、時間の複雑さはO(n)があります。

ハッシュグループ化

データの2個の50Gがある場合は、体重をチェックするために、メモリ4G、どのようにチェックするには?

アイデアは、最初の50Gデータは理論的には、この1000年のファイルサイズは、ほぼ近い行っても、ハッシュ、1000個のファイルに、ハッシュ%1000年を作ったのです。重複がある場合、重複データA及びBがファイルに対して同じである必要があり、その結果は、ハッシュと同じです。1000のファイルはハッシュ繰り返しがあるかどうかよりも、1つずつ来るようにロードされます。アイデアは、関連性に応じてすべてのデータパケットの最初の、関連するデータが同じ位置またはその近くになるということです、その後、小さなファイルを比較します。

10前にほとんどの経常見つける千万テキストメッセージはありますか?

ハッシュテーブル方式は走査しながら、ハッシュテーブルを構築するためにいくつかのグループに分け千万のために使用することができます。最初のスキャン、ハッシュテーブルに挿入された最初のバイト、バイト尾部、中間ハッシュコードとしてわずか2つのバイトを取ります。そして、アドレス情報や繰り返しの長さと数を記録し、情報を10万個、これらの情報は、さらに手放す記録します。ハッシュコードと、それは同じことを疑われている限りでは、比較します。1のみがハッシュテーブルに同一の記録に追加され、それは繰り返しの数を追加します。スキャン後、繰り返しのそれぞれの数は、第2のハッシュ・テーブル・プロセスを記録しました。線形時間の選択は、O(n)のレベルで見て10前に完了することができます。各パケットの後ハッシュを保証することができ変わり、あなたはまた、サイズの分類にハッシュ値を押すことができTOP10を確認する必要があります。

再インデックスを作成するデータベースのキーフィールド(1以上)を確立

デ重いURLアドレスによると:

使用シナリオ:アドレスに対応するURL状況データは変更されません、URLデータを一意ケースを決定することができます

:アイデア

  のRedis内のURL現在

  のURLアドレスを取得し、URLがRedisのは中が設定かどうかを決定する

    の存在を:URLアドレスが記載されています要求の後、要求がない

    欠席:URLによる命令のセットが要求されていない、Redisの中に格納されたアドレスへの要求URL

ブルームフィルタ:

  複数の値を与えるために、暗号化アルゴリズムのURLアドレスを複数用いて

  結果値が1に設定されているに対応する位置に

  、暗号化アルゴリズムとして複数の値を生成し、新しいアドレスへのURL

    位置1に対応する値は、すべてのURLが記載されている場合アドレスがクロールされている

    かどうかクロール、対応する値が位置1に設定されています

重複除外データ自体:

  特定のフィールドを選択する(フィールドは、一意のデータの可能な識別)、暗号化アルゴリズム(MD5、SHA1)フィールドはRedisの中に格納された文字列が設定生成するために、暗号化されます使用して

  、同じ方法で暗号化された新しいデータに続い

    て得られた場合記述されたデータの存在下でのRedisの文字列は、データが更新され、存在する

    データが挿入され、又は記述データが存在しません。

おすすめ

転載: www.cnblogs.com/jingsupo/p/11601271.html