You are on page 1of 26

Almacenamiento de Data Jerárquica en Disco

Introducción a los Árboles-B


Operaciones Básicas

Árboles B

Roberto Abreu

18 de Octubre 2010
Santiago de los Caballeros - PUCMM

Roberto Abreu Árboles B


Almacenamiento de Data Jerárquica en Disco
Introducción a los Árboles-B
Operaciones Básicas

Composición de Discos Duros

Roberto Abreu Árboles B


Almacenamiento de Data Jerárquica en Disco
Introducción a los Árboles-B
Operaciones Básicas

Información
Para 7400RPM, 1 rotación = 8.33msec

Roberto Abreu Árboles B


Almacenamiento de Data Jerárquica en Disco
Introducción a los Árboles-B
Operaciones Básicas

Información
Para 7400RPM, 1 rotación = 8.33msec
En RAM, el tiempo de acceso es 50nsec (5 órdenes de
magnitud menor)

Roberto Abreu Árboles B


Almacenamiento de Data Jerárquica en Disco
Introducción a los Árboles-B
Operaciones Básicas

Información
Para 7400RPM, 1 rotación = 8.33msec
En RAM, el tiempo de acceso es 50nsec (5 órdenes de
magnitud menor)
1 rotación completa = más de 100,000 accesos a RAM

Objetivo: Maximizar Cantidad de Data, Minimizar Cantidad de


Operaciones
Debido a la baja proporción data:nodo, el número de
operaciones es mayor en los árboles que conocemos
hasta el momento

Roberto Abreu Árboles B


Almacenamiento de Data Jerárquica en Disco
Introducción a los Árboles-B
Operaciones Básicas

Información
Para 7400RPM, 1 rotación = 8.33msec
En RAM, el tiempo de acceso es 50nsec (5 órdenes de
magnitud menor)
1 rotación completa = más de 100,000 accesos a RAM

Objetivo: Maximizar Cantidad de Data, Minimizar Cantidad de


Operaciones
Debido a la baja proporción data:nodo, el número de
operaciones es mayor en los árboles que conocemos
hasta el momento
¿Cómo podemos diseñar una estructura que subsane
este problema?

Roberto Abreu Árboles B


Almacenamiento de Data Jerárquica en Disco
Introducción a los Árboles-B Ejemplo: B-Tree grado 2
Operaciones Básicas

Definición de los Árboles-B


Definición
Un Árbol-B es un árbol con raı́z (cuya raı́z es T.root) con las
siguientes propiedades:

Propiedades
1 Cada nodo x tiene los siguientes atributos:
1 x.n, el número de llaves actualmente almacenadas en x

Roberto Abreu Árboles B


Almacenamiento de Data Jerárquica en Disco
Introducción a los Árboles-B Ejemplo: B-Tree grado 2
Operaciones Básicas

Definición de los Árboles-B


Definición
Un Árbol-B es un árbol con raı́z (cuya raı́z es T.root) con las
siguientes propiedades:

Propiedades
1 Cada nodo x tiene los siguientes atributos:
1 x.n, el número de llaves actualmente almacenadas en x
2 Las x.n llaves mismas, x.key1 , x.key2 , ..., x.keyx.n almacenadas
en forma no decreciente.

Roberto Abreu Árboles B


Almacenamiento de Data Jerárquica en Disco
Introducción a los Árboles-B Ejemplo: B-Tree grado 2
Operaciones Básicas

Definición de los Árboles-B


Definición
Un Árbol-B es un árbol con raı́z (cuya raı́z es T.root) con las
siguientes propiedades:

Propiedades
1 Cada nodo x tiene los siguientes atributos:
1 x.n, el número de llaves actualmente almacenadas en x
2 Las x.n llaves mismas, x.key1 , x.key2 , ..., x.keyx.n almacenadas
en forma no decreciente.
3 x.leaf, verdadero si es una hoja

Roberto Abreu Árboles B


Almacenamiento de Data Jerárquica en Disco
Introducción a los Árboles-B Ejemplo: B-Tree grado 2
Operaciones Básicas

Definición de los Árboles-B


Definición
Un Árbol-B es un árbol con raı́z (cuya raı́z es T.root) con las
siguientes propiedades:

