2017-12-19 1 views
1

は、二つのポインタがあり、一つは別の次のインデックスブロックを指している、データ・ブロックを指しています。B +ツリーが次のブロックを指すポインタを持つ必要があるのはなぜですか? B +ツリーのリーフノードで

しかし、私はB +ツリーのインデックスブロックポインタの使用状況について、非常によく分かりません。検索を実行すると、「Bより大きい」チェックのセットが続き、最終的には常にデータを含むインデックスブロックに移動します。だから、なぜ次のインデックスブロックにジャンプするためにインデックスポインタが必要なのでしょうか?高速シーケンシャルトラバーサル(定数O(1))をサポートするために

+0

時にはすべてのツリーを使用すると、ブロックすることにより、データブロックを集めるように、ラムに合うつもりはありませんので –

答えて

1

。あなたが必要とするものがランダムな読み込み要求であれば、このポインタを避けることができます。あなたは、逆の逆順の巡回が必要な場合には、前のブロックへのポインタを追加することもできます。

0

A B +ツリーは、多くの場合、データベースのインデックスの実装に使用されるデータ構造です。ツリーの各ノードには、キーの順序付きリストと、ツリー内の下位レベルノードへのポインタが含まれています。これらのポインタは、それぞれのキーの間にあると考えることができます。ツリーに要素を検索または挿入するには、ルートノードをロードし、検索された値がその間にある隣接するキーを見つけ、ツリー内の次のノードへの対応するポインタに従います。帰納は、最終的に、所望の値またはその値が存在しないという結論につながる。

は今、あなたはB +木から何かを検索する必要があるが、それらのすべてがディスクにあるこのシナリオでは、ディスクアクセスを覚えていると思う非常に遅く、単一のブロックを読むと、部分ブロックを読み込むと同じように多くの時間を要します。ラムにb +ツリーを合わせることはできません。あなたは木の一部をラムに持って行き、それを探しました。そしてあなたが探しているものを見つけることができませんでした。ディスクアクセスを下げるために次のブロックへのポインタを持っているのはいいのですか?

関連する問題