Sunteți pe pagina 1din 61

Universidad de Extremadura Centro Universitario de Mrida Departamento de Ingeniera en Sistemas Informticos y Telemticos.

rea de Lenguajes y Sistemas Informticos

Tema 2. Organizacin de ficheros indexados

Estructuras de Almacenamiento de la Informacin Curso 2010/2011

Situacin del tema


N Temario terico
Presentacin

H.
1

I
II

Conceptos bsicos sobre el almacenamiento de informacin


Organizacin de ficheros indexados

8
10 6 5

III Organizacin de ficheros directos: dispersin IV Organizacin de ficheros secuenciales: tratamiento de grandes ficheros

ndice y programacin

1 2 3 4 5

Organizacin de ficheros indexados


Introduccin ndice simple rboles Indexacin por clave secundaria ndices multi-atributos

H.
0,5 1,5 5,5 1 1,5

Organizacin de ficheros indexados


1. Introduccin 2. ndice simple
2.1. Caractersticas 2.2. Operaciones 2.3. ndices demasiado grandes para almacenarse en memoria 3.1 rboles 3.1 rboles 3.1 rboles 3.1 rboles 3.1 rboles Binarios AVL Paginados B B+

3. rboles

4. Indexacin por clave secundaria 5. ndices multi-atributos


5.1. Ficheros rejillas 5.2. rboles K-d 5.3. rbol Q

3. rboles
rboles binarios
Puede ser muy costoso mantener el ndice ordenado para que sea posible efectuar una bsqueda binaria. La bsqueda binaria en una lista clasificada puede expresarse como un rbol binario. Ejemplo:
AX CL DE FB FT HN JD KF NR PA RF SD TK WS YJ
KF FB CL AX DE FT HN JD NR PA RF TK SD WS YJ

3. rboles
rboles binarios

Si cada nodo se trata como un registro de longitud fija en el que los apuntadores contienen nmeros relativos de registro, podemos colocar la estructura de rbol en almacenamiento secundario

3. rboles
Raz = 9
Padre 0 FB 1 JD 2 RF 3 SD 4 AX 5 YJ H. Izq H Der. 10 -1 -1 6 -1 -1 8 -1 -1 13 -1 -1 Padre 8 HN 9 KF 10 CL 11 NR 12 DE 13 WS H. Izq 7 0 4 -1 -1 14 H. Der 1 3 12 -1 -1 5

6 PA 7 FT

11 -1

2 -1

14 TK

-1

-1

3. rboles
rboles binarios
Si llega una nueva llave no hay ms que ligarla como una nueva hoja del rbol. Supongamos que llega la llave EB
KF FB SD
0
Padre H Izq H. Der Padre H Izq. H Der.

FB JD RF SD AX YJ PA FT

10 -1 -1 6 -1 -1 11 -1

8 -1 -1 13 -1 -1 2 -1

8 9 10 11 12 13 14 15

HN KF CL NR DE WS TK EB

7 0 4 -1 -1 14 -1 -1

1 3 12 -1 15 5 -1 -1

CL
AX DE FT EB

HN
JD NR

PA
RF TK

WS
YJ

1 2 3 4 5

Raz = 9

6 7

3. rboles
rboles binarios
Los rboles binarios permiten mantener el orden sin un excesivo coste. El nmero mximo de accesos es log2(n) siendo n el nmero de elementos y estando el rbol equilibrado. El nmero medio de accesos ser log2(n)/2 Tienen el problema de que el rbol puede quedar no balanceado y puede degenerar en una lista (si los datos llegan ordenados).

3. rboles
rboles AVL (Equilibrados)
Para que el rbol sea efectivo, debe estar equilibrado. Adisson-Velskii y Laudi, propusieron un mtodo para equilibrar un rbol en altura (para cada nodo la diferencia de nodos entre cada subrbol es de como mucho 1) El rendimiento de un rbol equilibrado es 1.4xlog2(n+1). Los rboles AVL permiten como mximo una diferencia de niveles entre cada rama de como mucho 1. Cuando se efecta una operacin que modifica la estructura del rbol se comprueba si ste ha quedado balanceado.

3. rboles
rboles AVL (Equilibrados)
Para comprobar si el rbol est o no balanceado, se empieza a mirar las diferencias de niveles, a partir de los nodos que son padres de las hojas (el penltimo nivel del rbol). Si la diferencia de niveles es 1 0, subimos al nivel anterior, y as hasta llegar a la raz. Si en un subrbol, la diferencia de niveles es ms que 1, hacemos una serie de reajustes:

3. rboles
Rotacin derecha. Rotacin izquierda. Doble rotacin derecha. Doble rotacin izquierda.

3. rboles
Rotacin derecha.
De un rbol de raz (r) y de hijos izquierdo (i) y derecho (d), lo que haremos ser formar un nuevo rbol cuya raz sea la raz del hijo izquierdo, como hijo izquierdo colocamos el hijo izquierdo de i (nuestro i) y como hijo derecho construimos un nuevo rbol que tendr como raz, la raz del rbol (r), el hijo derecho de i (d) ser el hijo izquierdo y el hijo derecho ser el hijo derecho del rbol (d).

3. rboles
Rotacin izquierda.
De un rbol de raz (r) y de hijos izquierdo (i) y derecho (d), consiste en formar un nuevo rbol cuya raz sea la raz del hijo derecho, como hijo derecho colocamos el hijo derecho de d (nuestro d) y como hijo izquierdo construimos un nuevo rbol que tendr como raz la raz del rbol (r), el hijo izquierdo de d ser el hijo derecho (i) y el hijo izquierdo ser el hijo izquierdo del rbol (i). Precondicin : Tiene que tener hijo derecho no vaco.

3. rboles
Doble rotacin derecha.
Si la insercin se produce en el hijo derecho del hijo izquierdo del nodo desequilibrado (o viceversa) hay que realizar una doble rotacin derecha.

3. rboles
Doble rotacin izquierda.
Si la insercin se produce en el hijo izquierdo del hijo derecho del nodo desequilibrado (o viceversa) hay que realizar una doble rotacin izquierda.

3. rboles
rboles AVL (Equilibrados)
Ejemplos de rboles AVL

Ejemplos de rboles no AVL

3. rboles
rboles paginados Otra alternativa para conseguir un mayor rendimiento es la paginacin de los rboles: sustituir los nodos por pginas de forma que en lugar de considerar en cada nodo un nico elemento, consideraremos una pgina con muchos elementos. De esta forma se consigue un orden de O(logk(n)), siendo k el nmero de nodos que entran en una pgina. El nmero de accesos en estos rboles es de log k+1 n

3. rboles
rboles paginados

3. rboles
rboles paginados
Con no ms de dos desplazamientos podremos acceder a cualquiera de los 63 nodos del rbol. Si aadimos un nivel ms en el rbol: 64 pginas nuevas con 3 desplazamientos encontramos cualquiera de los 511 nodos. Con un nivel ms: con 4 desplazamientos encontramos cualquiera de los 4095 nodos. En una bsqueda binara necesitaramos hasta 12 desplazamientos.

3. rboles
rboles B. Antecedentes
Los rboles equilibrados tienen el inconveniente de que son difciles de reequilibrar pues hay que romper pginas, lo que es bastante complicado. Sabemos siempre cual ser la raz de cada subrbol, pero en el caso de que las llaves lleguen en orden aleatorio, puede que para que el rbol quede balanceado tengamos que dividir pginas de claves y an as no quedar balanceado completamente. Este problema surge porque estamos partiendo de inserciones en el rbol de arriba hacia abajo.

3. rboles
rboles B
La solucin a este problema lleg de mano de Bayer y McGreight que propusieron una metodologa para construir rboles equilibrados y paginados: los rboles B. Esta metodologa se basa en construir el rbol de abajo a arriba De esta forma las hojas estn siempre al mismo nivel La raz ser la que vaya emergiendo, en vez de fijarla y modificarla si es necesario para reequilibrar.

3. rboles
rboles B
En un rbol B cada pgina o nodo consiste en una secuencia ordenada de llaves y un conjunto de apuntadores. El nmero de apuntadores siempre excede en uno al nmero de llaves. Los rboles B se basan en que trabajamos con la pgina o nodo en memoria RAM, lo que nos permite tratar el rbol como una lista ordenada en la que podemos realizar bsqueda binaria. Llamaron orden del rbol B al nmero de nodos que caben en una pgina, el nmero mximo de hijos que puede tener una pgina (uno ms que el nmero de claves que puede tener).

