Está en la página 1de 49

Organizaci

on y Gesti

on de
Archivos
I.t.i.g. & I.t.i.s.

Indices Multinivel
con

Arboles B y B
+
.
Operaciones B

asicas
Irene Martnez Masegosa
Area de Ciencia de la Computaci on e Inteligencia Articial
Departamento de Lenguajes y Computaci on
Universidad de Almera
irene@ual.es

Indice
Contenidos Teoricos 1
1. Introduccion. Planteamiento del Problema 1
2. Indexando con

Arboles Binarios 4
2.1.

Arbol binario de b usqueda . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.

Arbol AVL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3.

Arbol binario paginado . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.

Arboles B 11
3.1. Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2. Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3. Operacion de b usqueda. Acceso directo a un registro. . . . . . . . . . . 14
3.4. Operacion de insercion . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.5. Operacion de eliminacion . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.6. Operacion de acceso secuencial . . . . . . . . . . . . . . . . . . . . . . . 28
3.7. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.

Arboles B
+
30
4.1. Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.2. Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.3. Operacion de b usqueda . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.4. Operacion de insercion . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.5. Operacion de eliminacion . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.6. Operacion de acceso secuencial . . . . . . . . . . . . . . . . . . . . . . . 42
4.7. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5. Conclusiones 43
Bibliografa 45
i
Introducci on. Planteamiento del Problema 1
1. Introduccion. Planteamiento del Problema
Un ndice sobre un chero es una estructura auxiliar dise nada para optimizar la
velocidad de acceso a registros cuando la organizacion basica de estos, dentro del chero,
no lo permite.
Un ndice puede denirse como un conjunto ordenado de entradas que incorporan
un metodo eciente para localizar todos los registros en base al valor de uno o varios
de sus campos. A este valor se le denomina clave de b usqueda. De este modo, cada
entrada del ndice puede considerarse como un par formado por un valor de clave, y
por un metodo de recuperacion del registro o registros, con ese valor de clave.
As pues, una entrada de un ndice contiene suciente informacion para recuperar
un registro en base a un predicado (el que se ha establecido como clave), y a su vez,
presenta la ventaja de que ocupa menos espacio que el registro al que se nala.
El caso mas sencillo de ndice es el de una tabla ordenada almacenada en memoria,
donde cada entrada es un par formado por el valor de clave asociado al registro, y una
funcion que identica su posicion dentro del chero. Este tipo de ndice puede asociarse
tanto a un archivo de registros desordenados, como a un archivo ordenado por la misma
clave que el ndice, obteniendose de esta manera:
un ndice denso para el archivo de registros desordenados, en una organizacion
indexada simple, o
un ndice disperso para el archivo de bloques de registros ordenados, en la orga-
nizacion secuencial indexada. Esta ultima organizacion facilita, por una parte, el
acceso ordenado en funcion de la clave (al encontrarse los registros en secuencia),
y por otra, el acceso directo a un determinado registro a traves del ndice.
Si el ndice contiene muchas entradas, el tama no del ndice puede ser tan grande
que no pueda almacenarse completamente en memoria, almacen andose entonces en
un archivo con organizacion secuencial. En este caso, la b usqueda de una entrada
sera mucho mas lenta pues habra que posicionarse repetidas veces en disco para realizar
las comparaciones.
La solucion a este problema es indexar este ndice, generandose un segundo nivel
Irene Martnez C. de la Computaci on e I.A. UAL
2 Introducci on. Planteamiento del Problema
de ndice (disperso) que se nale entradas del primero; este proceso se repite hasta que
se construya un ndice, en el ultimo nivel, cuyo tama no coincida con el de la unidad de
transferencia entre memoria y disco (bloque), obteniendose as un ndice multinivel.
Los ndices multinivel pueden ser estaticos o dinamicos. La diferencia entre ambos
es que los primeros no se modican cuando realizamos inserciones o eliminaciones de
registros de datos, y los segundos s.
En la gura 1 podemos ver la estructura general de la organizacion secuencial
indexada con unndice multinivel estatico. En la parte inferior se encuentran los bloques
de datos del area primaria, enlazados con los bloques de overow o desborde (que
contienen los nuevos registros insertados) para mantener la ordenacion global de todos
los registros.
Overow
Primarios
Figura 1: Organizacion secuencial indexada con un ndice multinivel.
El inconveniente principal de la organizacion de un archivo secuencial indexado
reside en que el rendimiento, tanto para buscar en el ndice como para buscar secuen-
cialmente a traves de los datos, se degrada seg un crece el archivo, debido fundamen-
talmente al ndice multinivel estatico asociado.
Por otro lado, la organizacion indexada simple es muy eciente si el ndice den-
so asociado puede almacenarse en memoria. En caso contrario, podemos asociarle, al
igual que en la organizacion anterior, un ndice multinivel; no obstante, debido a las
Irene Martnez C. de la Computaci on e I.A. UAL
Introducci on. Planteamiento del Problema 3
caractersticas basicas de esta organizacion (con registros desordenados), este ndice
solo puede ser dinamico ya que tiene que reestructurarse con las nuevas inserciones de
registros.
As, los problemas que se plantean en estas organizaciones indexadas son:
1. Los ndices son demasiado grandes, y no pueden almacenarse en memoria.
2. Perdida de eciencia en la organizacion secuencial indexada a medida que se
eliminan o insertan nuevos registros, y que da lugar a excesivos accesos a disco.
3. El uso de ndices multinivel estaticos conlleva la necesidad de reorganizar periodi-
camente toda la estructura para mantener su eciencia.
Concluimos entonces, que se requiere:
construir estructuras de ndices multinivel que minimicen el n umero de accesos a
disco, cuando el ndice no pueda almacenarse completo en memoria;
que dichas estructuras deben permitir realizar de forma eciente tanto el acceso
directo a un registro, como el acceso secuencial ordenado a los registros de datos.
En las siguientes secciones vamos a estudiar una serie de estructuras de tipo arbo-
rescente que intentan solucionar los problemas anteriores, y que permiten implementar
ndices multinivel dinamicos que se van adaptando y reorganizando a medida que se
insertan o eliminan nuevos registros. Se trata de:

Arboles binarios de b usqueda.

Arboles AVL.

Arboles binarios de b usqueda paginados.


Estructuras de arbol B y B
+
.
Analizaremos estas posibles soluciones (algunas ya estudiadas en otros contextos),
destacando las ventajas e inconvenientes de cada una, y profundizando especialmente
en las estructuras basadas en arboles B y B
+
.
Irene Martnez C. de la Computaci on e I.A. UAL
4 Indexando con

Arboles Binarios
2. Indexando con

Arboles Binarios
2.1.

Arbol binario de b usqueda
Un arbol binario de b usqueda es un arbol binario que tiene una clave asociada a
cada uno de sus nodos interiores, y cumple la propiedad de que el valor de la clave
almacenada en cualquiera de los nodos es mayor que cada valor de las almacenadas en
el subarbol izquierdo del nodo, y menor que cada valor de las del subarbol derecho.
Estructura
Para gestionar un arbol binario, como ndice y como zona maestra de datos, los
nodos del arbol binario almacenan los registros completos de datos junto a sus claves.
En consecuencia, la propia estructura almacena los datos y el ndice.
En la gura 2 se muestra un arbol binario de b usqueda en el que las claves primarias
de los registros de datos son nombres de provincias. Por claridad, en los nodos solo se
muestran las claves.
Gerona
Bilbao Ibiza
Barcelona Caceres Huesca Jaen
Figura 2:

Arbol binario de b usqueda.
Irene Martnez C. de la Computaci on e I.A. UAL

Arbol binario de b usqueda 5


Acceso
La b usqueda de un registro a partir de su clave se realiza como una b usqueda
binaria a traves de los N nodos del arbol. La eciencia de esta depende de la forma
del arbol, siendo optima cuando el arbol esta completamente equilibrado, en cuyo caso
habra un maximo de lg
2
N nodos entre la raz y el nodo mas externo, requiriendose
pocos descensos en el arbol, y por tanto, pocos accesos a disco. Sin embargo, en el peor
caso podramos tener hasta N nodos en el camino de b usqueda, y por tanto N accesos.
Para realizar la lectura ordenada de todos los registros de datos bastara con realizar
un recorrido en inorden del arbol binario.
Insercion
Si podemos crear el arbol a partir de un conjunto de datos ya ordenados, es facil
construir un arbol binario de b usqueda que permita un acceso y un recorrido eciente;
basta con seleccionar como nodo raz el registro central de esa ordenacion, quedandose
la mitad de los registros en el subarbol izquierdo, y el resto en el derecho.
El problema surge cuando el arbol se va creando de forma dinamica; si en este caso
el primer registro insertado se guarda en el nodo raz, es muy probable que el resto
de las inserciones den lugar a subarboles de diferente profundidad, agravandose as el
costo de recuperacion de los registros situados dentro de los subarboles mas profundos.
underlineEjemplo 1:
La situacion anterior puede verse al realizar sucesivas inserciones de registros en el
arbol binario de la gura 2. Si insertamos, en el siguiente orden, los registros con claves
Madrid, Malaga, Oviedo, el arbol resultante (gura 3) estara desequilibrado, ya
que los nuevos registros se van insertando en la misma rama.
En el arbol de la gura 3 tambien puede observarse otro de los problemas de los
arboles binarios, consecuencia de su construccion descendente: la clave del registro que
se encuentra en el nodo raz no separa bien el conjunto de claves de los registros que
almacena el arbol. Ademas, el desequilibrio provoca un mayor n umero de niveles en el
Irene Martnez C. de la Computaci on e I.A. UAL
6 Indexando con

