Bツリーはインデックスです。Bツリーを使用すると、インデックスを使用して非常に効率的に値を見つけることができます。インデックス自体にはノードとリーフがあります。各ノードには、ツリーのコンテンツを整理するためのノードがあります。ノードポインタは他のノードを指しています。または葉。したがって、ノードはいくつかの値といくつかのポインターを保持しています。ノードポインターは、インデックスファイルを参照するオフセットです。リーフには、値とポインターも含まれます。違いは、リーフ内のポインターは、データファイルのオフセットであり、実ファイル。
したがって、実際のレコードが保存されているファイルオフセットを返すためにインデックスを使用している値を検索する場合、たとえばID = 1のレコードを検索すると、オフセット10240が取得されます。 1KBのブロックがある場合は、データファイルを開いてブロック10を読み取ります。次に、このオフセットから、ユーザー名などのオフレコのすべてのデータにアクセスできます。
別の実装は、Leafsが他のファイルを指していないが、2番目の列を保持しているBTreeを使用することです。たとえば、IDを使用してユーザー名を検索する必要がある場合は、Leafsが次の構造を持つBTreeを作成できます。はIDで、2番目はユーザー名なので、インデックスからユーザー名を取得できます。
B +ツリーを使用することもできます。B+ツリーはBツリーのように実装されますが、リストにリーフを保持しているため、>、<などの操作者にインデックスを使用できます。