3. rboles
rboles B. Ejemplo 1, insercin:
Supongamos un rbol de orden cuatro y una pgina vaca a la que llegan los siguientes valores 25, 32, 9, 47, 53, 12, 22, 31, 97, 83. Estos valores se van insertando en orden:

Pgina 1

25

32

3. rboles
rboles B
25, 32, 9, 47, 53, 12, 22, 31, 97, 83.

3 1

25

12

22

32

47

53

3. rboles
25, 32, 9, 47, 53, 12, 22, 31, 97, 83.
3 1

25

32

12
3 1

22 25
2 2

31 32
4

47 53
4

53

97

12

22

31

47

83

97

3. rboles
rboles B. Ejemplo 2, insercin: insertar en un rbol B de orden 4.
CSDTAMPIBWNGURKEHOLJYQZFXV

3. rboles

3. rboles
rboles B. Bsquedas en un rbol B
debemos empezar buscando en los separadores de la pgina raz de nuestro ndice. Cuando encontremos un separador con valor mayor que la clave que buscamos, el apuntador a seguir ser el de su izquierda. Si la raz era una pgina interna, este apuntador nos llevar a otra pgina de ndice, donde debemos repetir el mismo proceso, y as sucesivamente hasta que lleguemos a una pgina de tipo hoja.

3. rboles
rboles B Propiedades de los rboles B
Un rbol B de orden m debe satisfacer estas propiedades: 1. Todos los nodos salvo la raz y las hojas deben poseer al menos (m/2) hijos y a lo sumo m hijos. (Si resultado no entero el entero mayor) 2. Un nodo con k hijos tiene k-1 claves. 3. La raz debe poseer al menos dos hijos y a lo sumo m. 4. Las hojas deben tener al menos (m/2) - 1 claves y a lo sumo m-1 claves. (Si resultado de m/2 no entero el entero mayor) 5. Todas las hojas estn al mismo nivel. Consideremos un rbol con m=6. Tendrn como poco 3 hijos y como mucho 6 hijos. Cada nodo tendr 2 claves y como mucho 5 claves.

3. rboles
rboles B Borrado en un rbol B
Las propiedades de un rbol B deben mantenerse tambin cuando se eliminen llaves del rbol. La eliminacin de llaves puede causar situaciones distintas:
Caso 1: Caso 2: Caso 3: hoja por Caso 4: hoja por Caso 5: Caso 6: Eliminar una llave de una pgina hoja. Eliminar una llave de una pgina que no es hoja. Eliminacin de una llave en una hoja que deje a esta debajo del mnimo de llaves. Redistribucin Eliminacin de una llave en una hoja que deje a esta debajo del mnimo de llaves. Concatenacin. Propagacin de la insuficiencia. La altura del rbol disminuye.

3. rboles
rboles B Caso 1. Eliminar una llave de una pgina hoja.
La eliminacin de la llave NO provoca que el contenido de la pgina caiga por debajo del mnimo de llaves. Una pgina hoja contiene por lo menos (m/2) 1 llaves y no ms de m-1 llaves. La eliminacin consiste en eliminar la llave y reacomodar dentro de la pgina las llaves que hay dentro.

3. rboles
rboles B Caso 1:La eliminacin de la llave J NO provoca que el contenido de la pgina 5 caiga por debajo del mnimo de llaves:

Una pgina hoja contiene por lo menos (m/2) 1 = 2 llaves y no ms de m-1 = 5 llaves. Por lo tanto la eliminacin consiste en eliminar la llave J y reacomodar dentro de la pgina las llaves que hay dentro.

3. rboles
rboles B Caso 2. Eliminar una llave de una pgina que no es hoja.
Hay que reorganizar el rbol para mantener su estructura. Una solucin es intercambiarla por su sucesor inmediato. Tras el intercambio se realiza el borrado en el nodo hoja.

3. rboles
rboles B Caso 2: Eliminar la llave M que est en la raz. Hay que reorganizar el rbol para mantener su estructura. Se intercambiara la llave M por la N y luego se borrara la M. Deja las llaves del rbol en orden, ya que las llaves que estn a la derecha de N son mayores que ella.

3. rboles
rboles B Caso 3. Eliminacin de una llave en una hoja que deje a esta hoja por debajo del mnimo de llaves. Redistribucin.
Ocurre insuficiencia en la pgina donde se realiza el borrado. Redistribuir las llaves entre las pginas hermanas. La redistribucin ocasiona un cambio en la llave que est en la pgina padre para que contine actuando como separador.