Arboles Binarios
Gerona
Bilbao Ibiza
Barcelona Caceres Huesca Jaen
Madrid
Malaga
Oviedo
Figura 3:

Arbol binario de b usqueda desequilibrado.
arbol, y por tanto, un aumento del n umero de accesos a disco para obtener los nodos
situados en el extremo del arbol.
As pues, la estructura del arbol depende del orden en que se realicen las inserciones.
Aunque el arbol inicial reparta bien los registros entre sus ramas, sucesivas inserciones
pueden dar lugar a que el arbol resultante sea un arbol desequilibrado o desequilibrado,
es decir, que las alturas de dos subarboles de un nodo cualquiera dieran en mas de
una unidad.
2.2.

Arbol AVL
Para evitar el problema de degeneracion del arbol binario de b usqueda, vamos a
utilizar una estructura similar que permite mantener el arbol equilibrado independien-
temente del orden en que se realicen las inserciones.
Un arbol AVL es un arbol binario de b usqueda equilibrado en altura, es decir, dado
un nodo cualquiera, la altura de su subarbol izquierdo no diere en mas de una unidad
de la altura del subarbol derecho.
Irene Martnez C. de la Computaci on e I.A. UAL

Arbol AVL 7
El mantenimiento del equilibrio se consigue aplicando al arbol, si es necesario,
una operacion de rotacion despues de cada insercion en la region del subarbol que ha
quedado desequilibrado.
Estos arboles garantizan por tanto, una eciencia mnima en el acceso a un nodo
del arbol. Sin embargo, en general no son aplicables a la mayora de las organizaciones
de archivos debido a que presentan una gran cantidad de niveles, cada uno de los
cuales supone un posicionamiento en disco, lo que hace muy ineciente el acceso a la
informacion.
Ejemplo 2:
A continuacion se muestran dos arboles balanceados, construidos para la misma
secuencia de claves de entrada. El primero, en la gura 4, est a completamente equili-
brado, y el segundo, en la gura 5, es un arbol construido con los metodos de rotacion
de claves de los arboles AVL. La secuencia de claves de los registros insertados es
{B,C,G,E,F,D,A}.
D
B F
A C E G
Figura 4:

Arbol de b usqueda completamente equilibrado.
E
C F
B D G
A
Figura 5:

Arbol de b usqueda construido empleando procedimientos AVL.
Irene Martnez C. de la Computaci on e I.A. UAL
8 Indexando con

Arboles Binarios
2.3.

Arbol binario paginado
Una posible solucion que intenta reducir el n umero de accesos a disco para obtener
un registro, es almacenar, dentro de un mismo bloque o pagina, un conjunto de nodos
del arbol o incluso, si es posible, subarboles completos. Esta organizacion recibe el
nombre de arbol binario paginado.
En la gura 6 se muestra un arbol binario paginado que almacena 7 nodos por
pagina o bloque.
Figura 6:

Arbol binario paginado.
Esta estrategia se basa en la lectura anticipada de nodos que posiblemente esten
relacionados, de manera que al leer un registro ya tengamos con el, en memoria, otros
a los que sera necesario acceder posteriormente, evitandose as costosas operaciones de
posicionamiento en disco.
Los problemas que presenta esta estructura, son similares a los de los arboles bi-
narios de b usqueda, y se derivan de las sucesivas operaciones de insercion de nuevos
registros en las paginas:
Por una parte, puede llegar a obtenerse una estructura desbalanceada consecuen-
Irene Martnez C. de la Computaci on e I.A. UAL

Arbol binario paginado 9


cia de una mala eleccion de la clave inicial, ya que el arbol se construye de forma
descendente.
Por otra, debido a que tampoco existe una poltica de situaci on de claves dentro
de los bloques, puede darse el caso de que algunos bloques tengan un n umero
reducido de claves mientras que otros esten completos, lo cual no contribuye al
equilibrio del arbol ni a la optimizacion del acceso a la informacion.
Ejemplo 3:
Los problemas anteriores pueden apreciarse al insertar la siguiente secuencia de
claves de registros en un arbol paginado que almacena 3 nodos por pagina:
{C,S,D,T,A,M,P,I,B,W,N,G,U,R,K,E,H,O,L,J,Y,Q,Z,F,X,V} .
Los registros se van insertando conforme llegan. Para mantener la pagina lo mas
balanceada posible, a medida que se insertan las claves se rotan (si es necesario) dentro
de la pagina. El arbol resultante se muestra en la gura 7.
D
C S
A M U
B I P T W
G K N R V Y
E H J L O Q X Z
F
Figura 7:

Arbol binario paginado desequilibrado.
Irene Martnez C. de la Computaci on e I.A. UAL
10 Indexando con

Arboles Binarios
Aunque el arbol de la gura 7 no esta excesivamente desequilibrado, ilustra cla-
ramente los problemas inherentes a la construccion de un arbol paginado en forma
descendente:
Las claves iniciales se almacenan en la pagina raz, y en este ejemplo vemos que
las claves de esta pagina no son las mas adecuadas: las claves C y D ademas
de ser adyacentes en la secuencia, tienden hacia el principio del conjunto total de
claves, por lo que el resto de las inserciones se realizaran sobre una de las ramas
fundamentalmente.
La ocupacion de las paginas es muy desigual: mientras que algunas estan com-
pletas, otras solo almacenan una clave.
En lo que sigue estudiaremos un ndice multinivel dinamico que deja cierto espacio
en todos sus bloques para insertar nuevas entradas y que, adem as, permite tener solo
una parte del mismo en memoria, solucionando los problemas presentados por las es-
tructuras anteriores. Este ndice puede implementarse basicamente con dos estructuras
de datos llamadas arboles B y B
+
, respectivamente.
Irene Martnez C. de la Computaci on e I.A. UAL

Arboles B. Propiedades 11
3.

Arboles B
Los problemas que presentan las estructuras de arboles binarios estudiadas en la
seccion anterior estan provocados por varios motivos:
El metodo de construccion de estos arboles, que es descendente: la primera clave
se guarda en el nodo raz, y las siguientes se agruparan en los subarboles izquierdo
o derecho.
Como consecuencia, una mala eleccion de la clave del nodo raz, provoca el des-
equilibrio del arbol tras sucesivas inserciones, lo que conlleva un aumento del
costo de las operaciones de acceso.
En el caso de agrupar varios registros en un mismo nodo, al no existir una buena
poltica de situacion de las claves, es muy costoso mantener el arbol equilibrado.
En este caso, ademas, puede ocurrir que los nodos no esten ocupados con la misma
cantidad de registros, encontrandose algunos completos mientras que otros esten
casi vacos, lo que provoca un desequilibrio del arbol al incrementarse la altura
de algunos subarboles.
Un arbol B es una estructura arborescente que organiza varios nodos en un mismo
bloque de disco, y que ademas se mantiene balanceada gracias a la organizacion de
claves dentro de cada nodo y a su metodo de construccion, que es ascendente.
Los arboles B fueron dise nados por Bayer y McCreight en 1972, no obstante vamos
a seguir la denicion y nomenclatura utilizada por D. Knuth [Knu97b].
3.1. Propiedades
Denimos un arbol B de orden n como un arbol que satisface las siguientes propie-
dades:
1. Cada nodo tiene como maximo n descendientes.
2. Cada nodo, excepto la raz y las hojas, tiene como mnimo n/2 descendientes.
Irene Martnez C. de la Computaci on e I.A. UAL
12