Propiedades
1 Cada nodo x tiene los siguientes atributos:
1 x.n, el número de llaves actualmente almacenadas en x
2 Las x.n llaves mismas, x.key1 , x.key2 , ..., x.keyx.n almacenadas
en forma no decreciente.
3 x.leaf, verdadero si es una hoja
2 x.n + 1 punteros x.c1 , x.c2 , ..., x.cx.n+1 a sus hijos.

Roberto Abreu Árboles B


Almacenamiento de Data Jerárquica en Disco
Introducción a los Árboles-B Ejemplo: B-Tree grado 2
Operaciones Básicas

Definición de los Árboles-B


Definición
Un Árbol-B es un árbol con raı́z (cuya raı́z es T.root) con las
siguientes propiedades:

Propiedades
1 Cada nodo x tiene los siguientes atributos:
1 x.n, el número de llaves actualmente almacenadas en x
2 Las x.n llaves mismas, x.key1 , x.key2 , ..., x.keyx.n almacenadas
en forma no decreciente.
3 x.leaf, verdadero si es una hoja
2 x.n + 1 punteros x.c1 , x.c2 , ..., x.cx.n+1 a sus hijos.
3 Si ki es cualquier llave almacenada en el sub-árbol con raı́z
x.ci , entonces:
k1 ≤ x.key1 ≤ k2 ≤ x.key2 ≤ ... ≤ x.keyx.n ≤ kx.n+1
Roberto Abreu Árboles B
Almacenamiento de Data Jerárquica en Disco
Introducción a los Árboles-B Ejemplo: B-Tree grado 2
Operaciones Básicas

Propiedades(2)
1 Todas las hojas están en el mismo nivel, el cual es la altura h.

Roberto Abreu Árboles B


Almacenamiento de Data Jerárquica en Disco
Introducción a los Árboles-B Ejemplo: B-Tree grado 2
Operaciones Básicas

Propiedades(2)
1 Todas las hojas están en el mismo nivel, el cual es la altura h.
2 Los nodos tienen lı́mites inferiores y superiores para las llaves
que contienen. Los lı́mites se expresan en términos de un
entero fijo t ≥ 2 llamado el grado mı́nimo del árbol-B:
1 Cada nodo distinto a la raı́z debe tener al menos t − 1 llaves.
Cada nodo interno debe tener por lo menos t hijos. Si el árbol
no está vacı́o, la raı́z debe tener al menos una llave.

Roberto Abreu Árboles B


Almacenamiento de Data Jerárquica en Disco
Introducción a los Árboles-B Ejemplo: B-Tree grado 2
Operaciones Básicas

Propiedades(2)
1 Todas las hojas están en el mismo nivel, el cual es la altura h.
2 Los nodos tienen lı́mites inferiores y superiores para las llaves
que contienen. Los lı́mites se expresan en términos de un
entero fijo t ≥ 2 llamado el grado mı́nimo del árbol-B:
1 Cada nodo distinto a la raı́z debe tener al menos t − 1 llaves.
Cada nodo interno debe tener por lo menos t hijos. Si el árbol
no está vacı́o, la raı́z debe tener al menos una llave.
2 Cada nodo puede contener a lo sumo 2t − 1 llaves. Por lo
tanto, un nodo interno puede tener a lo sumo 2t hijos.
Podemos decir que un nodo está lleno si contiene
exactamente 2t − 1 llaves.

Roberto Abreu Árboles B


Almacenamiento de Data Jerárquica en Disco
Introducción a los Árboles-B Ejemplo: B-Tree grado 2
Operaciones Básicas

Un Árbol-B de altura 2 con 1,000,000,000 de llaves.

Roberto Abreu Árboles B


Almacenamiento de Data Jerárquica en Disco
Introducción a los Árboles-B Ejemplo: B-Tree grado 2
Operaciones Básicas

Árbol 2-3-4

Es el árbol de menor grado, t = 2


Cada nodo tiene a lo sumo 2t − 1 = 2(2) − 1 = 3llaves

Roberto Abreu Árboles B


