HBaseの-LSMツリー(転載)

HBaseの-LSMツリー

1.B +ツリー

Bツリー、B +ツリーについて、Bは木のリファレンスを理解します: *

http://blog.csdn.net/v_july_v/article/details/6530142

利点:

Bツリーのための検索エンジンへのリアン・ビン先生の作者は、B +ツリーは(そのまま信憑性のために、独自の言葉への特別な参照、)彼の意見を与えます:

「B +ツリー容易なスイープライブラリの最大の利点のも1、Bツリーが葉から直接、順次走査順トラバーサルライブラリ内の方法、およびB +ツリーは1回のスイープずつが再び完成だろうノード必要があり、B +ツリーのサポートの範囲は、クエリを非常に便利、B-treeがサポートされていない状態。これは、B +ツリーデータベースの選択の主な理由です。」

なぜB +ツリーより適切なデータベースのインデックスファイルのインデックスとBツリー以外のオペレーティング・システムの実用化がありますか

(1)B +ツリーは、読み取りと書き込み、ディスクのコスト低下
特定情報キーワードにB +内部ツリーのノードとなしポインタ。そう内部ノードBは、比較的小さい木です。同じディスク・ブロックに格納された同一の内部ノードのキーのすべての場合は、キーワードのディスクブロック数が多くを収容することができます。使い捨ては、あなたがもっと知りたいキーワードにメモリに読み込ま。IOは、読み取りと書き込みの時間が相対的に減少することになります。

例えば、16バイトのブロックを収容するディスクにディスクを想定し、キーワード2バイト、特定キーワード情報ポインタ2バイト。9次Bツリー(8つのノードのキーの最大値)内部ノードは、2枚の高速のディスクを必要とします。そして、B +内部ノードツリーが速いだけのディスクが必要です。それはメモリ内に内部ノードに所望される場合と、Bツリー検索時間(そのディスクのディスク回転)以上のディスクブロック一度B +ツリーより。

(2)B +ツリークエリ効率より安定さ
による非リーフノードには、ファイルの終点ノードの内容ではなく、キーワードにのみ索引リーフ・ノード。だから、任意のキーワードの外観は、リーフノードへのルートからのパスに従わなければなりません。全て同じキーワードクエリ経路長、かなりのそれぞれのデータクエリ効率が得られます。

(3)Bツリーは、同時にディスクIO性能の向上のトラバーサルで非効率性に対処していません。まさにこの問題を解決するために、B +ツリーはされて入ってきました。長いB +ツリーのリーフノードトラバーサルほどツリー全体を横断を達成することができます。クエリの範囲に基づいて、データベースには、非常に頻繁であり、そしてBツリーは、この操作(または非効率)でサポートされていません。

短所:

B +ツリーの最大のパフォーマンスの問題が挿入されたとしてIOは、ランダムを大量に生成されますされ、新しいデータのリーフノードは、ゆっくりとスプリット、リーフノード、論理的に連続した不連続性は、多くの場合、物理的にも、非常に遠く離れますが、範囲をしていますクエリ、それはランダムなIOを読むことがたくさんあります。例えば、あまりにもランダム書き込みの数が多い、大スパンの挿入キー、例えば、7> 1000-> 3 - > 2000の場合...非常に遠く離れてディスクに保存されている新たに挿入されたデータは、ランダム書き込みの多くを生成します。 IO。

真剣に求める性能に影響を与える上で、低速ディスクからわかるように(近年では、ディスクの開発がスピードが停止状態で、ほぼシーク)

2.LSMツリー:

B木ストレージエンジンと同じエンジン、追加、削除、読み取り、改変、順次走査動作のための同一のサポートを格納します。そして、ランダム書き込みディスクの大容量記憶技術による問題を回避するには

原理:

それが最初にメモリに書き込まれているNの小さな木にツリーを分割するには、木が成長して、木はメモリをディスクにフラッシュします、ディスクがツリーマージ操作で定期的に行うことができ、読み取りパフォーマンスを最適化するために、ツリーに統合。

読み取りと書き込み性能:

LSMツリーは、Bツリー、読み出し性能の犠牲の一部、実質的に増加書き込み性能と比較しました。
下に示すように、LSMの木は、最も単純な二階建てLSMツリーのために、あなたのデータでは、インメモリとディスクのデータは、マージ操作:


 
281219493293115.png

3.hbaseとLSMツリー

原理:

データは、最初の必要がディスクに永続同時にデータメモリの損失を防ぐために、書き込みメモリ内のメモリに書き込まれ、HBaseのMemStore [ハント]に相当します。

データがある閾値に達した後MemStoreは、データは、HFILEを(も小さいB +ツリー)ファイルを生成ディスクにフラッシュされる必要があります。

コンパクトな操作を実行するためにマイナー(少量HFILE小さなファイルマージ)(すべてのHFILEファイル合併の領域)メジャーのHBase、削除、無効データ(データの有効期限が切れて、削除)、そしてより多くの若い木はに、この機会にツリーにマージ強化読み取り性能を。

LSMのツリーのHBaseは、パフォーマンスの最適化をお読みください。

ブルームフィルタ:ランダム確率はビットマップがあると、あなたはすぐに、小さな秩序構造をを伝えることができ、無指定されたデータがあります。バイナリ検索はできませんが、唯一のいくつかの簡単な計算はその中にデータの小さなセットかどうかを知ることができますので。効率が改善されていますが、給与はスペースのコストです。

コンパクト:パフォーマンスの問題があるので、木、その継続的なプロセスが存在しなければならいないので、古いデータクエリのほとんどがまた見つけるlog2N直接的な方法を使用することができ、木の上の木に組み込まれることになります。木が木にマージ次いで、(N / M)*クエリをlog2n。

4.補足:HBaseのアーキテクチャ図:

 
20135106-a1e5fd079a51484085065d3b29f2d331.png


著者:ネヴィン・ムーアのST
リンクします。https://www.jianshu.com/p/06f9f7f41fdb
出典:ジェーンの本が
著者によって著作権で保護されています。著者は認可商業転載してください接触、非商用の転載は、ソースを明記してください。

おすすめ

転載: www.cnblogs.com/xibuhaohao/p/11880332.html