Arboles B
3. El nodo raz tiene un mnimo de 2 descendientes (salvo que el arbol tenga un solo
nodo).
4. Todos los nodos hoja se encuentran en el mismo nivel, es decir, a la misma
distancia de la raz.
5. Un nodo no hoja con k descendientes contiene k 1 claves.
6. Un nodo hoja contiene como mnimo n/2 1 claves y un maximo de n 1.
En consecuencia, cada nodo del arbol B esta compuesto por una secuencia ordenada
de claves y un conjunto de apuntadores a nodos descendientes, siendo el n umero de
claves una unidad menor que el n umero de apuntadores.
La gura 8 muestra un ejemplo de arbol B de orden 3. En este caso cada nodo
puede almacenar un maximo de 2 claves de registros y un mnimo de 1, el n umero
maximo de descendientes es 3, excepto los nodos hoja.
G R
B H K T V
Figura 8: Ejemplo: arbol B de orden 3.
3.2. Estructura
Vamos a tratar los arboles B como estructuras de ndices. Los registros de datos se
encuentran en un archivo con organizacion apilada. Para indexarlos, en los nodos del
arbol B se almacenan la clave de b usqueda y la posicion en el archivo de cada uno de
los registros.
Gracamente, la estructura de un nodo de un arbol B de orden n sera la siguiente:
P
1
K
1
( r
1
) P
2
K
2
( r
2
) P
3
........ P
n1
K
n1
( r
n1
) P
n
Irene Martnez C. de la Computaci on e I.A. UAL
Estructura 13
En esta estructura cada P
i
es un apuntador a nodos del nivel anterior (o valores
nulos si es un nodo hoja), y cada valor K
i
es el valor de clave asociada al registro r
i
;
la posicion del registro en el archivo se encuentra en el nodo junto a la clave.
El elemento basico en la construccion de este arbol es la ordenacion que existe en
los nodos:
Las claves se encuentran ordenadas de forma tal que
K
1
< K
2
< .. < K
i
< .. < K
n1
Para cualquier valor de clave K
i
, las claves con valores menores que el de K
i
se
encuentran en el subarbol al que apunta P
i
, mientras que las de valores mayores
se encuentran en el subarbol apuntado por P
i+1
.
Consideremos de nuevo el arbol B de orden 3 de la gura 8. Por claridad, (y en
adelante en el resto de las guras) solo se incluyen las claves de los registros K
i
, y
se representan sombreados los campos correspondientes a los apuntadores P
i
. En este
ejemplo las claves de los registros son letras.
G R
B H K T V
Construccion ascendente
Los arboles B se construyen realizando la evolucion del arbol de abajo hacia arri-
ba. Esta construccion ascendente permite, dados dos nodos, seleccionar la mejor raz
posible tras analizar las claves que contienen. La clave promocionada al siguiente nivel
sera aquella que divida en dos partes iguales la secuencia de claves que quede en el
nivel anterior. La raz, por tanto, emerge desde abajo siendo ya la mas adecuada, en
lugar de seleccionarla desde arriba, evitando as los posibles problemas de desequilibrio
del arbol inherentes a la construccion descendente.
Irene Martnez C. de la Computaci on e I.A. UAL
14

Arboles B
Nodos adyacentes
Se dice que dos nodos son adyacentes si tienen el mismo padre, y son apuntados
por apuntadores adyacentes en el nodo padre. Es decir, dada una clave K
i
, los nodos
apuntados por P
i
y P
i+1
son adyacentes (1 i < n).
En el arbol de la gura 8, los nodos con las claves {B} y {H, K} son adyacentes,
mientras que los nodos con las claves {B} y {T, V } no lo son.
Clave separadora
Dados dos nodos adyacentes apuntados por P
i
y P
i+1
, respectivamente, la clave K
i
es la clave separadora de ambos nodos.
En el arbol de la gura 8, la clave G es la clave separadora de los nodos con claves
{B} y {H, K}.
G R
B H K T V
3.3. Operacion de b usqueda. Acceso directo a un registro.
Supongamos que queremos recuperar del archivo de datos un registro con clave K.
Para poder acceder a el tenemos que buscar en el ndice (arbol B) esta clave ya que
junto a ella se almacenara en el nodo la posicion del registro en el archivo.
La b usqueda comienza examinando el nodo raz, comparando los valores de claves
que este contiene con el valor de la clave K que se busca.
Si no se encuentra en el nodo, si el valor de la clave buscada esta entre el de K
i1
y el de K
i
, hay que continuar la b usqueda por el subarbol al que apunta P
i
.
Si el apuntador seleccionado fuese nulo, se estara en el nivel mas bajo del arbol,
Irene Martnez C. de la Computaci on e I.A. UAL
Operaci on de b usqueda. Acceso directo a un registro. 15
y la b usqueda terminara sin exito. En otro caso, se repite la operacion buscando en el
nuevo nodo, esto es, en la raz del subarbol apuntado por P
i
.
ALGORITMO de B

USQUEDA:
1. Examinar el nodo raz, comparando K con los valores de llaves que contiene
2. SI no se encuentra en el nodo
SI el valor de la llave esta entre K
i1
< K < K
i
Continuar la b usqueda a partir de P
i
SI P
i
es nulo
estamos en una hoja la b usqueda termina sin exito
OTRO CASO aplicar paso 1. a la raz del subarbol P
i
Ejemplo 4:
B usqueda de la clave M en el arbol de la gura 8.
En primer lugar se busca dentro del nodo raz:
p
1
G p
2
R p
3
Como la clave no se encuentra en este nodo, y es mayor que G y menor que
R, se contin ua buscando en el sub arbol al que apunta p
2
:
p
1
H p
2
K p
3
Puesto que la clave tampoco se encuentra en este nodo, al ser mayor que K, se
continuara buscando en el sub arbol al que apunta p
3
. Pero en este caso, el valor de p
3
es nulo, ya que est a en un nodo hoja, por lo que la b usqueda termina sin exito.
Irene Martnez C. de la Computaci on e I.A. UAL
16

Arboles B
Costo de una operacion de b usqueda
El costo de la operacion de b usqueda depende de la altura o n umero de niveles
del arbol B. Teniendo en cuenta las propiedades que denen estos arboles, es posible
calcular la altura maxima que podra tener un arbol B de orden n si tiene que almacenar
un determinado n umero de claves.
Puesto que vamos a calcular el costo de la b usqueda en el peor caso, esto es, cuando
el arbol tiene el maximo n umero de niveles posible, habra que considerar que los nodos
almacenan solo el mnimo n umero de claves permitido, n/21, y que tienen el n umero
mnimo de descendientes, n/2, (a excepcion del nodo raz y los nodos hoja). Sea n el
orden del arbol B y M el n umero de claves que contiene.
Para un arbol B de orden n, el n umero mnimo de descendientes a partir de la pagina
raz es dos, as que bajo nuestras hipotesis, el segundo nivel del arbol contendra solo
dos nodos. Cada uno de estos nodos tendra a su vez un mnimo de n/2 descendientes.
Por tanto, el tercer nivel contendra 2 n/2 nodos (cada uno de los cuales, con un
mnimo de n/2 descendientes). En general, puede armarse que para cualquier nivel
d de un arbol B, el mnimo n umero de descendientes que se extienden a partir de ese
nivel sera 2 n/2
d1
.
Profundidad
Num. mn. de
descendientes
1 (raz) 2
2 2 n/2
.
.
.
.
.
.
d (hojas) 2 n/2
d1
Puesto que un arbol B con M claves tiene M +1 descendientes desde su nivel hoja,
puede establecerse la siguiente relacion:
M + 1 2 n/2
d1
siendo d la altura del arbol (en el nivel hoja). Despejando d en la desigualdad anterior,
se obtiene que:
d 1 + log
n/2
(
M + 1
2
) .
Por tanto, la altura de un arbol B de orden n con M claves esta en O(log
n/2
(M)).
Irene Martnez C. de la Computaci on e I.A. UAL
Operaci on de inserci on 17
En conclusion, el costo de un operacion de b usqueda en un arbol B de orden
n con M claves almacenadas sera, en el peor caso, del orden de
O(log
n/2
(M))
.
Ejemplo 5:
Para un arbol B de orden 512 que contenga 1 millon de claves:
d 1 + log
512/2
10
6
+ 1
2
= 3.3664
lo que signica que se necesitan a lo sumo 3 accesos para recuperar una clave (y uno
mas para recuperar el registro del archivo).
En un arbol binario de b usqueda, en el mejor caso (completamente equilibra-
do), seran necesarios log
2
M accesos, es decir, aproximadamente 20 accesos al ndice.
3.4. Operacion de insercion
Supongamos que insertamos un nuevo registro de datos en el archivo cuya clave es
K; necesitaremos en el arbol B la referencia a este nuevo registro. Por tanto tendremos
que buscar el nodo adecuado donde insertar la referencia al registro, esto es, su valor
de clave y su posicion en el archivo.
Veamos ahora el metodo por el cual los arboles B mantienen un control sobre la
evolucion del arbol durante la insercion, de forma que siempre este equilibrado.
Division o separacion de nodos
Seg un las propiedades de los arboles B, cuando un nodo de un arbol B de orden
n almacene n 1 claves estara completo, y no podra guardar ninguna clave mas. Si
el proceso de insercion conduce hasta el, se producira una situacion de overow o
saturacion del nodo, que se resuelve dividiendo en dos el nodo saturado.
Irene Martnez C. de la Computaci on e I.A. UAL
18

Arboles B
La division o separacion del nodo se realiza creando un nuevo nodo adyacente al
nodo saturado y dejando la mitad de las claves en cada uno. La clave central de la
secuencia que almacenan conjuntamente sera la clave separadora de estos dos nodos, y
promocionara al nodo padre en el nivel superior.
Ejemplo 6:
Consideremos el siguiente nodo de un arbol B de orden 5, que podra almacenar
como maximo 4 valores de clave:
M R T W
Si tenemos que insertar la clave V en este nodo, se satura, y por tanto, hay que
dividir el nodo y repartir las claves. La nueva secuencia de claves sera {M,R,T,V,W}.
La clave T sera la clave separadora de ambos nodos, y promocionara al nodo
padre:
M R

