Sunteți pe pagina 1din 4

Estructuras de Almaceuamieuto y Métodos de Acceso -21

ÁRBOL B+

Empleado para implementar índices dinámicos de múltiples niveles, es una alternativa


para archivos de índices secuenciales, es una variacion de arboles B. Puesto que, la desventajas
de utilizar archivos secuenciales de Índices degrada el rendimiento según crece el archivo, así
mismo muchos bloques de desbordamiento son creados y necesariamente se debe reorganizar
periódicamente todo el archivo. Sin embargo la ventaja de utilizar archivo de Índices de Árbol
B+ permite realizar una pequeña reorganización automática por sí misma, Estos Índices
mantienen su eficiencia a pesar de la inserción y borrado de datos, no es necesario la
reorganización del todo el archivo para mantener el rendimiento. existen menores desventajas de
Árbol B+ como la sobre carga extra al insertar y eliminar, espacio de sobrecarga, en conclusión
son mayores ventajas que desventajas de los Árbol B+ y además los Árbol B+ son extensamente
utilizados.

La principal diferencia es que en los árboles B todos los valores del campo de
búsqueda aparecen en algún nivel del árbol, junto con sus punteros de datos
correspondientes, mientras que en los árboles B+, los punteros de datos aparecen
sólo en los nodos hoja.

Un Árbol B+ es una Árbol balanceado que satisface las siguientes propiedades:

 Los caminos de la raíz a cada hoja del árbol son de la misma longitud
 Cada nodo que no es la raíz o una hoja tiene entre [n/2] y n hijos, donde n es fijo para cada
árbol en particular
 Un nodo Hoja tiene entre [(n–1)/2] y n–1 valores

Casos especiales:

 Si la raíz no es una hoja, entonces la raíz tiene al menos 2 hijos.


 Si la raíz es una hoja (No hay otro nodo en el Árbol). La raíz puede tener entre 0 y (n–1)
valores.

Estructura de Árbol B+

Modo típico:

Ki representa a los valores de claves de búsqueda y Pi son punteros a los hijos (para nodos que
no son hojas) o punteros a registros o cajones de registros (para nodos hojas). Las claves de
búsqueda en un nodo están ordenados.
K1 < K2 < K3 < . . . < Kn–1

Nodo Hoja:
- Una entrada por cada valor del campo de búsqueda, junto con un puntero al
registro (o a su bloque en disco) si el campo de búsqueda es clave o, si no lo es,
a un bloque de apuntadores (nivel de indirección adicional).
- Todos los nodos hoja están enlazados entre sí, para permitir el acceso ordenado
a los registros según el campo de búsqueda.
- Estructura de un nodo hoja:
1. Cada nodo hoja es de la forma
<<K1,Pr1,>,<K2,Pr2>,...,<Kq-1,Prq-1>, Psig>
donde qp, Pri es un puntero de datos y Psig es un puntero al siguiente nodo
Estructuras de Almaceuamieuto y Métodos de Acceso -22

hoja.
2. En cada nodo hoja se cumple que K1<K2< ...<Kq-1
3. Cada Pri, es un puntero a datos del fichero en disco:
· al registro cuyo valor del campo de búsqueda es Ki o
· al bloque que contiene el registro, o
· al bloque de punteros a los registros con valor Ki, si el campo de búsqueda
no es clave
4. Cada nodo tiene un mínimo de p/2 valores.
5. Todos los nodos hoja están en el mismo nivel.

Nodo Interno:
- Algunos valores del campo de búsqueda de los nodos hoja se repiten en los nodos
internos, para guiar las búsquedas
- Estructura de un nodo interno:
1. Cada nodo interno es de la forma
<P1,K1,P2,K2,...,Pq-1,Kq-1,Pq>,, qp, Pi un puntero de árbol y Ki un valor de
búsqueda
2. En cada nodo interno se cumple que K1<K2< ...<Kq-1
3. Para todo valor de búsqueda X en el subárbol al que apunta Pi,
se cumple: Ki-1< X  Ki para 1<i<q
X  Ki para i=1
Ki-1 < X para i=q
4. Cada nodo contiene como mucho p apuntadores de árbol
5. Cada nodo tiene un mínimo de p/2 punteros de árbol. La raíz tiene un
mínimo de dos, salvo si es el único nodo del árbol.
6. Un nodo con q punteros de árbol (qp), tiene q-1 valores del campo clave de
búsqueda.

Las entradas de los nodos internos contienen valores de búsqueda y apuntadores de


