B-strom je dynamická indexová struktura. B-stromy B-strom je dynamická indexová struktura. Z důvodu efektivity operací INSERT a DELETE je tato struktura nejpoužívanější indexovou strukturou.
B – stromy jsou víceúrovňové indexy Struktura je založena na vyváženém stromu, tzn., že každá cesta od kořene k listu má stejnou délku. B-strom se chová dynamicky, tzn. dochází při aktualizačních operacích ke štěpení uzlů (bloků záznamů), se kterou souvisí alokace dalších uzlů a ke slévání uzlů. B – stromy jsou víceúrovňové indexy
Jednotlivé úrovně se vytvářejí následujícím způsobem: 1. Primární soubor je indexován podle dané položky (vyhledávacího klíče) a tím je vytvořen index I1. 2. Vytvořený index I1 je znovu indexován a tím je vytvořen index I2. 3. Druhý krok je možno podle potřeby opakovat.
B – stromy obsahují tři typy údajů Hodnoty vyhledávacího klíče, podle něhož je soubor indexován. Směrníky na indexy. Směrníky na výskyty záznamu, tj. odkazy do primárního souboru.
Mějme B – strom, který bude obsahovat n -1 hodnot vyhledávacího klíče a označme je: K1, K2, …., Kn-1 Dále mějme n ukazatelů, označených: P1, P2, …,Pn . Hodnoty vyhledávacího klíče jsou setříděné, tzn. je-li i < j, je taky Ki < Kj.
Struktutra listu pak následující
Postupné vznikání B – stromu Označení 0, 1, 2, … jsou odkazy na další uzel B – stromu, Označení Z0, Z1, … jsou odkazy do primárního souboru. Adresa uzlu 0
Vložení záznamu s hodnotou vyhledávacího klíče Čížek
Vložení záznamu s hodnotou vyhledávacího klíče Matějka.
Vložení záznamu s hodnotou vyhledávacího klíče Kaprál. Adresa uzlu 2: musí dojít ke štěpení uzlu a vygenerování nového kořene!!!
Vložení záznamu s hodnotou vyhledávacího klíče Neruda .
Neredundantní B-stromy Modifikací B – stromů jsou neredundantní B – stromy. Prohledávání v neredundantních B – stromech nemusí dospět až do listu. Odkaz na záznam v primárním souboru se může vyskytovat v kterémkoli uzlu.
Neredundantní B-stromy Neredundantní B-strom je sice vyvážený strom, odkaz do primárního souboru však lze najít dříve než v listu stromu. Doba vyhledání záznamu je pak stejná jako u redundantních B-stromů, pouze je-li hodnota vyhledávacího klíče rovna hodnotě uvedené v uzlu, je doba vyhledání kratší. Neredundantní B-strom je tedy vylepšením B‑stromu. Vyžaduje však přidání odkazu do primárního souboru do všech uzlů B-stromu, tedy ne jen do listu, jak je tomu u B-stromu.
Příklad neredundantního B-stromu