T
V W
En la operacion de insercion de una nueva clave en un arbol B de orden n hay que
tener en cuenta los siguientes aspectos:
1. Las inserciones de nuevos valores de clave se realizan siempre en los nodos ho-
ja; solo se insertaran en nodos interiores las claves que promocionen tras una
operacion de division en un nodo saturado.
2. Si hay espacio en el nodo hoja se inserta la nueva clave (junto con el puntero al
registro).
3. Si no lo hay, el nodo se satura, y es necesario dividirlo, promocionando la clave
central al nodo padre.
4. Si tras la promocion de una clave, se satura el nodo padre, habra que repetir
el proceso de division-promocion. Esto puede provocar la creacion de un nuevo
nodo raz.
Irene Martnez C. de la Computaci on e I.A. UAL
Operaci on de inserci on 19
5. Si se ha creado una nueva raz para el arbol, esta guardar a inicialmente solo la
clave separadora, y los primeros apuntadores P
1
y P
2
direccionaran los dos nodos
resultantes de la division.
Un algoritmo general para la insercion de una clave en un arbol B podra ser de la
siguiente manera:
ALGORITMO de INSERCI

ON:
1. Recorrer el arbol como un ndice, comparando el valor de la nueva clave
a insertar, hasta localizar el nodo hoja apropiado donde debe insertarse de
forma que se mantenga el orden.
2. SI el nodo no esta completo, agregar la clave en la posicion adecuada en la
secuencia.
3. EN OTRO CASO (el nodo esta completo en el momento de la insercion),
REPETIR:
a) Dividir el nodo saturado, creando dos nodos adyacentes.
b) Ordenar todas las claves (incluida la nueva), y seleccionar la clave
central como clave separadora de los dos nuevos nodos.
c) Insertar la clave separadora en la posicion adecuada dentro del nodo
padre. Sea k esa posicion (1 k < n).
SI no existe nodo padre, crear una nueva raz (k = 1).
d) Guardar el resto de las claves en los dos nodos: las que son menores
que la clave separadora en el primer nodo, y el resto en el segundo.
e) Actualizar los apuntadores del nodo padre en la posicion donde se ha
insertado la clave separadora: P
k
apuntara al primer nodo, y P
k+1
al
segundo.
MIENTRAS al promocionar la clave se produzca overow.
Irene Martnez C. de la Computaci on e I.A. UAL
20

Arboles B
Construccion ascendente de un arbol B
A continuacion veremos con un ejemplo como se construye de forma ascendente un
arbol B de orden 3 realizando inserciones sucesivas de las claves {B,A,D,C,R,P,G}.
Ejemplo 7: Construccion de un arbol B.
Partiendo de un nodo hoja vaco de un arbol B de orden 3, se inserta la primera
clave B:
B
A continuacion, se inserta la clave A en el mismo nodo, reordenando las claves:
A B
La siguiente clave que ha de insertarse es la D. Esto provoca una situaci on de
overow (o saturaci on) en el nodo, ya que el maximo n umero de claves que puede
almacenar es 2. La secuencia de claves que se tiene es {A,B,D}. El nodo se divide en
dos y se crea una nueva raz que contiene la clave separadora B:
B
A D
Para buscar el lugar adecuado de insercion de la clave C, hay que recorrer el arbol
desde la raz, siguiendo un procedimiento similar al usado en los arboles binarios de
b usqueda; habra que comparar la clave sucesivamente con las que hay dentro del nodo, de
modo que si el valor es menor se sigue por la rama izquierda, y si es mayor, se contin ua
comparando con las restantes claves del nodo hasta encontrar la rama adecuada por la
que seguir el recorrido. Siguiendo este proceso, la clave C se insertar a en el mismo
nodo que D, quedando este completo:
B
A C D
Irene Martnez C. de la Computaci on e I.A. UAL
Operaci on de inserci on 21
La clave siguiente es R, que debe insertarse en el nodo hoja con las claves C y
D. Se produce una nueva situaci on de saturaci on dentro del nodo, por lo que hay
dividirlo: la secuencia de claves es {C,D,R}, as que la clave D promociona al nodo
raz.

Este tiene espacio para esta clave, as que el arbol queda:
B D
A C R
La siguiente clave a insertar es P. Como es mayor que la clave B, se compara
con D que tambien es menor; al ser esta la ultima clave de la secuencia del nodo se
sigue comparando en el nodo al que apunta el ultimo apuntador, que es el que contiene
la claveR. Como hay espacio en el nodo, se inserta reordenando, con lo que el arbol
queda:
B D
A C P R
La ultima clave que se inserta es G. Le corresponde el nodo que contiene las claves
P y R, que est a completo, as que se divide en dos y la clave P promociona al
nodo raz. Pero el nodo raz tambien est a completo, as que hay que resolver esta nueva
situacion de saturaci on dividiendo el nodo raz en dos. En este caso, la secuencia de
claves sera {C,D,P}; por tanto, se promocionara la clave D, insertandose en una
nueva raz del arbol, que ahora tendra un nivel mas.
El arbol B resultante sera:
D
B P
A C G R
Irene Martnez C. de la Computaci on e I.A. UAL
22

Arboles B
3.5. Operacion de eliminacion
En este caso se ha eliminado un registro de clave K del archivo de datos y se quiere
eliminar su referencia (clave y posicion) del arbol B.
La operacion de eliminacion es la opuesta a la insercion, y deben mantenerse las
restricciones relativas al mnimo n umero de claves almacenadas por nodo.
Concatenacion y redistribucion
La operacion de eliminacion de una clave en un arbol B puede provocar que el
n umero de claves que queden en el nodo sea menor que la cantidad mnima determinada
por el orden del arbol, provocando una situacion de underow o insuciencia en dicho
nodo. Para resolver esta situacion tenemos dos estrategias:
Redistribuir o repartir las claves de un nodo adyacente entre ambos nodos,
quedando los dos con un n umero de claves mayor o igual que la cantidad mnima
requerida. En esta operacion tambien se vera afectada la clave separadora de los
dos nodos, que debera cambiar, y que sera la clave central de la secuencia que se
forme al unir el conjunto de claves del nodo en underow, la clave separadora y
las claves del nodo adyacente.
Se podra realizar la redistribucion de claves entre los dos nodos siempre que
el nodo adyacente almacene un n umero de claves mayor que el mnimo; as se
evitara una nueva situacion de underow en el segundo nodo.
Concatenar las claves que han quedado en el nodo con las de un nodo adyacente.
Es una operacion inversa a la division, y por tanto al unir dos nodos tendremos
que incluir en la posicion central de la nueva secuencia de claves, la clave
separadora de ambos nodos, que se encuentra en el nodo padre.
La concatenacion podra llevarse a cabo cuando el nodo adyacente solo almacene el
n umero mnimo de claves, ya que en este caso el nodo resultante tendra capacidad
suciente para todas las claves.
La situacion de insuciencia en un nodo se resuelve realizando, con un nodo ad-
yacente, una operacion de redistribucion, y si no es posible, una de concatenacion.
Irene Martnez C. de la Computaci on e I.A. UAL
Operaci on de eliminaci on 23
Veamos con un ejemplo estas dos soluciones en un arbol B de orden 5. El n umero
mnimo de claves para un nodo hoja sera 2 (= 5/2 1).
Ejemplo 8:
Eliminaci on de la clave 55 del siguiente arbol: redistribuci on
65 80
55 60 70 72 79 85 90 92
Como el nodo adyacente tiene mas de 2 claves, se reparten las claves entre am-
bos nodos, incluida la clave separadora 65; las claves rotan hacia los nodos de la
izquierda:
70 80
60 65 72 79 85 90 92
La clave separadora de la nueva secuencia {60,65,70,72,79} sera 70.
Volvemos a eliminar la clave 55 : concatenaci on
65 80
55 60 70 75 85 90 92
Como no es posible hacer redistribuci on, se concatena con el nodo adyacente: se
unen las claves de ambos mas la clave 65 que los separaba:
80
60 65 70 75 85 90 92
En el arbol quedan 2 nodos hoja, y en el nodo raz, la clave separadora de ambos.
Irene Martnez C. de la Computaci on e I.A. UAL
24

Arboles B
En la operacion de eliminacion de una clave, ademas de controlar el n umero de
claves que quedan tras la eliminacion, tenemos que tener en cuenta dos aspectos:
1. Las eliminaciones han de realizarse siempre en nodos hoja. En el caso en que la
clave a eliminar este en un nodo interior, primero hay que intercambiarla con
su sucesora en la secuencia, que estara en un nodo hoja, y despues eliminarla de
ese nodo.
2. Tras una concatenacion, tambien hay que considerar la posible propagacion ha-
cia arriba de la situacion de insuciencia que puede dar lugar incluso a la
eliminacion del nodo raz, y por tanto, a que se reduzca la altura del arbol.
En consecuencia, un algoritmo general para la eliminacion de una clave en un arbol
B puede ser el siguiente:
ALGORITMO de ELIMINACI