Almacenamiento de Data Jerárquica en Disco
Introducción a los Árboles-B Ejemplo: B-Tree grado 2
Operaciones Básicas

Árbol 2-3-4

Es el árbol de menor grado, t = 2


Cada nodo tiene a lo sumo 2t − 1 = 2(2) − 1 = 3llaves
Es más conocido como árbol 2-3-4:
1 Un nodo de 1 llave tiene 2 hijos
2 Un nodo de 2 llaves tiene 3 hijos
3 Un nodo de 3 llaves tiene 4 hijos
Roberto Abreu Árboles B
Almacenamiento de Data Jerárquica en Disco
Búsqueda
Introducción a los Árboles-B
Inserción
Operaciones Básicas

Búsqueda

En vez de hacer decisiones de ”2-vı́as”, se hacen decisiones


multi-vı́as.
En cada nodo, hacemos decisiones de x.n + 1-vı́as.
Es una generalización del procedimiento de búsqueda en BSTs
y R-N.

Roberto Abreu Árboles B


Almacenamiento de Data Jerárquica en Disco
Búsqueda
Introducción a los Árboles-B
Inserción
Operaciones Básicas

Pseudocódigo

B-TREE-SEARCH(x, k)
1 i=1
2 while i ≤ x.n and k > k.keyi
3 . i=i+1
4 if i ≤ x.n and k == x.keyi
5 . return (x, i)
6 elseif x.leaf
7 . return NIL
8 else DISK-READ(x.ci )
9 . return B-TREE-SEARCH(x.ci , k)

Roberto Abreu Árboles B


Almacenamiento de Data Jerárquica en Disco
Búsqueda
Introducción a los Árboles-B
Inserción
Operaciones Básicas

Inserción
Notas
En BST > buscamos la posición de la hoja correspondiente
para hacer la inserción

Roberto Abreu Árboles B


Almacenamiento de Data Jerárquica en Disco
Búsqueda
Introducción a los Árboles-B
Inserción
Operaciones Básicas

Inserción
Notas
En BST > buscamos la posición de la hoja correspondiente
para hacer la inserción
No podemos hacer eso en árboles-B: no serı́a un árbol-B

Roberto Abreu Árboles B


Almacenamiento de Data Jerárquica en Disco
Búsqueda
Introducción a los Árboles-B
Inserción
Operaciones Básicas

Inserción
Notas
En BST > buscamos la posición de la hoja correspondiente
para hacer la inserción
No podemos hacer eso en árboles-B: no serı́a un árbol-B

Cómo Insertar
Insertamos siempre en hojas, nunca en nodos internos
Si la hoja está llena, dividimos la hoja llena (2t − 1 llaves)
por su llave mediana:
En dos nodos de t − 1 llaves.
La llave mediana se mueve al padre de la hoja
Si el padre también está lleno, se divide y esto se puede repetir
hasta llegar a la raı́z
Mientras buscamos, podemos ir dividiendo nodos
internos llenos según atravesamos el camino.
Roberto Abreu Árboles B
Almacenamiento de Data Jerárquica en Disco
Búsqueda
Introducción a los Árboles-B
Inserción
Operaciones Básicas

Dividiendo a Un Nodo

Cómo Dividir
En pocas palabras, se divide el nodo en dos y se acomoda el
valor mediano del nodo original dentro del padre.
Para dividir a una raı́z llena, hacemos primero a la raı́z hija del
nodo nuevo.
En todo caso, fijarse que el árbol crece en altura por uno,
siempre.

Roberto Abreu Árboles B


Almacenamiento de Data Jerárquica en Disco
Búsqueda
Introducción a los Árboles-B
Inserción
Operaciones Básicas

Operación: B-TREE-SPLIT-CHILD

Roberto Abreu Árboles B


Almacenamiento de Data Jerárquica en Disco
Búsqueda
Introducción a los Árboles-B
Inserción
Operaciones Básicas

Operación: B-TREE-INSERT

Roberto Abreu Árboles B


Almacenamiento de Data Jerárquica en Disco
Búsqueda
Introducción a los Árboles-B
Inserción
Operaciones Básicas

Operación: B-TREE-INSERT-NONFULL

Roberto Abreu Árboles B

You might also like