3. rboles
Rebalanceo.
Hallar un hermano para el nodo deficiente que tenga ms del mnimo nmero de elementos y redistribuir los elementos entre los hermanos para que todos tengan ms del mnimo.
Si el nodo hermano inmediato de la derecha del nodo deficiente tiene ms del mnimo numero de elementos, se escoge el valor medio entre el separador y ambos hermanos como nuevo separador y se coloca como padre. Elementos restantes a nodos hijos izquierdo y derecho.

3. rboles
Si el nodo hermano inmediato de la derecha del nodo deficiente tiene el mnimo nmero de elementos examinar el nodo hermano inmediato izquierdo. Repetir proceso anteriormente explicado con el nodo derecho.

3. rboles
rboles B Caso 3: Eliminacin de la llave R de la pgina 7. En este caso, moveramos U y V a la pgina 7 y se promociona W.

3. rboles
rboles B Caso 4. Eliminacin de una llave en una hoja que deje a esta hoja por debajo del mnimo de llaves. Concatenacin.

No puede resolverse por redistribucin, ya que las pginas vecinas no tienen suficientes llaves para repartir en dos pginas. Utilizamos la concatenacin, combinando las dos pginas y la llave de la pgina padre para hacer una sola pgina completa. La concatenacin es lo inverso a la divisin,

La concatenacin puede causar insuficiencia en la pgina padre.

en el caso de la divisin se promueve una llave en el caso de la concatenacin implica el hecho del descenso de llaves

3. rboles
rboles B Caso 4: al eliminar A y concatenar, se produce insuficiencia en la llave padre concatenacin de nuevo.

3. rboles
rboles B Caso 5. Propagacin de la insuficiencia.
La concatenacin puede causar insuficiencia en la pgina padre. Esta insuficiencia puede propagarse a travs de la pgina padre y, sucesivamente, a pginas antecesoras

3. rboles
rboles B Caso 5: la prdida de la D de la pgina padre (al llevarla al nivel de hoja), crea de nuevo insuficiencia.
La insuficiencia no puede resolverse por redistribucin Volvemos a utilizar la concatenacin.

3. rboles
rboles B Caso 6. La altura del rbol disminuye.
La concatenacin llega hasta la raz del rbol B. La concatenacin de las dos ramas que cuelgan de la raz absorben la ltima clave de la pgina raz. El rbol disminuye en altura desapareciendo la pgina raz. La nueva pgina raz del rbol B ser la pgina fruto de la concatenacin.

3. rboles
rboles B Caso 6: La concatenacin de las pginas 1 y 2 absorbe la nica llave de la pgina raz, disminuyendo en un nivel la altura del rbol.

3. rboles
rboles B. Resumen del borrado 1. Si la llave que se va a eliminar no est en una hoja, intercambiarla por su sucesor inmediato, el cual est en una hoja. 2. Eliminar la llave. 3. Si la hoja contiene el nmero mnimo de llaves, no se requiere ninguna accin adicional. 4. Si la hoja contiene menos de las llaves mnimas, se examinan los hermanos izquierdo y derecho.
Si un hermano tiene ms del mnimo de llaves: redistribucin. Si ninguno de los hermanos tiene ms del mnimo: se concatenan las dos hojas y la llave de en medio del padre a una hoja.

5. Si las hojas se concatenaron, aplicar 3-6 al padre. 6. Si se elimina la ltima llave de la raz, la altura del rbol decrece.

3. rboles
rboles B+ Los ficheros secuenciales indizados han de permitir el acceso a los registros de dos formas:
Por el ndice, accediendo a un registro concreto. De forma secuencial, recorriendo todos los registros.

Un fichero indizado estar dividido en dos partes:


Conjunto secuencia Conjunto ndice

El rbol B+ es una estructura de archivo formada por un ndice en forma de rbol B (conjunto ndice) y un conjunto secuencia.

3. rboles
rboles B+. El conjunto secuencia.
El bloque es la unidad bsica de entrada/salida, y cuando se lee o se escribe, se lee o escribe un bloque entero. Al cargar un bloque en RAM podemos manejar los registros de una forma ms rpida. En cada bloque se guardar un campo de unin que apunte al bloque siguiente y al precedente, de forma que entre si estn doblemente enlazados.