ON:
1. Recorrer el arbol hasta localizar la clave a eliminar K < K
i
.
2. SI la clave no esta en un nodo hoja, intercambiarla con su sucesora inmediata,
que estara en el nodo hoja al que se llega recorriendo en inorden el subarbol al
que apunta P
i
.
3. Eliminar la clave del nodo hoja.
4. SI el n umero de claves que quedan en el nodo es menor que el mnimo permitido,
examinar los nodos adyacentes y:
a) SI uno de los nodos tiene mas del n umero mnimo de claves, realizar
redistribucion cambiar clave separadora de los nodos implicados
b) EN OTRO CASO, (los dos tienen solo el mnimo) realizar operacion de
concatenaci on la clave separadora del nodo padre se une al nuevo nodo.
b.1. SI se ha bajado la ultima clave del nodo raz, el arbol perdera un nivel.
b.2. EN OTRO CASO, aplicar el paso 4 al nodo padre.
A continuacion vamos a ver, con un ejemplo, las posibles situaciones que pueden
presentarse en una operacion de eliminacion.
Irene Martnez C. de la Computaci on e I.A. UAL
Operaci on de eliminaci on 25
Ejemplo 9:
Partiremos de un arbol B de orden 4, por lo que el mnimo n umero de claves en
un nodo sera 1.
51
11 66 78
02 15 53 54 68 69 71 79 84
Caso 1: Eliminacion en un nodo hoja sin provocar insuciencia.
Para mostrar esta situaci on eliminamos la clave 68 del arbol anterior. Quedan
2 claves en el nodo hoja, y por tanto, no se produce insuciencia. El arbol queda:
51
11 66 78
02 15 53 54 69 71 79 84
Caso 2: Eliminacion de una clave situada en un nodo que no es hoja.
Eliminaci on de la clave 51 del nodo raz. Como las eliminaciones se realizan en
nodos hoja, hay que intercambiarla por su sucesora en inorden que es la clave 53.

Esta pasa a la raz, y eliminamos 51 del nodo hoja. No se produce insuciencia.


El arbol resultante es:
Irene Martnez C. de la Computaci on e I.A. UAL
26

Arboles B
53
11 66 78
02 15 54 69 71 79 84
Caso 3: Eliminacion en un nodo hoja que provoca insuciencia y se corrige
mediante redistribucion.
Si se elimina la clave 54, se produce una situaci on de insuciencia en el nodo,
al quedar este sin ninguna clave. Primero intentamos solucionarla mediante redistribu-
cion. Por convencion, comprobaremos inicialmente el nodo adyacente de la derecha; si
este no tuviese al menos 2 claves, probaramos con el de la izquierda. En este ejemplo
podemos hacer la redistribucion con el hermano de la derecha, y la clave separadora
66 baja al nodo. Entonces el arbol B quedar a:
53
11 69 78
02 15 66 71 79 84
Caso 4: Eliminacion en un nodo hoja que provoca insuciencia y se corrige
mediante concatenacion.
A continuacion vamos a eliminar la clave 53. En primer lugar tenemos que in-
tercambiarla con su sucesora que est a en una hoja (la clave 66), y eliminarla del
nodo hoja. Se produce una situacion de insuciencia al quedar el nodo hoja con me-
nos de 1 clave. En este caso, no podemos resolverla con redistribuci on ya que el nodo
adyacente de la derecha s olo contiene 1 clave, y no tiene nodo adyacente izquierdo.
Por tanto, se concatenan los dos nodos, y la clave separadora 69 baja al nodo hoja,
quedando el arbol del siguiente modo:
Irene Martnez C. de la Computaci on e I.A. UAL
Operaci on de eliminaci on 27
66
11 78
02 15 69 71 79 84
Caso 5: La situacion de insuciencia se propaga hacia arriba.
Por ultimo, eliminaremos la clave 02 del nodo hoja. No se puede hacer redistribu-
cion con su unico nodo adyacente puesto que s olo tiene 1 clave; as que concatenamos
ambas hojas, y la clave separadora 11 desciende al nodo. La situaci on de insucien-
cia se propaga al nodo padre que contena la clave 11, y que ahora queda vaco:
66
78
11 15 69 71 79 84
Hay que resolver esta nueva situaci on de insuciencia; pero su unico nodo adya-
cente s olo tiene 1 clave por lo que no se puede hacer redistribuci on. As que concatena-
mos, y bajamos la clave 66 del nodo raz. Al quedar el nodo raz sin claves, el arbol
pierde un nivel, y el resultado es:
66 78
11 15 69 71 79 84
Irene Martnez C. de la Computaci on e I.A. UAL
28

Arboles B
3.6. Operacion de acceso secuencial
La lectura ordenada de todos los registros del archivo se realiza recorriendo el
arbol B en inorden: en cada nodo se almacena, junto a la clave, la posicion del registro
asociado en el archivo de datos. Por tanto hay que leer de forma ordenada todas las
claves almacenadas en los nodos del arbol y a partir de ellas obtener las respectivas
posiciones de los registros, e ir accediendo al archivo para recuperar los registros uno
a uno.
Lectura ordenada en base a una clave K de todos los
registros del archivo.
LecturaOrdenada(NODO: direccion)
IF esHOJA(NODO)
FOR i 1 TO numClaves(NODO)
LeerRegistrodeClave( K
i
)
ELSE
n numClaves(NODO)+1
FOR i 1 TO numClaves(NODO)
LecturaOrdenada( P
i
)
LeerRegistrodeClave( K
i
)
LecturaOrdenada( P
n
)
Concluimos que esta operacion no es eciente en arboles B ya que seran necesarios
tantos accesos a disco como registros haya en el archivo, mas los accesos realizados
para recorrer los nodos del arbol B.
Irene Martnez C. de la Computaci on e I.A. UAL
Resultados 29
3.7. Resultados
Una vez estudiado el proceso de insercion y construccion del arbol B, podemos
deducir las siguientes conclusiones:
En todo momento, la estructura que se obtiene esta balanceada, sin necesidad de
realizar rotaciones.
El equilibrio de este arbol no depende del orden en que se inserten las claves,
como ocurre con los arboles binarios de b usqueda.
Para la recuperacion de un registro se compara el valor de la clave con la secuencia
de claves de cada nodo del arbol, siguiendo los apuntadores apropiados para
descender de nivel. El proceso acaba cuando se localiza la clave (junto a la cual
estara la posicion del registro) o cuando se obtiene un puntero nulo, caso en que
la clave no se encuentra en el arbol.
El arbol B es una estructura muy adecuada para almacenar grandes cantidades de
informacion; por ello, los nodos del arbol suelen encontrarse en almacenamiento
secundario. Cuando se accede a un nodo del arbol B, este se copia completo en
memoria, por lo que el costo de recorrer la secuencia de claves en el proceso de
b usqueda es insignicante comparado con el tiempo requerido para acceder a
dicho nodo en disco.
Como el arbol B esta equilibrado, el costo de una operacion de recuperacion, a un
en el peor caso, esta acotado por la altura o n umero de niveles del arbol.
Irene Martnez C. de la Computaci on e I.A. UAL
30

Arboles B
+
4.

Arboles B
+
Las estructuras de arboles B son una excelente opcion para el acceso a un registro
individual a traves de su clave. Sin embargo, en muchas aplicaciones existe la necesidad
de recuperar todos o parte de los registros ordenados por la clave, y en ese caso, si los
registros del archivo no se encuentran ordenados fsicamente por dicha clave, el unico
proceso para realizar ese procesamiento es a traves del ndice.
Para acceder de forma ordenada a los registros mediante el arbol B que los indexa,
es necesario recorrer en inorden el arbol completo, obtener la posicion de cada registro
que se encuentra almacenada en el nodo junto a su clave, y leerlo del chero. Esto
supone numerosas operaciones de acceso a disco, y puede ser muy costoso si el n umero
de registros es elevado.
Por otro lado, los archivos con organizacion secuencial, ordenados por una clave,
son poco ecientes para el acceso por clave si los comparamos con los arboles B, y
ademas se deterioran tras sucesivas operaciones de insercion y eliminacion de registros.
En consecuencia, es necesario mejorar esta situacion, ya que es muy frecuente que un
sistema necesite tanto acceso directo a traves de una clave, como acceso secuencial en
orden de clave a todos los registros de datos.
Una variante de los arboles B que permite realizar de forma eciente tanto el acceso
directo mediante clave como el procesamiento en secuencia ordenada de los registros,
es la estructura de arbol B
+
(propuesta por Knuth [Knu97b]).
Los arboles B
+
almacenan los registros de datos solo en sus nodos hoja (agrupados
en paginas o bloques), y en los nodos interiores y nodo raz se construye un ndice
multinivel mediante un arbol B, para esos bloques de datos.
4.1. Propiedades
Un arbol B
+
de orden n es una estructura formada por un conjunto de bloques
de registros ordenados por clave, que se almacenan a nivel de hoja (llamado conjunto
secuencia), y un ndice sobre un arbol B de orden n para los bloques de registros
(llamado conjuntondice). Estos dos conjuntos diferenciados se muestran en la gura 9.
Irene Martnez C. de la Computaci on e I.A. UAL
Estructura 31
Conjunto

