Skip to main content
  1. Tecnologie_basi_datis/

Indici b-tree

·88 words·1 min· ·
Tecnologie progettazione basi di dati - This article is part of a series.
Part 4: This Article

Gli indici B-tree sono strutture dati ad albero bilanciate in cui i singoli nodi rappresentano delle pagine dati, il bilanciamento e mantenuto dalle operazioni di inserimento e update.

Il numero di entries di un nodo e un valore $m$ nell’intervallo $d-2d$ dove $d$ e detto ordine dell’albero

Il numero di nodi figli e $m+1$ e oscilla nell’intervallo $d+1 - 2d+1$

Algoritmo di ricerca di un b-tree
#

L’algoritmo di ricerca, dato un valore della chiave percorre l’albero prendendo in considerazione il figlio $i$-esimo con tale per cui $k_{i-1}

Costo di una ricerca in un b-tree
#

In una ricerca in un b-tree il costo e dato dall’altezza dell’albero + l’accesso al data file

$$ costo = h - 1 + 1 $$

la root si presume giĆ  essere in memoria centrale

Di conseguenza e necessario poter computare l’altezza di un b-tree

Si ha che il numero massimo di nodi di un b-tree e dato quando tutti i nodi hanno $2d+1$ entry di conseguenza si ha che

$$ b_{max} = \sum_{i=0}^{h-1}{(2d+1)^i} = \frac{(2d-1)^h-1}{2d} $$

Di conseguenza il massimo numero di entry e dato da

$$ N_{max} = 2db_{max} = (2d +1)^h -1 $$

Viceversa il numero minimo di nodi si ha quando tutti escluso la root sono pieni a meta ovvero hanno $d$ entry

$$ b_{min} = 1 + 2\sum_{i=0}^{h-2}{(d+1)^i} = 1+ 2\frac{(d+1)^{h-1}-1}{d} $$

Di conseguenza il minimo numero di entry e dato da

$$ N_{min} = 1 + d(b_{min}- 1) = 2(d +1)^{h-1} -1 $$

L’altezza dell’albero e di conseguenza inclusa nel range:

$$ \lceil \log_{2d+1}{(N+1)}\rceil \leq h \leq \lfloor \log_{d+1}(\frac{N+1}{2})\rfloor +1 $$

Limitazioni di un b-tree
#

Un B-tree risulta inefficente nelle ricerche a range in quanto le entry sono contenute anche nei nodi intermedi, per risolvere questo problema si introducono i B+tree

Matteo Longhi
Author
Matteo Longhi
I’m a software engineer with a passion for Music, food, dogs, videogames and open source software, i’m currently working as a devops engineer
Tecnologie progettazione basi di dati - This article is part of a series.
Part 4: This Article