árbol, pero no apuntadores de datos, por lo que caben más entradas en un nodo
interno de un árbol B+ que en un nodo similar en un árbol B. Así que si el tamafio de
bloque (nodo) es el mismo, el orden p de un árbol B+ será mayor que para el árbol B
correspondiente, es decir, el árbol B+ tendrá menos niveles, con lo que se reducirá el
tiempo de búsqueda.

Consultas
En las búsquedas se recorre el árbol buscando un elemento solicitado, siguiendo el
orden de la clave de busqueda. Se pueden efectuar búsquedas aleatorias o
secuenciales; estas últimas se facilitan, ya que las hojas están ligadas como si fuera
una lista encadenada. El camino que se recorre en el procesamiento de una consulta
(de la raíz a la hoja) no es mayor de log(n/2)K, siendo K los valores de la clave de
búsqueda del archivo.

Inserción
Lo primero que se debe hacer es buscar en qué nodo hoja debe insertarse,
analizando desde la raíz algunos de los nodos del árbol.
El insertar una llave en un nodo que no esta lleno es fácil sólo se actualiza el
nodo, recordando que la llave "más grande" debe promoverse siempre al nivel
superior.
Estructuras de Almaceuamieuto y Métodos de Acceso -23

Si se inserta en un nodo lleno entonces ocurre un "overfull" y el nodo deberá


partirse en 2, promoviendo al nivel superior las llaves más grandes de los
nuevos nodos.
Recordar que al igual que los b-trees muchas de estas operaciones pueden
causar acciones recursivas al alterar los niveles superiores y en caso de llegar a
la raíz entonces el árbol crecerá en un nivel.

Eliminación:

El proceso de eliminación se puede deducir del proceso de inserción.


Al eliminar una llave localizamos la hoja donde se encuentra la llave a eliminar y
la eliminamos, aquí tendremos 2 opciones:

1) Se mantiene más de la mitad de las llaves del nodo

2) Se presenta un "underflow" al tener menos de la mitad de llaves en el


nodo.

Para el primer caso lo único que se debe revisar es si la llave más grande sigue
siendo la misma, si la llave que eliminamos era la más grande debemos
actualizar el nivel superior (quizás sucesivamente si es el caso)
Para el segundo caso debemos "concatenar" dos nodos hermanos, teniendo 2
casos:

a) formando un solo nodo donde la llave mayor se promueve actualiza al


nivel superior.

b) formando 2 nodos cada uno 1/2 lleno y actualizando en el nivel


superior las 2 llaves mayores de cada nodo.

Nuevamente es importante recordar que las eliminaciones pueden caer en un


proceso recursivo que llegue a la raíz en cuyo caso el árbol se reducirá en un
nivel.

En este árbol para realizar las operaciones de inserción y supresión, se necesita


efectuar reacomodos (rotaciones), las cuales ayudan a conservar las propiedades
originales del árbol. En las inserciones, cuando un nodo está lleno, se crea otro nodo
nuevo y se distribuyen los hijos, de tal manera que cada uno de los nodos debe
quedar lleno por lo menos a la mitad. En las supresiones, se van eliminando
elementos, y cuando un nodo no satisface las propiedades, se agrupan los elementos
con alguno de sus hermanos. Esos reacomodos que experimenta el árbol en las
inserciones y supresiones, en caso de ser necesario, se propagan de abajo hacia
arriba hasta que el árbol quede balanceado.

El Bulk Loading es un método para crear árboles de datos cuando la colección de


registros es bastante grande, ya que insertar uno a uno los registros usando el
algoritmo de inserción resultaría ser muy costoso. El primer paso de la aplicación del
Estructuras de Almaceuamieuto y Métodos de Acceso -24

Bulk Loading es ordenar los registros a ser insertados en el árbol que será creado y
Asignamos una página vacía para que sirva como raíz, e insertamos un puntero a la primera página de
entradas en ella. Cuando la raíz está llena, dividimos la raíz y creamos una nueva página raíz. Continúe
insertando entradas en la página de índice más a la derecha justo por encima del nivel de hoja, hasta
que todas las entradas estén indexadas.

Las ventajas mayor control en la concurrencia, pocas operaciones de I/O durante la


construcción y las hojas se almacenan de manera secuencial.

Indices HAshing

Los índices tipo Hash son mejores para búsquedas por igualdad y no soportan
búsquedas por rango; existen técnicas hash estáticas y dinámicas como en los árboles
ISAM y B+.

El hashing se puede usar no solo para la organización de archivos, sino también para
la creación de la estructura de índices. Un índice hash organiza claves de búsqueda,
con sus punteros a registros asociados, dentro de una estructura de archivo de hash.
Las inserciones y borrados requieren más de una operación.

S-ar putea să vă placă și