Indice
Conjunto Secuencia
Figura 9: Estructura de un arbol B
+
.
Las restricciones de ocupacion que determine el orden n del arbol solo afectaran
al conjunto ndice pero no a los bloques de registros, a los cuales se les exigira una
ocupacion mnima (y una maxima) pero no estara relacionada con el orden del arbol.
Por tanto, las propiedades que estudiamos para los arboles B pueden aplicarse a los
arboles B
+
; la diferencia entre ambos esta en el nivel de las hojas. Ademas, los arboles
B
+
no almacenan en sus nodos interiores direcciones de registros, sino solo claves. Los
registros se obtienen a nivel de las hojas, donde se encuentran almacenados ordenados
dentro de cada bloque. Es decir, los nodos hoja del conjunto ndice direccionan los
nodos terminales que contienen los datos.
4.2. Estructura
Un arbol B
+
de orden n consta de dos partes diferenciadas (vease gura 9):
Conjunto secuencia: Esta formado por los registros de datos, agrupados dentro
de bloques en los que se mantienen ordenados en base a la clave de b usqueda.
Estos bloques no tienen por que almacenarse fsicamente en el archivo seg un
la ordenacion logica, por lo que se mantiene una lista doblemente enlazada de
bloques, y de este modo poder recuperar ordenados todos los registros de datos
recorriendo toda la lista de bloques.
Irene Martnez C. de la Computaci on e I.A. UAL
32

Arboles B
+
Conjunto ndice: Es un arbol B de orden n que indexa los bloques de registros
de datos del conjunto secuencia. En los nodos de este arbol B solo se almacenan
claves de b usqueda y direcciones de nodos descendientes, excepto los nodos hoja,
que contienen las direcciones de los bloques con los registros de datos del conjunto
secuencia.
Las claves almacenadas en el conjunto ndice son claves separadoras que
permiten diferenciar el rango de registros que se almacena en cada bloque.
Por ello, no tienen por que ser copias de las claves reales de los registros de
datos, incluso podran almacenarse claves mas cortas que las originales, o de
un tama no jo, incluso las de menor tama no posible como en el caso de los
arboles B
+
de prejo simple que podemos estudiar en libro de Folk [Fol98].
Los nodos de este conjunto ndice se almacenan en disco, y se van recu-
perando a medida que se va recorriendo el arbol. Por tanto el n umero de
accesos necesarios para recuperar cualquier registro sera igual al n umero de
niveles del arbol B
+
.
Teniendo en cuenta esta estructura, en un arbol B
+
de orden n podemos diferenciar
los siguientes nodos:
Nodo interior: contiene claves K
i
y direcciones P
i
, P
i+1
de nodos descendientes
P
1
K
1
P
2
K
2
P
3
........ P
n1
K
n1
P
n
Nodo hoja: contiene claves K
i
y direcciones Pb
i
, Pb
i+1
de bloques de registros
Pb
1
K
1
Pb
2
K
2
Pb
3
........ Pb
n1
K
n1
Pb
n
Bloque del conjunto secuencia b
i
: contiene registros ordenados con clave menor
que K
i
, y dos apuntadores, al bloque anterior b
i1
y al bloque siguiente b
i+1
.
Ejemplo 10:
En la gura 10 se representa un arbol B
+
de orden 4. El conjunto ndice es un
arbol B de orden 4 con tres niveles, y el conjunto secuencia est a formado por bloques
que almacenan dos registros de datos cada uno.
Irene Martnez C. de la Computaci on e I.A. UAL
Operaci on de b usqueda 33
66
11 78
08 15 69 71 80 84
02 06 08 10 11 13 15 50 66 67 69 70 71 75 78 79 80 82 84 86
Figura 10: Ejemplo: arbol B
+
de orden 4.
4.3. Operacion de b usqueda
Para buscar un registro en un arbol B
+
a partir de su clave, primero hay que
recorrer todo el arbol del ndice, comparando los valores de clave de cada nodo y
tomando el descendiente adecuado, tal y como se realiza en la operacion de b usqueda
de un registro en un arbol B. Ahora, la diferencia fundamental consiste en que al estar
todos los registros en los bloques de datos, es necesario que la b usqueda llegue siempre
a un nodo hoja, que es donde se encuentra la direccion del bloque donde puede estar
el registro almacenado. Una vez localizado el bloque, se llevara a memoria, donde se
realizara la b usqueda del registro.
Acceso directo a un registro a partir de su clave K:
Recorrer el arbol B del ndice hasta llegar a un nodo hoja
Pb
1
K
1
Pb
2
K
2
Pb
3
. . . Pb
n1
K
n1
Pb
n
Comparar con las claves hasta que K
i1
< K < K
i
Buscar en el bloque Pb
i
(b usqueda binaria)
La b usqueda llega siempre a un nodo hoja
Mismo n umero de accesos para cualquier registro
Irene Martnez C. de la Computaci on e I.A. UAL
34

Arboles B
+
Ejemplo 11:
Se busca un registro con clave 86 en el arbol B
+
de orden 4 de la gura 10.
Empezaramos comparando con la clave almacenada en el nodo raz. Como es
mayor, seguiramos la b usqueda por su hijo derecho; compararamos con 78, como
78<86 continuamos con la hoja que contiene las claves {80,84}. Comparando,
80 < 84 <

86

, seleccionamos el tercer apuntador de esta hoja, que nos lleva al ultimo


bloque del conjunto secuencia. En la gura 11 se muestra en color verde la secuencia
de apuntadores que se ha seguido. Una vez obtenida la posici on del bloque de datos se
lleva a memoria donde se realiza la b usqueda del registro.
66
11 78
08 15 69 71 80 84
02 06 08 10 11 13 15 50 66 67 69 70 71 75 78 79 80 82 84 86
Figura 11: Ejemplo: b usqueda de un registro con clave 86 en un arbol B
+
.
4.4. Operacion de insercion
Se quiere insertar un nuevo registro en el archivo de datos. Para insertar un nuevo
registro en un arbol B
+
, hay que localizar, a partir de su clave, el bloque en el que
debe almacenarse, de modo similar a una operacion de b usqueda, recorriendo el arbol
desde el nodo raz hasta la hoja adecuada. Una vez recuperado el bloque en memoria,
si a un no se ha ocupado su maximo n umero de registros, se inserta el registro de forma
ordenada en el.
Si el bloque esta completo, se produce una situacion de saturacion similar a la
que estudiamos en los nodos de los arboles B, que del mismo modo puede resolverse
dividiendo el bloque y repartiendo equitativamente los registros entre los dos.
Irene Martnez C. de la Computaci on e I.A. UAL
Operaci on de inserci on 35
Por tanto, una vez obtenido el bloque, las estrategias son:
Si hay espacio en el bloque:
1. Se almacena el registro en el bloque de forma ordenada.
2. Se reescribe nuevamente el bloque en disco.
Si no hay espacio en el bloque:
1. Se crea un nuevo bloque en el chero y se reparten los registros del bloque
completo entre ambos, insertando el registro en la posicion adecuada.
2. Se actualiza el ndice: al tener un bloque mas de registros, hay que insertar,
en el arbol B del ndice, una clave separadora que diferencie los registros de
estos dos bloques consecutivos; por convenio esta se obtiene a partir de la
primera clave del segundo bloque. Hay que realizar, por tanto, una operacion
de insercion tal y como se estudio en el caso de los arboles B, resolviendo del
mismo modo las posibles situaciones de saturacion que puedan producirse.
Insercion de un nuevo registro de clave k< K
i
:
1. Recorrer conjunto ndice hasta obtener el bloque b
i
2. Insertar el registro en el bloque b
i
S hay espacio en el bloque:
almacenar el registro de forma ordenada en b
i
.
reescribir bloque b
i
en el archivo.
No hay espacio en el bloque saturacion
division del bloque:
Crear un nuevo bloque b
i+1
adyacente con b
i
.
Repartir los registros entre ambos bloques e insertar de forma
ordenada el nuevo
Obtener una clave separadora K

< K
i
para ambos bloques
3. Si ha habido saturacion en el conjunto secuencia:
insertar nueva clave separadora K

en el arbol B del ndice


Resolver posibles situaciones de saturacion de nodos
Irene Martnez C. de la Computaci on e I.A. UAL
36

