logo

B+ strom

B+ Tree je rozšířením B Tree, které umožňuje efektivní operace vkládání, mazání a vyhledávání.

Ve stromu B mohou být klíče a záznamy uloženy v interních i listových uzlech. Zatímco ve stromu B+ mohou být záznamy (data) uloženy pouze na listových uzlech, zatímco interní uzly mohou ukládat pouze hodnoty klíče.

Listové uzly stromu B+ jsou propojeny ve formě jednoduše propojených seznamů, aby byly vyhledávací dotazy efektivnější.

B+ Tree slouží k uložení velkého množství dat, která nelze uložit do hlavní paměti. Vzhledem k tomu, že velikost hlavní paměti je vždy omezena, jsou interní uzly (klíče pro přístup k záznamům) stromu B+ uloženy v hlavní paměti, zatímco listové uzly jsou uloženy v sekundární paměti.

Vnitřní uzly stromu B+ se často nazývají indexové uzly. B+ strom řádu 3 je znázorněn na následujícím obrázku.


B+ strom

Výhody B+ Tree

  1. Záznamy lze načíst stejným počtem přístupů na disk.
  2. Výška stromu zůstává vyrovnaná a menší ve srovnání se stromem B.
  3. K datům uloženým ve stromu B+ můžeme přistupovat sekvenčně i přímo.
  4. K indexování se používají klíče.
  5. Rychlejší vyhledávací dotazy, protože data jsou uložena pouze na listových uzlech.
Výhody stromu B+

Strom B VS Strom B+

SN B strom B+ strom
1 Tlačítka vyhledávání nelze opakovaně ukládat. Mohou být přítomny redundantní vyhledávací klíče.
2 Data mohou být uložena v listových uzlech i vnitřních uzlech Data mohou být uložena pouze na listových uzlech.
3 Vyhledávání některých dat je pomalejší proces, protože data lze nalézt na interních uzlech i na listových uzlech. Vyhledávání je poměrně rychlejší, protože data lze nalézt pouze na listových uzlech.
4 Mazání vnitřních uzlů je tak složité a časově náročné. Odstranění nebude nikdy složitý proces, protože prvek bude vždy odstraněn z koncových uzlů.
5 Listové uzly nelze propojit. Listové uzly jsou propojeny, aby byly operace vyhledávání efektivnější.

Vložení do B+ stromu

Krok 1: Vložte nový uzel jako listový uzel

Krok 2: Pokud list nemá požadované místo, rozdělte uzel a zkopírujte prostřední uzel do dalšího indexového uzlu.

Krok 3: Pokud uzel indexu nemá požadované místo, rozdělte uzel a zkopírujte prostřední prvek na další stránku indexu.

Příklad:

Vložte hodnotu 195 do stromu B+ řádu 5 znázorněného na následujícím obrázku.


B + strom

195 bude vložen do pravého podstromu 120 za 190. Vložte jej na požadované místo.


B + strom

Uzel obsahuje větší než maximální počet prvků, tedy 4, proto jej rozdělte a umístěte střední uzel až k nadřazenému.


B + strom

Nyní indexový uzel obsahuje 6 potomků a 5 klíčů, což porušuje vlastnosti stromu B+, proto jej musíme rozdělit, jak je znázorněno následovně.


B + strom

Smazání ve stromu B+

Krok 1: Odstraňte klíč a data z listů.

Krok 2: pokud listový uzel obsahuje méně než minimální počet prvků, sloučte uzel dolů s jeho sourozencem a odstraňte klíč mezi nimi.

Krok 3: pokud indexový uzel obsahuje méně než minimální počet prvků, slučte uzel se sourozencem a přesuňte klíč dolů mezi ně.

Příklad

Odstraňte klíč 200 ze stromu B+ znázorněného na následujícím obrázku.


B + strom

200 je přítomno v pravém podstromu 190, po 195. smažte jej.


B + strom

Sloučte dva uzly pomocí 195, 190, 154 a 129.


B + strom

Nyní je prvek 120 jediným prvkem přítomným v uzlu, který porušuje vlastnosti stromu B+. Proto jej musíme sloučit pomocí 60, 78, 108 a 120.

Nyní se výška stromu B+ sníží o 1.


B + strom