Upload
rafael-martinez
View
68
Download
0
Embed Size (px)
DESCRIPTION
indices
Citation preview
Estructuras de ndices
Traduccin: Dra. Maria del Pilar Angeles
IntroduccinLos registros se organizan en bloques dealmacenamiento secundario.
Los registros tienen una direccin ya sea lgica o fsica.
Sin embargo, las consultas SQL queries referencian avalores de atributos, no direcciones de registro.
SELECT * FROM R WHERE a=10;
Cmo encontrar los registros que tienen cirtos valoresen sus atributos?
Introduccin
recordID1
recordID2. . .
valor
valor
valorRegistros
que corresponden
Al indice
indice
bloques
conteniendo
registros
valor
Estructuras de indices
Conceptos BsicosLas estructuras de almacenamiento consisten dediferentes tipos de archivos:
Archivos de datos p.e., los registros de una tabla.
Llave de bsqueda: Uno o mas atributos para los cualesnosotros queremos realizar bsquedas eficientes.
Archivos de indices para la busqueda de una llave en unarchivo de datos, los valores de la llave de busqueda seasocian con apuntadores a un identificador de algunregistro (recordID = rid) que tiene esta valor.
Archivo secuencial: Archivos que son accesados demanera secuencial. En la mayoria de los casos, losregistros estan ordenados de acuerdo con su llaveprimaria a dichos archivos se les llama ordenados.
Archivo secuencial
2010
4030
6050
8070
10090
Estructuras de indices Conceptos Bsicos
Existen tres alternativas para entradas de datos k*:
a) Que corresponda al registro con valor de llave k
b) Entrada de forma
c) Entrada de forma
La opcin depende de la tcnica utilizada para el
indexado para localizar las entradas k*
Existen dos tcnicas muy utilizadas para el indexado:
- estructuras de rbol
- tablas hash.
Estructuras de indices Conceptos Bsicos
Indice denso: Una entrada en indice por cada registro delarchivo de datos.
Indice disperso (Sparse index): Existen entradas de indicessolamente para algunos registros en el archivo de datos.Tipicamente, una enrada por bloque del archivo de datos.
Indice primario Determina la ubicacion de los registros enel archivo de datos, p.e. el orden de las entradas de indicees la misma que la de los registros de datos. clusteredindex en Sybase
Indice secundario Este indice no determina la ubicacinfisica de los datos. non clustered index en Sybase
Puede tener un indice primario, pero multiples indicessecundarios
Estructuras de indices Conceptos Bsicos
Archivo Secuencial
2010
4030
6050
8070
10090
Indice denso
10203040
50607080
90100110120
Estructuras de indices Conceptos Bsicos
Archivo secuencial
2010
4030
6050
8070
10090
Indice disperso
10305070
90110130150
170190210230
Estructuras de indices Conceptos Bsicos
1010
2010
3020
3030
4540
10203040
Valores de llave duplicados ndice disperso entrada de datos para la primer llave del bloque
Estructuras de indices Conceptos Bsicos
Indice disperso:
- Requiere menos espacio para indice por registro
- Puede mantener mas de un indice en memoria.
- Necesario para indices secundarios.
Indice denso:
- Puede determinar si existe algun registro sin
necesidad de accesar a los datos
- Es mejor para las inserciones.
Estructuras de ndices Conceptos Bsicos
El archivo de indices puede hacerse muy grande p.e. al
menos una dcima del tamao del archivo de datos
para archivos con 10 atributos de longitud igual.
Para acelerar el acceso por indices, agregar un indice de
segundo nivel al inicio del indice de primer nivel,. . .
El primer nivel puede ser denso, los dems niveles
sern dispersos.
Estructuras de ndices Conceptos Bsicos
Archivo secuencial
2010
4030
6050
8070
10090
Disperso 2do nivel
10305070
90110130150
170190210230
1090170250
330410490570
Estructuras de ndices Conceptos Bsicos
La estructura del indice necesita soportar consultas por igualdad y
consultas por rango.
Consultas por igualdad: se especifica un valor de atributo
p.e. docID = 100, o edad = 18.
Consulta por rango: se especifica un rango de valores de un atributo,
p.e. 30
ISAM
ISAM = Index Sequential Access Method
Metodo de acceso secuencial por indice
Jerarquia de archivos de indices (estructura de rbol)
No-hoja
bloques
bloques
Bloque
overflowBloques primarios
hoja
ISAM
Los bloques hoja contienen entradas de datos.
Los bloques medios (no hoja) contienen pares de tipo
(ki,pi), donde ki es un valor de llave de bsqueda y pi un
apuntador al (primero de los) registros con ese valor de
llave.
P0
K1 P 1
K 2 P 2K
mP m
ISAM
Creacin de Archivo
Los bloques hoja (de datos) alojados secuencialmente,
clasificados segun la llave de bsqueda.
Despues se alojan los bloques medios, despus se
alojan bloques de desborde (overflow).
Las entradas de los indices son de la forma: ; estas direccionan la
busqueda de entradas de datos, los cuales estan en los
bloques hoja.
ISAM
10* 15* 20* 27* 33* 37* 40* 46* 51* 55* 63* 97*
20 33 51 63
40
Raiz
Ejemplo
ISAM
Operaciones con indices
BsquedaEmpieza en la raiz; realiza comparacionescon la llave para llegar a la hoja.
InsercinEncuentra la entrada que apunta a la hoja de datos a la que pertenece y la pone ah.
BorradoEncuentra y remueve la hoja, si esto deja un bloque de desborde (overflow) lo desaloja.
Traduccin: Dra. Maria del Pilar Angeles
ISAMEjemplo
Despus de insertar 23*, 48*, 41*, 42*
10* 15* 20* 27* 33* 37* 40* 46* 51* 55* 63* 97*
20 33 51 63
40
Raiz
23* 48* 41*
42*
Bloques de
desborde
primarios
bloques
De ndice
De datos
Bloques
ISAM
Ejemplo
Despus de borrar 42*, 51*, 97*.
51* aparece a nivel de indice pero no a nivel hoja.
10* 15* 20* 27* 33* 37* 40* 46* 55* 63*
20 33 51 63
40
Raiz
23* 48* 41*
Traduccin: Dra. Maria del Pilar Angeles
ISAM
Discusin
Inserciones / borrados afectan solamente pginas hoja. rbol de estructura esttica
Un rbol se puede degenerar a una lista lineal de bloques dedesborde.
En ste caso, ISAM pierde todas las ventajas comparado conun simple archivo de indices no jerrquico.
Podemos mantener una estructura de arbol balanceadodinmicamente bajo inserciones y borrados?
Traduccin: Dra. Maria del Pilar Angeles
rboles B -- B-Trees
Introduccin
El nodo de un arbol corresponde a un bloque.
Los rboles B sin balanceados, es decir, todas las hojas seencuentran al mismo nivel.
Los rboles V garantizan una utilizacin de espacio mnima.
n (orden): Nmero mximo de llaves por nodo,el mnimo nmero de llaves es n/2.
Excepcin: la raz puede tener una sola llave.
Tiene m + 1 apuntadores en cada nodo y m nmero de llaves.
Traduccin: Dra. Maria del Pilar Angeles
rboles BIntroduccin
Entradas de ndices
(nodos medios)
Entradas de datos
(nodos hoja)
Nodos hoja estn ligados en orden secuencial
Esta variante del arbol B es normalmente referido como rbol b +
rbol BIntroduccin
Formato del nodo: (p,k1, . . ., pn,kn,pn+1)pi: apuntador, ki: llave de bsqueda
Nodo with m apuntadores tiene m hijos y correspondientessubrboles.
La entrada n+1del rbol tiene solamente apuntados. A nivel hoja, esteapuntador referencia al siguiente nodo hoja.
Propiedad de llave de bsqueda: El i-simo subrbol contiene entradasde datos con llave k < ki, el i+1subrbol contiene entradas de datoscon llave k >= ki.
Traduccin: Dra. Maria del Pilar Angeles
rbol BEjemplo
Raiz n = 3
100
120
150
180
30
3 5 11
30
35
100
101
110
120
130
150
156
179
180
200
Ejemplo
llaves llaves llaves llaves
< 57 57 k
Ejemplo
del nodo no hoja
a la siguiente
hoja en secuencia
57
81
95
Haci
a e
l re
gis
tro
con lla
ve 5
7
Haci
a e
l re
gis
tro
con lla
ve 8
1
Haci
a e
l re
gis
tro
con lla
ve 8
5
Nodo hoja
rbol B
Utilizacin de espacio
nodo lleno min. nodo
No hoja
Hoja 120
150
180
30
3 5 11
30
35
Cuenta
aunque e
ste n
ulo
n = 3
rbol B
Consultas por igualdad
Para buscar por una llave k, empieza desde la raiz.
En un nodo dado, enconrtar la llave mas cercana ki y seguir hacia el apuntador izquierdo (pi) o derecho (pi+1) dependiendo de la comparacion de k y ki.
Continuar, hasta que se alcance el nodo hoja.
Explora una ruta de la raiz al nodo hoja
La altura del Arbol B es O(log n/2 N) donde N es el numero de registros indexados
Complejidad de tiempo de ejecucin O(log N)
rbol B
Traduccin: Dra. Maria del Pilar Angeles
Inserciones
Siempre insertar en la hoja correspondientes.
El rbol crece de abajo hacia arriba.
Existen cuatro posibles casos:
1.- Existe espacio disponible en la hoja,
2.- Existe desborde en la hoja,
3.- Existe desborde en nodo no-hoja,
4.- Se requiere una nueva raiz.
rbol B
Inserciones
Caso 1: Existe espacio disponible en la hoja
3 5 11
30
31
30
100
32
Inserta llave 32
n = 3
rbol B
Inserciones
Caso 2: Existe desborde en la hoja
El nodo desbordado se Divide en dos de tamaoCasi igual y se copia la mitad (separando) la llave en un nodo padre
3 5 11
30
31
30
100
3 5
7
7
n = 3
Inserta llave7
rbol B
Inserciones
Caso 3: Desborde de nodo no hoja
El nodo desbordado se
divides y ubica la siguientemitad arriba hacia el nodo padre
100
120
150
180
150
156
179
180
200
160
180
160
179
Inserta llave160
rbol B
Inserciones
Caso 4: Nueva raiz
El corte se puede propagar hasta la raiz resultando en un
nueva raiz10
20
30
1 2 3 10
12
20
25
30
32
40
40
45
40
30nueva raiz
Insertar llave 45
rbol B
Borrados
Localizar el nodo hoja correspondiente.
Borrar la entrada especifcada.
Existen cuatro posibles casos:
1. El nodo hoja aun tiene entradas suficientes no hay problema
2. Unirse con un vecino (hermano),
3. Re-distribuir llaves,
4. Unirse o re-distribuirse en un nodo no hoja.
rbol B
Borrado
Caso 1: Unirse con un vecino (hermano)
Si el nodo queda casi vacio y
el nodo hermano aun tiene espacio,
unir los dos nodos
10
40
100
10
20
30
40
50
40
Borrar llave 50
n=4
rbol B
Borrado
Caso 3: Re-distribuir llaves,
Si el nodo queda casi vacioy el hermano tiene entradas extra,re-distribuir las entradasde los dos nodos
Borrar llave 50
n=4
10
40
100
10
20
30
35
40
50
35
35
rbol B
Borrados
Caso 4: Unirse o distribuirse en un nodo no-hojaBorrar llave37
n=4
40
45
30
37
25
26
20
22
10
141 3
10
20
30
4040
30
25
25
Nueva raiz
rbol B
rboles B en prctica
El concepto de Orden (n) fue reemplazado por el criterio prctico de un espacio ficiso (cuando menos medio lleno).
Los nodos medios tipicamente pueden contener muchas mas entradas que los nodos hojas.
Los registros de longitud variable y las llaves de bsqueda significan que diferentes nodos contendran diferente cantidad de entradas.
Aun con campos de longitud fijas, muchos registros con el mismo valor de llave (llaves duplicadas) pueden conducir a entradas de datos de
tamao variable.
rbol B