Arboles B
+
Ejemplo 12:
Vamos a realizar dos inserciones consecutivas en el siguiente arbol B
+
de orden 3,
con capacidad para dos registros en cada bloque del conjunto secuencia.
67 91
53 74 89 95
40 50 53 55 67 74 78 89 91 93 95 99
Insercion del registro con clave 70. Recorremos el ndice y obtenemos el bloque
tercero para insertarlo, que contiene suciente espacio. No se modica la estructura del
arbol, que quedar a:
67 91
53 74 89 95
40 50 53 55 67 70 74 78 89 91 93 95 99
Insercion del registro con clave 76. Recorriendo el ndice obtenemos el bloque
cuarto que est a completo. Entonces creamos un nuevo bloque donde insertamos el nue-
vo registro. Tenemos pues, una nueva clave separadora entre este bloque y el siguiente,
que es la 78.
La insertamos en el arbol B, en el nodo hoja correspondiente. El nodo se satura:
hacemos una operaci on de division y promocionamos la clave 78 al nodo raz. Nueva-
mente se produce una situacion de saturaci on; el nodo raz se divide y se promociona
la clave central que vuelve a ser la 78, dando lugar a una nueva raz para el arbol
B
+
, que contiene la clave promocionada, y como unicos hijos los dos nodos resultantes
de la divisi on de la antigua raz:
Irene Martnez C. de la Computaci on e I.A. UAL
Operaci on de inserci on 37
78
67 91
53 74 89 95
40 50 53 55 67 70 74 76 78 89 91 93 95 99
Construccion ascendente de un arbol B
+
Vamos a mostrar con un ejemplo como se construye un arbol B
+
, partiendo de las
claves de los registros que se agrupan en los bloques del conjunto secuencia, y realizando
las operaciones de insercion tal y como se han descrito anteriormente.
Ejemplo 13:
Partimos de un nodo hoja vaco de un arbol B
+
de orden 3, e iremos insertando
la misma secuencia de registros que utilizamos en la construccion de un arbol B en
la seccion anterior. Los bloques de datos del conjunto secuencia pueden almacenar un
maximo de 2 registros. Las claves de estos registros son {B,A,D,C,R,P,G}
El primer registro tiene como clave B, y se inserta en el primer bloque:

B
Insertamos el registro con clave A en el mismo bloque, y lo reordenamos:

A B
Al insertar el registro con clave D, hay que crear un segundo bloque en el conjunto
secuencia, y la clave separadora entre ambos bloques sera D:
Irene Martnez C. de la Computaci on e I.A. UAL
38

Arboles B
+
D
A B D
Despues se inserta el de clave C. Le corresponde el primer bloque, pero como
est a completo, se divide y se inserta en un nuevo bloque. La nueva clave separadora
sera C y se insertar a en el nodo raz:
C D
A B C D
El registro con clave R se inserta en el tercer bloque. No hay que realizar cambios
en el ndice:
C D
A B C D R
El registro con clave P debe insertarse en el tercer bloque. Como est a completo, lo
dividimos, y la nueva clave separadora es la R. Como el nodo raz ya tiene el maximo
n umero de claves se produce una saturaci on: lo dividimos y creamos una nueva raz.
El arbol B
+
resultante es el siguiente:
D
C R
A B C D P R
Irene Martnez C. de la Computaci on e I.A. UAL
Operaci on de eliminaci on 39
Por ultimo se inserta el registro con clave G, nuevamente en el tercer bloque.

Este se divide y la clave separadora P se inserta en el nodo hoja. Finalmente el arbol


B
+
queda:
D
C P R
A B C D G P R
4.5. Operacion de eliminacion
Para eliminar un registro de un arbol B
+
, hay que recorrer el arbol hasta llegar a la
hoja que contiene la direccion del bloque en el que se encuentra. Los bloques del con-
junto secuencia tambien deben tener un n umero mnimo de registros almacenados, por
lo que pueden crearse situaciones de insuciencia dentro de los bloques, similares
a las de los nodos del conjunto ndice. En ese caso, se resuelven, mediante redistri-
buci on de registros entre bloques adyacentes, y si no es posible, concatenando los
registros de los dos bloques. En consecuencia, tras la eliminacion:
Si el bloque queda con al menos la mitad de los registros:
1. No habra que hacer ning un cambio; solo se reescribira el bloque en disco.
2. Se comprobara si la clave separadora de este bloque y el siguiente sigue
siendo valida. En caso de no serlo, habra que cambiarla dentro del ndice.
Si el bloque queda ocupado con menos de la mitad de su capacidad:
1. Como en una situacion de insuciencia en un nodo de un arbol B, primero se
intentara redistribuir los registros entre ese bloque y un bloque adyacente,
y si no es posible, entonces se concatenaran los dos bloques.
2. Actualizar el ndice: en caso de haber hecho redistribucion, hay que cambiar
la clave separadora entre los bloques. Si se ha hecho concatenacion tendre-
mos un bloque menos, y por tanto, habra que eliminar la clave separadora del
ndice, resolviendo las posibles situaciones de insuciencia en los nodos.
Irene Martnez C. de la Computaci on e I.A. UAL
40

Arboles B
+
Eliminacion del registro con clave k< K
i
:
1. Recorrer conjunto ndice hasta obtener el bloque b
i
2. Eliminar el registro en el bloque b
i
.
Si n umero de registros que quedan en el bloque es que el mnimo:
reescribir bloque b
i
en el archivo.
Si n umero de registros es menor que el mnimo insuciencia
Intentamos hacer redistribucion:
Obtener un bloque b
i+1
o b
i1
adyacente con b
i
que contenga
un n umero de registros > mnimo.
Repartir los registros entre ambos bloques.
Obtener una nueva clave separadora K

para ambos bloques


Si no es posible, hacer concatenacion:
Obtener un bloque b
i+1
o b
i1
adyacente con b
i
.
Unir en un solo bloque los registros de ambos bloques.
3. Si ha habido insuciencia en el conjunto secuencia:
Si se ha resuelto con redistribucion:
Cambiar la clave separadora en el arbol B del ndice que separaba
los dos bloques por K

.
Si se ha resuelto con concatenacion:
Eliminar la clave separadora en el arbol B del ndice que separaba
los dos bloques concatenados.
Resolver posibles situaciones de insucencia de nodos
Ejemplo 14:
Vamos a realizar dos eliminaciones consecutivas de registros del siguiente arbol B
+
de orden 3. El mnimo n umero de registros permitido en los bloques es 1:
Irene Martnez C. de la Computaci on e I.A. UAL
Operaci on de eliminaci on 41
67 91
53 74 89 95
40 50 53 55 67 70 74 78 89 90 91 93 95
Eliminaci on el registro con clave 91. Se busca el bloque donde se encuentra
recorriendo el ndice: el sexto. El bloque queda con el mnimo n um. de registros que
puede contener, no tenemos que realizar ning un cambio mas. En el ndice dejamos la
clave 91 ya que sigue diferenciando los registros del bloque quinto y el sexto:
67 91
53 74 89 95
40 50 53 55 67 70 74 78 89 90 93 95
Eliminaci on del registro con clave 93 en el arbol resultante. Se busca el bloque
correspondiente, el sexto, quedara ahora por debajo del mnimo: insuciencia. Inten-
tamos hacer redistribucion con el bloque adyacente; como no es posible, concatenamos.
Despues hay que eliminar en el ndice la clave que los separaba, 95. El arbol queda
as:
67 89
53 74 91
40 50 53 55 67 70 74 78 89 90 95
La eliminacion de la clave separadora 95 da lugar a una situaci on de insucien-
cia en el nodo hoja, que resolvemos haciendo redistribuci on con su hermano izquierdo.
Irene Martnez C. de la Computaci on e I.A. UAL
42

Arboles B
+
4.6. Operacion de acceso secuencial
Una de las ventajas de las estructuras de arboles B
+
es la facilidad de realizar la
lectura ordenada de todos los registros de datos. Para ello, basta con localizar el primer
bloque del conjunto secuencia recorriendo en inorden el conjunto ndice hasta llegar a
la primera hoja, que es la que almacena la direccion de este bloque en el campo Pb
1
.
A partir de este bloque se van leyendo los demas siguiendo la lista enlazada de
bloques. Cada bloque mantiene los registros ordenados; solo hay que llevar los bloques
a memoria y leer sus registros.
Localizacion del primer bloque:
78
67 91
53 74 89 95
40 50 53 55 67 70 74 76 78 89 91 93 95 99
4.7. Resultados
Tras estudiar las operaciones basicas de mantenimiento de un arbol B
+
podemos
destacar los siguientes aspectos:
El arbol B
+
es una de las estructuras mas adecuadas para organizar datos, y
esta especialmente indicada en situaciones en las que los datos se procesan tanto
de modo directo como de modo secuencial.
La estructura de un arbol B
+
esta siempre equilibrada, y no se producen las largas
cadenas de registros de desborde que se generan en la organizacion secuencial
indexada (con ndices estaticos).
Irene Martnez C. de la Computaci on e I.A. UAL
43
Debido a lo anterior, tampoco es necesario realizar reorganizaciones periodicas
del archivo de datos.
Otra ventaja importante es que la eciencia de la insercion o de la recuperacion
no se ve afectada por el orden de insercion de los registros o la distribucion de
sus claves.
El inconveniente de los arboles B
+
es la necesidad de almacenamiento para el
ndice, y como consecuencia, el n umero de accesos necesarios si el arbol del ndice
no puede almacenarse completo en memoria principal.
5. Conclusiones
Los arboles B y B
+
poseen unas caractersticas muy interesantes que les hacen ser
muy utilizados en la organizacion de los ndices en la mayora de los sistemas. Las
principales son:
Ambos producen arboles balanceados, de forma que los arboles que generan no
evolucionan de forma desigual en unas ramas y en otras, ni dependen del orden
de insercion de los registros.
Los arboles crecen de abajo hacia arriba, por lo que en todo momento, la mejor
clave separadora se encuentra en la raz.
Permiten un acceso rapido a cualquier nodo del arbol, y por tanto a los registros
a los que apuntan.
Las operaciones de mantenimiento, tanto inserciones como eliminaciones, son
muy sencillas y no afectan al equilibrio del arbol.
Son estructuras paginadas de ndices, lo que signica que llevan bloques comple-
tos de informacion a memoria, y pueden implementarse como arboles virtuales
(dejando en memoria los bloques de uso mas reciente).
Para seleccionar una u otra estructura deben analizarse tanto las caractersticas
que los diferencian, como la aplicacion concreta para la que se necesitan. Veremos las
diferencias en el siguiente apartado.
Irene Martnez C. de la Computaci on e I.A. UAL
44 Conclusiones