3. rboles
rboles B+ Las inserciones y borrados en los bloques pueden realizarse igual que se hace en los rboles B, de forma que si un bloque presenta insuficiencia, puede resolverse de la misma forma que se hace en los rboles B.
Si un nodo vecino est medio lleno, se pueden concatenar los dos nodos, y se libera uno para que se pueda usar de nuevo. Si los nodos adyacentes estn llenos hasta ms de la mitad, los registros pueden redistribuirse entre los nodos para hacer una distribucin ms equilibrada.

3. rboles
rboles B+. El conjunto ndice.
El conjunto ndice es el que nos va a decir dnde tenemos que buscar para encontrar una clave determinada dentro del conjunto secuencia. Podemos utilizar un rbol B para almacenar el conjunto ndice. El rbol B y el conjunto secuencia forman una estructura de archivo llamada rbol B+.

3. rboles
rboles B+
No hay necesidad de almacenar llaves reales en el ndice, podemos almacenar slo separadores. Por ejemplo: lvarez--Gmez Gutirrez--Martnez

Posibles separadores: Gon, Gonzlez, Guadalupe, Gum...

Si el conjunto ndice contiene separadores (los ms cortos) en lugar de almacenar copias de las llaves enteras, se denomina ndice de prefijos simples. El rbol B (que almacena prefijos simples) y el conjunto secuencia forman una estructura llamada rbol B+ de prefijos simples.

3. rboles
rboles B+ Diferencia entre rbol B+ de prefijos simples y un rbol B+ sencillo: esta ltima estructura no implica el uso de prefijos como separadores sino que los separadores del conjunto ndice son copias de las llaves reales.

3. rboles
Generar el rbol b+ de orden 3 con las claves: 90, 60, 55, 70, 65, 30, 10 y 69.

3. rboles

3. rboles

3. rboles
rboles B+. Rendimiento.
Supongamos que tenemos bloques de tamao 2k, con un tamao de clave de 8 bytes y que el apuntador ocupa 4 bytes. El tamao del registro es de 200 bytes. Cul es el factor de bloque (el nmero mximo de registros que caben en un bloque)?

Bk _ fr

Bk _ sz Re g _ sz

2048bytes 10reg bytes 200 reg

Sabemos que en cada nodo hay m apuntadores de 4 bytes, m-1 claves de 8 bytes e informacin de control, Cul sera el orden del rbol (m)?
4m 8 m 1 m 2048 2048 8 12 m 170 m 171.33

3. rboles
rboles B+. Rendimiento.
Consideraremos que el orden de ocupacin es de aprox. el 70%: m=170, el 70% de 170 es 118. Nivel Nodos Tamao

Raz
2 3 4

1
118 118x118=13.924 1183 = 1,6 millones

2k
118x2K = 236K 13.924x2K = 27 MB ....

* cada nodo tiene 118 hijos

Consideramos que nivel 4 son las hojas

Los dos primeros niveles ocupan 236+2=238k y los podemos tener en memoria RAM. Con esto slo hacemos dos accesos a disco (para el 3er y 4 nivel).

3. rboles
rboles B+. Rendimiento.
Si consideramos que las hojas tambin estn al 70%:
10 reg 0.7 bloque 7 reg bloque

118 3 7 11501224 reg

11501224 reg 200

bytes reg

2300244800 bytes 2.14 Gb

2.14 Gb de datos puramente dichos sin considerar ese 30% de desperdicio. Con 238k de RAM podemos indexar un fichero de 2,30 Gb de datos llegando a cualquier dato en 2 accesos a disco.

3. rboles
rboles B+. Rendimiento.
Una frmula para estimar cuntos bloques direccionar con una memoria RAM determinada es:

mem

bk (fo) 2

donde MEM = RAM en bloques, bk = n de bloques y fo = fan-out medio (descendencia media).

3. rboles
rboles B+. Rendimiento.
Para el ejemplo anterior y con 10 Mb de RAM:

kb 10Mb 10Mb *1024 10240Kb Mb


10240Kb Kb 2 registro 5120registros.

mem

bk 2 fo

5120

bk 118 2

bk

71290880 registros

kb 71290880 reg 2 reg

1402581760 kb 135 .97 Gb

3. rboles
Si tuviramos 10 Mb RAM para tener parte del ndice, podemos acceder en 2 accesos en memoria a aproximadamente 70 millones de registros, lo que se traduce en 135.97 Gb de datos.

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