Professional Documents
Culture Documents
- Rdcina fie nu are succesori, fie are cel putin doi succesori.
- Nodurile interne contin doar chei si pointeri la alte noduri, iar datele asociate
fiecrei chei sunt memorate n frunze.
Fiecare nod (intern) contine o secvent de chei si adrese ale fiilor de forma
urmtoare:
unde k[1]<k[2]<...k[m] sunt chei, iar p[0],p[1],..p[m] sunt legturi ctre nodurile
fii (pseudo-pointeri, pentru c sunt adrese de octet n cadrul unui fisier disc).
In practic, un nod contine zeci sau sute de chei si adrese, iar nltimea
arborelui este foarte mic (rareori peste 3). Pentru un arbore cu un milion de
chei si maxim 100 de chei pe nod sunt necesare numai 3 operatii de citire de pe
disc pentru localizarea unei chei, dac toate nodurile contin numrul maxim de
chei): radacina are 100 de fii pe nivelul 1, iar fiecare nod de pe nivelul 1 are 100
de fii pe nivelul 2, care contin cte 100 de chei fiecare.Toate cheile din
subarborele cu adresa p[0] sunt mai mici dect k[1], toate cheile din
subarborele cu adresa p[m] sunt mai mari dect k[m], iar pentru orice 1<=i<n
cheile din subarborele cu adresa p[i] sunt mai mari sau egale cu k[i] si mai mici
dect k[i+1].
- Date si n nodurile interioare (B) sau date numai n noduri de pe ultimul nivel
(B+
).
- Pentru fisiere index asociate unor fisiere foarte mari (din baze de date), caz n
care datele asociate cheilor sunt adrese disc din fisierul mare indexat.
Cutarea unei chei date ntr-un arbore B seamn cu cutarea ntr-un arbore
binar de cutare BST, dar arborele este multici si are nodurile pe disc si nu n
memorie.
Nodul rdcin nu este neaprat primul articol din fisierul arbore B din cel
putin dou motive:
- Primul bloc (sau primele blocuri, functie de dimensiunea lor) contin informatii
despre structura fisierului (metadate): dimensiune bloc, adresa bloc rdcin,
numrul ultimului bloc folosit din fisier, dimensiune chei, numr maxim de chei
pe bloc, s.a.
Insertia unei chei ntr-un arbore B ncepe prin cutarea blocului de care
apartine noua cheie si pot apare dou situatii:
- mai este loc n blocul respectiv, cheia se adaug si nu se fac alte modificri;
- nu mai este loc n bloc, se sparge blocul n dou, mutnd jumtate din chei n
noul bloc alocat si se introduce o nou cheie n nodul printe (dac mai este
loc). Acest proces de aparitie a unor noi noduri se poate propaga n sus pn la
rdcin, cu cresterea nltimii arborelui B.
PROCEDURE B-TREE-SEARCH (x , k)
begin
i=1
do ( i <- i + 1);
else Disk-Read(ci[x])
end;
PROCEDURE B-TREE-INSERT(T, k)
begin
r = root[T]
if ( n[r] == 2t 1){
s <- Allocate-Node()
root[T] = s
leaf[s] = FALSE
n[s] = 0
c1[s] = r
B-Tree-Split-Child(s, 1, r)
B-Tree-Insert-Nonfull(s, k)
} else
B-Tree-Insert-Nonfull(r, k)
end;
n cazul tergerii unei chei dintr-o pagin cu m/2 chei, paii sunt:
Dac pagina din dreapta are mai mult dect numrul minim de chei,
atunci luam pe cea mai mic de aici.
Altfel, dac pagina din stnga are mai mult dect numrul minim de chei,
atunci luam pe cea mai mare de aici.