Arbol B frente a arbol B
+
A continuacion vamos a contrastar las caractersticas que diferencian a las dos
estructuras:
Los arboles B contienen informacion en los nodos que se agrupa en forma de
parejas del tipo <clave,puntero al registro>. Estas parejas se distribuyen dentro
de los nodos del arbol B, por lo que puede encontrarse la posicion de un registro
en cualquier nivel del arbol, sin necesidad de llegar a un nodo hoja, como ocu-
rre siempre en los arboles B
+
, donde los registros de datos se encuentran en el
conjunto secuencia.
Debido a la estructura de los nodos del arbol B, para un mismo tama no de pagina
o nodo, se podran almacenar menos claves que en un nodo de arbol B
+
, que solo
almacena claves. Por tanto, el ndice en un arbol B puede ser de mayor tama no,
y el del arbol B
+
de menor altura (al ser de mayor orden).
En un arbol B, la lectura ordenada de todos los registros del archivo supone el
recorrido completo y ordenado (en inorden) del arbol, con sus correspondientes
accesos a disco.
Las principales caractersticas de los arboles B
+
que los diferencian de las es-
tructuras en arbol B, se derivan del papel del conjunto secuencia: manteniendo
enlazados todos los bloques de registros ordenados se permite un recorrido se-
cuencial muy eciente.
A pesar de que el inconveniente principal de los arboles B
+
es la necesidad de
alcanzar siempre un nodo hoja para obtener un registro, sin embargo la estructura
de los nodos del arbol es mas sencilla que la de los arboles B, y por tanto, las
operaciones de actualizacion del ndice son mas ecientes, debido, principalmente,
a que en la mayora de los casos solo se ven afectadas las entradas del primer nivel
del ndice.
Irene Martnez C. de la Computaci on e I.A. UAL
Bibliografa 45
Bibliografa
[Cor90] T. Cormen, C. Leiserson y R. Rivest. Introduction to Algorithms. The
MIT Press, 1990.
[Fol98] M.J. Folk y B. Zoellick. File Structures, third edition. Addison-Wesley,
1998.
[Hor93] E. Horowitz, S. Sahni y S. Anderson-Freed. Fundamentals of Data Struc-
tures in C. Computer Science Press, 1993.
[Knu97b] D. Knuth. The Art of Computer Programming: Sorting and Searching,
vol. 3, second edition. Addison-Wesley, 1997.
[Liv90] P. E. Livadas. File Structures. Theory and Practice. Prentice Hall, 1990.
[Luq98] I. Luque, J.A. Romero y M.A. Gomez-Nieto. Ficheros: Organizaciones
Clasicas para el Almacenamiento de la Informacion. Servicio de Publi-
caciones de la Universidad de Cordoba, 1998.
[Sal88] B. Salzberg. File Structures. An analytic approach. Prentice Hall, 1988.
[Smi87] P. Smith y M. Barnes. Files and Databases: An Introduction. Addison-
Wesley, 1987.
[Tha88] A. L. Tharp. File Organization and Processing. John Willey and Sons,
1998.
Irene Martnez C. de la Computaci on e I.A. UAL

También podría gustarte

  • GCC Inline
    GCC Inline
    Documento10 páginas
    GCC Inline
    Leandro Navarro Rojas
    Aún no hay calificaciones
  • Clase Planeamiento
    Clase Planeamiento
    Documento4 páginas
    Clase Planeamiento
    Leandro Navarro Rojas
    Aún no hay calificaciones
  • Manual Del Editor Vi
    Manual Del Editor Vi
    Documento5 páginas
    Manual Del Editor Vi
    John Harlen Chavez Lozano
    Aún no hay calificaciones
  • Practica 5 Telnet y FTP
    Practica 5 Telnet y FTP
    Documento5 páginas
    Practica 5 Telnet y FTP
    Leandro Navarro Rojas
    Aún no hay calificaciones
  • Manual Del Editor Vi
    Manual Del Editor Vi
    Documento5 páginas
    Manual Del Editor Vi
    John Harlen Chavez Lozano
    Aún no hay calificaciones
  • Crystal Clear
    Crystal Clear
    Documento15 páginas
    Crystal Clear
    Leandro Navarro Rojas
    100% (2)
  • Java Swing
    Java Swing
    Documento26 páginas
    Java Swing
    api-3735749
    100% (5)
  • 9F Ejercicios
    9F Ejercicios
    Documento3 páginas
    9F Ejercicios
    alberto79
    Aún no hay calificaciones
  • Lab 1
    Lab 1
    Documento7 páginas
    Lab 1
    Paul Heredia Robayo
    Aún no hay calificaciones
  • Enfoque OOArticulo
    Enfoque OOArticulo
    Documento52 páginas
    Enfoque OOArticulo
    Rubén Darío Cosme
    Aún no hay calificaciones
  • Geografia
    Geografia
    Documento2 páginas
    Geografia
    Leandro Navarro Rojas
    Aún no hay calificaciones
  • Java
    Java
    Documento12 páginas
    Java
    Luis Antonio
    Aún no hay calificaciones
  • (IS3 2005 06) EnunciadoFebrero
    (IS3 2005 06) EnunciadoFebrero
    Documento8 páginas
    (IS3 2005 06) EnunciadoFebrero
    Leandro Navarro Rojas
    Aún no hay calificaciones
  • Java
    Java
    Documento12 páginas
    Java
    Luis Antonio
    Aún no hay calificaciones
  • 02uml 1
    02uml 1
    Documento73 páginas
    02uml 1
    Leandro Navarro Rojas
    Aún no hay calificaciones
  • Java Swing
    Java Swing
    Documento26 páginas
    Java Swing
    api-3735749
    100% (5)
  • Java Swing
    Java Swing
    Documento26 páginas
    Java Swing
    api-3735749
    100% (5)
  • Tema 7
    Tema 7
    Documento49 páginas
    Tema 7
    Leandro Navarro Rojas
    Aún no hay calificaciones
  • JDBC
    JDBC
    Documento10 páginas
    JDBC
    api-3735749
    100% (1)
  • Java Swing
    Java Swing
    Documento26 páginas
    Java Swing
    api-3735749
    100% (5)
  • AGREGACION
    AGREGACION
    Documento10 páginas
    AGREGACION
    Leonardo Arenas Serrano
    Aún no hay calificaciones
  • Inmobiliaria Reptitentes
    Inmobiliaria Reptitentes
    Documento10 páginas
    Inmobiliaria Reptitentes
    Leandro Navarro Rojas
    Aún no hay calificaciones
  • 02uml 1
    02uml 1
    Documento73 páginas
    02uml 1
    Leandro Navarro Rojas
    Aún no hay calificaciones
  • Java Swing
    Java Swing
    Documento26 páginas
    Java Swing
    api-3735749
    100% (5)
  • Java
    Java
    Documento12 páginas
    Java
    Luis Antonio
    Aún no hay calificaciones
  • Java
    Java
    Documento12 páginas
    Java
    Luis Antonio
    Aún no hay calificaciones
  • 8 Clases Abstractas
    8 Clases Abstractas
    Documento7 páginas
    8 Clases Abstractas
    Jorge Sixto
    Aún no hay calificaciones
  • AGREGACION
    AGREGACION
    Documento10 páginas
    AGREGACION
    Leonardo Arenas Serrano
    Aún no hay calificaciones
  • Diagramas de Casos de Uso - Universidad de Alcalá
    Diagramas de Casos de Uso - Universidad de Alcalá
    Documento4 páginas
    Diagramas de Casos de Uso - Universidad de Alcalá
    Antonio Varela
    Aún no hay calificaciones