ビットマップ、トライ、データベースのインデックス、転置インデックス、外部ソート、MapReduceの

ビットマップ

整数unsigned int型、シーケンスに対して何ら行の非繰り返しの40億のための問題、そして番号を与えるには、どのように迅速にするかどうか、それらの数、4億円の数を決定するには?
スキーム1:方法ビットマップ/ビットマップ、アプリケーションメモリ512Mを用いて、一方の代表は、unsigned int型の値をビット。対応するビット位置を設定リード40億数は、1に対応するビットかどうかを確認するために照会する番号を読み取り、0手段が存在しない、1の存在を示します。

また、2ビットマップに拡張することができます。

トライ木

質問:各ファイル1G、各ファイルの各行は、ユーザーのクエリに保存されている10件のファイルがありますが、クエリは、ファイルごとに繰り返されてもよいです。あなたにクエリの頻度順にソート。

プログラム:その解決策は以下のとおりです。各単語は、トライが表示された回数をカウントし、時間の複雑さは、すべての文字の長さの合計であるO(N *ル)(ワード長を表すル安定化)、です。(トライ時間は、ツリーの高さであるシーク、その長さを挿入する時間です)

また、再文字列、統計トップK.に使用することができます

データベースのインデックス

別の参照データベースのインデックスを

転置インデックス(逆索引)

スコープ:検索エンジン、キーワードクエリ

基本的な原則とキーポイント:逆索引と呼ばれるもの?インデックスという点で、マッピングの出現を文書単語を検索するために使用される方法、。

英語では、例えば、以下は、インデックス付きのテキストになることです。

"ITはそれが何であるか" = T0
Tlの= "ITとは何か、"
T2 = "ITはAバナナIS"
私たちは以下の転置ファイルのインデックスを取得
"A":{2}
"バナナ":{2}
"を: "{0 ,. 1、2}である
ITは": "{0 ,. 1、2}
:" {0 ,. 1}何を"
"計算することである"見つけるために"それが何であるかである"と" ""何をそれは、「対応するコレクションの交差点。

外部ソート

質問:どのようにディスクにファイルをソートします

説明:最大含むファイルを、与えられたnは正の整数で繰り返されない(すなわち、より少ない含むnは正の整数を繰り返さなくてもよい)、そしてここで、各数が少ないNに等しい以上であり、n = 10 ^ 7。

出力:整数入力の全てを含むように大小規模から昇順でリストを取得します。
条件:使用可能なメモリ領域の約1メガバイトまでが、十分なディスクスペース。そして、5分、最良の結果を得るために10秒の少ない動作時間を要します。

プログラム:外部ソート

ソート外側の外部ソートマージの例は、(外部マージソート)、それは、メモリ内のソートの実行の出力(すなわち、内部データが一時ファイルを注文された)データの量がメモリの一部に配置することができる読み出しすべてのデータが処理され、その後、マージします。例えば、900ソートするデータのMB、機械が、使用可能なメモリのわずか100 MB、外側のマージソート操作を次のように

  1. データ100 MBのメモリ内の順序付けを完了するために、いくつかの従来の方法(例えば、クイックソート、ヒープソートなど)で、メモリに読み込ま。
  2. ディスクに書き込まれたデータの完全なシーケンシング。
  3. すべてのデータが異なるブロック(一時ファイル)100メガバイトの中に保存されるまで、手順1と2を繰り返します。この例では、そこにデータの900メガバイト、100メガバイトの単一の一時ファイルのサイズがあるので、9つの一時ファイルを生成します。
  4. それぞれは、最後の出力バッファとして、入力バッファメモリに10メガバイト(= 100 MB /(9 + 1ブロック))データの前に10メガバイトを一時ファイル(ラン)を読み取ります。(実際には、適切な転写小さな入力バッファ、出力バッファはより良い結果を得るために適切に増加されます。)
  5. アルゴリズムをマージ9つの道路の実装、及び出力バッファに出力します。出力バッファがいっぱいになると、ターゲット・ファイルに書き込まれ、バッファのデータは、バッファを空にします。ファイルが読み込まれていない限り9バッファエンプティ入力と、次のデータ10Mを読み取り、ファイルからバッファに関連付けられています。これは重要なステップ「外マージソートは、」メインメモリの整理が完了している- 「マージアルゴリズム」(マージアルゴリズムは)ちょうど行うため、順次、完全にせずに、それぞれのチャンクの各チャンクを(マージする)アクセスメインメモリにロードされます。

オプションII:ビットマップ

^ 7 10は、(実際には、ブール値VIS [1E7 + 5])があったかどうかを10 ^ 7ビット、レコードを必要とし

この問題は、解決するために、ビットマップ方式を使用して、次の3つのステップに分かれています。

  • 最初のステップは、すべてのビットがセットは空に初期化されるように、0に設定されています。
  • 第二のステップは、それぞれ対応するビットが1に設定され、読み出しファイルの各整数のセットによって確立されます。
  • 第3のステップと、ビットは、対応する出力1である場合、すべてのビット整数をテストします。

上記の3つのステップの後に、注文した出力ファイルになります。

MapReduceは、分散処理します

MapReduceは単に作業(データ)分解(MAP)の大部分が実行し、最終結果(低減する)に結果をマージすることを意味し、計算モデルです。この利点は、タスクは、多数のマシンによって並列に計算することができる全体の動作のための時間を減らすために、破壊することができることです。あなたは私が人気のポイントを紹介したい場合はしかし、その後、分かりやすく、MapReduceの原理はマージソートです。

例えば、前述の転置インデックスのために、

転置インデックス:地図機能解析入出力各文書(ワード文書番号)のリスト、機能の削減はすべてのための1つである(ワード文書番号)与えられた単語は、すべての文書の数、出力(ワード、リストをソート(文書番号))。すべての出力は、単純なアルゴリズムでは、文書内の単語の位置を追跡するための簡単な転置インデックスを形成するように設定します。

 

 

 

参考リンク:

1。 

2. ウィキペディア-外部ソート

3. 予備的な理解CSDN_JULY-MapReduceの技術と学習

4。 

おすすめ

転載: www.cnblogs.com/lfri/p/12422962.html