Upload
james-amao-alvarez
View
233
Download
1
Tags:
Embed Size (px)
DESCRIPTION
Indexación y Asociación en Bases de datos
Citation preview
Database System Concepts, 5th Ed.
Silberschatz, Korth and Sudarshan
See www.db-book.com for conditions on re-use
Indexacin y Asociacin
Silberschatz, Korth and Sudarshan12.2Database System Concepts - 5th Edition, Oct 4, 2006
Capitulo 3: Indexacin y Asociacin
Conceptos Bsicos
ndices Ordenados
Archivos de ndices de rbol B+
Archivos con ndices de rbol B
Asociacin esttica
Asociacin dinmica
Comparacin de la Indexacin ordenada y la Asociacin
Definicin de ndices en SQL
Accesos multiclave
Silberschatz, Korth and Sudarshan12.3Database System Concepts - 5th Edition, Oct 4, 2006
Conceptos bsicos
El mecanismo de Indexado es utilizado para el acceso rpido a datos
solicitados.
Ejemplo., ndice de libros
Los atributos o conjunto de atributos usados para buscar en un
archivo se llaman claves de bsqueda
Un Archivo de ndice consiste en registros (llamados Entrada de
ndices) de la forma:
Hay dos tipos bsicos de ndices:
ndices ordenados: Estos ndices estn basados en una
disposicin ordenada de los valores.
ndices asociativos: (hash ndices). Estos ndices estn basados
en una distribucin uniforme de los valores a travs de una serie
de cajones (buckets). El valor asignado a cada cajn est
determinado por una funcin, llamada funcin de asociacin (hash
function).
Clave de bsqueda Puntero
Silberschatz, Korth and Sudarshan12.4Database System Concepts - 5th Edition, Oct 4, 2006
Criterios de validacin de las tcnicas de Indexado
Tipos de acceso
bsqueda de registros con un valor concreto en un atributo
buscar los registros cuyos atributos contengan valores en un
rango especificado.
Tiempo de acceso
Tiempo de insercin
Tiempo en buscar un espacio libre
Tiempo en actualizar la estructura
Tiempo de borrado
Tiempo en buscar el elemento a eliminar
Tiempo en actualizar la estructura
Espacio adicional requerido
Silberschatz, Korth and Sudarshan12.5Database System Concepts - 5th Edition, Oct 4, 2006
ndices ordenados
Un ndice ordenado almacena de manera ordenada los valores de
las claves de bsqueda, y asocia a cada clave los registros que
contienen esa clave de bsqueda.
Si el archivo que contiene los registros est ordenado
secuencialmente, el ndice cuya clave de bsqueda especifica el
orden secuencial del archivo es el ndice primario.
Los ndices primarios tambin se llaman ndices con Agrupacin
(clustering Index)
La clave de bsqueda de un ndice primario es normalmente la
clave primaria, aunque no es as necesariamente.
Los ndices cuyas claves de bsqueda especifican un orden diferente
del orden secuencial del archivo se llaman ndices secundarios o
ndices sin agrupacin (non clustering Index).
Los archivos que estn ordenados secuencialmente segn alguna
clave de bsqueda, estos archivos con ndice primario segn una
clave de bsqueda se llaman Archivos secuenciales indexados.
Silberschatz, Korth and Sudarshan12.6Database System Concepts - 5th Edition, Oct 4, 2006
ndice de archivos densos
ndice denso. Aparece un registro ndice por cada valor de la clave de
bsqueda en el archivo.
El registro ndice contiene el valor de la clave de bsqueda y un puntero al
primer registro con ese valor de la clave de bsqueda. El resto de los registros
con la misma clave de bsqueda se almacena consecutivamente despus del
primer registro dado que son archivos secuenciales indexados en base a la
clave de bsqueda.
Sobre archivos secuenciales indexados
Silberschatz, Korth and Sudarshan12.7Database System Concepts - 5th Edition, Oct 4, 2006
ndice de archivos dispersos
ndice disperso. Slo se crea un registro ndice para algunos de los
valores.
Para localizar un registro se busca la entrada del ndice con el valor ms
grande que sea menor o igual que el valor que se est buscando.
Se empieza por el registro apuntado por esa entrada del ndice y se
contina con los punteros del archivo hasta encontrar el registro deseado
Sobre archivos secuenciales indexados
Silberschatz, Korth and Sudarshan12.8Database System Concepts - 5th Edition, Oct 4, 2006
ndice de archivos dispersos (Cont.)
Comparando con los ndices densos:
Uso de menos espacios, y menos sobrecarga de mantenimiento
para insertar y eliminar.
Generalmente mas lento que el ndice denso en localizar registro.
Existe un compromiso que el diseador del sistema debe mantener
entre el tiempo de acceso el espacio adicional requerido.
Buen compromiso: Es tener un ndice disperso con una entrada del
ndice por cada bloque del archivo, Correspondiente al menor valor de
la clave de bsqueda en el bloque.
Sobre archivos
secuenciales
indexados
Silberschatz, Korth and Sudarshan12.9Database System Concepts - 5th Edition, Oct 4, 2006
ndice multinivel
Si el ndice primario no cabe en la memoria principal, el acceso
a las entradas de ndice se hacen costosas.
Solucin: Guardar el ndice primario en el Disco como un
archivo secuencial y construir un ndice disperso sobre l.
ndices externos un ndice disperso del ndice primario.
ndices internos archivo del ndice primario.
Si un ndice externo es demasiado inadecuado en la memoria
principal, todava podemos crear otro nivel de ndice y as
sucesivamente.
Los ndices de todos los niveles deben ser actualizados en la
insercin o eliminacin en el archivo.
Silberschatz, Korth and Sudarshan12.10Database System Concepts - 5th Edition, Oct 4, 2006
ndice multinivel (Cont.)
Sobre archivos
secuenciales
indexados
Silberschatz, Korth and Sudarshan12.11Database System Concepts - 5th Edition, Oct 4, 2006
Actualizacin del ndice: Borrado
Si el registro borrado es el nico registro en el archivo con su particular
clave de bsqueda, la clave de bsqueda es borrado del ndice tambin.
Borrado del ndice en un nivel simple:
ndice denso Borrado de la clave de bsqueda similar a la eliminacin de un registro de Archivo.
ndice disperso
si una entrada para la clave de bsqueda existe en el ndice, se
elimina mediante la sustitucin de la entrada en el ndice con el
siguiente valor de clave de bsqueda en el archivo (en orden de
bsqueda de clave).
Si el siguiente valor de clave de bsqueda ya tiene una entrada
de ndice, se suprime la entrada en lugar de ser sustituido.
Sobre archivos
secuenciales
indexados
Silberschatz, Korth and Sudarshan12.12Database System Concepts - 5th Edition, Oct 4, 2006
Actualizacin del ndice: Insercin
Insercin en un nivel simple de ndice:
Primero se realiza una bsqueda usando el valor de la clave de
bsqueda del registro a insertar. Luego se emprenden las
siguientes acciones:
ndices densos Si el valor de la clave de bsqueda no aparece en el ndice, el sistema inserta en ste un registro ndice con el
valor de la clave de bsqueda en la posicin adecuada.
ndices dispersos Se asume que el ndice almacena una entrada por cada bloque. Si el sistema crea un bloque nuevo,
inserta el primer valor de la clave de bsqueda (en el orden de la
clave de bsqueda) que aparezca en el nuevo bloque del ndice.
Los algoritmos de insercin y borrado para los ndices multinivel se
extienden de manera sencilla a partir del esquema descrito
anteriormente.
Sobre archivos secuenciales indexados
Silberschatz, Korth and Sudarshan12.13Database System Concepts - 5th Edition, Oct 4, 2006
ndices Secundarios
Con frecuencia, se quiere encontrar todos los registros cuyos
valores en un determinado campo (que no es la clave de bsqueda
del ndice primario) cumplan con alguna condicin.
Ejemplo 1: En la relacin cuenta los registros se almacenan de
forma secuencial por nmero de cuenta, es posible que desea
buscar todas las cuentas de una sucursal en particular.
Ejemplo 2: Del anterior, queremos encontrar todas las cuentas
con un saldo o rango de saldos.
No es recomendable hacer una bsqueda registro por registro.
Podemos tener un ndice secundario con un registro de ndice para
cada valor de clave de bsqueda.
Silberschatz, Korth and Sudarshan12.14Database System Concepts - 5th Edition, Oct 4, 2006
Ejemplo de ndice Secundario
El registro de ndices apunta a un cajn que contiene los punteros a
todos los registros actuales con un valor particular de clave de
bsqueda esto cuando la clave de bsqueda no es clave candidata.
(nivel adicional de referencia)
Los ndices secundarios tienen que ser densos.
ndice secundario en el campo saldo de la relacin cuenta
Silberschatz, Korth and Sudarshan12.15Database System Concepts - 5th Edition, Oct 4, 2006
ndices Primarios y Secundarios
Los ndices ofrecen beneficios sustanciales en la bsqueda de
registros.
PERO: la actualizacin de los ndices provoca una sobrecarga en la
base de datos - cuando se modifica un archivo, todos los ndices en el
archivo debe ser actualizado,
Escanear secuencialmente utilizando ndices Primarios es eficiente,
pero escaneando secuencialmente utilizando ndices secundarios
resulta costoso.
Cada acceso al registro necesita traer un nuevo bloque de disco
Traer un bloque requiere de 5 a 10 milisegundos.
Comparado con 100 nanosegundos para el acceso a memoria.
Silberschatz, Korth and Sudarshan12.16Database System Concepts - 5th Edition, Oct 4, 2006
Archivo de ndice de rbol B+
Desventajas de archivos secuenciales de ndices
Degradacin del rendimiento segn crece el archivo, as mismo muchos bloques de desbordamiento son creados.
Necesariamente se debe reorganizar peridicamente todo el archivo.
Ventajas de Archivo de ndices de rbol B+:
Pequea reorganizacin automtica por si misma, Estos ndices mantienen su eficiencia a pesar de la insercin y borrado de datos.
No es necesario la reorganizacin del todo el archivo para mantener el rendimiento.
(Menores) desventajas de rbol B+:
Sobre carga extra al insertar y eliminar, espacio de sobrecarga
Mayores ventajas que desventajas de los rbol B+
Los rbol B+ son extensamente utilizados.
EI ndice de rbol B+ es una alternativa para archivos de indices secuenciales.
Silberschatz, Korth and Sudarshan12.17Database System Concepts - 5th Edition, Oct 4, 2006
Archivo de ndice de rbol (Cont.)
Los caminos de la raz a cada hoja del rbol son de la misma
longitud
Cada nodo que no es la raz o una hoja tiene entre n/2 y n hijos,
donde n es fijo para cada rbol en particular.
Un nodo Hoja tiene entre (n1)/2 y n1 valores clave
Casos especiales:
Si la raz no es una hoja, entonces la raz tiene al menos 2
hijos.
Si la raz es una hoja (No hay otro nodo en el rbol). La raz
puede tener entre 0 y (n1) valores clave.
Un rbol B+ es una rbol balanceado que satisface las siguientes propiedades:
Silberschatz, Korth and Sudarshan12.18Database System Concepts - 5th Edition, Oct 4, 2006
Estructura de rbol B+
Nodo tpico:
Ki representa a los valores de claves de bsqueda
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 bsqueda en un nodo estn ordenados.
K1 < K2 < K3 < . . . < Kn1
Silberschatz, Korth and Sudarshan12.19Database System Concepts - 5th Edition, Oct 4, 2006
Nodos Hoja en el rbol B+
Para i = 1, 2, . . ., n1, el puntero Pi a punta o bien a un punto de un registro de archivo con una clave de bsqueda Ki, o bien a un cajn de
punteros cada uno de los cuales apunta a un registro del archivo con
valor de la clave de bsqueda Ki. La estructura cajn se usa solamente
si la clave de bsqueda no forma una clave primaria y si el archivo no
est ordenado segn la clave de bsqueda.
Si Li, Lj son nodos hojas y i < j, el valor de la clave de bsqueda de Li es
menos que el valor de clave de bsqueda de Lj.
Pn apunta al siguiente nodo hoja en orden al valor de la clave de
bsqueda.
Propiedades de un nodo hoja:
Silberschatz, Korth and Sudarshan12.20Database System Concepts - 5th Edition, Oct 4, 2006
Nodos internos (no hojas) del rbol B+
Los nodos internos del rbol B+ forman un ndice multinivel (disperso)
sobre los nodos hoja, para un nodo interno con m punteros sucede:
Todas las claves de bsqueda del sub rbol, Los cuales son
apuntados por P1 son menores que K1.
Para 2 i n 1, todas las claves de bsqueda del sub rbol los cuales son apuntados por Pi tienen valores mayores o iguales
que Ki1 y menores que Ki
Todas las claves de bsqueda del sub rbol, a los cuales Pnapunta tienen valores mayores o iguales a Kn1
El nmero de punteros de un nodo se llama grado de salida del
nodo.
Silberschatz, Korth and Sudarshan12.21Database System Concepts - 5th Edition, Oct 4, 2006
Ejemplo de rbol B+
rbol B+ para el archivo account (n = 3)
Silberschatz, Korth and Sudarshan12.22Database System Concepts - 5th Edition, Oct 4, 2006
Ejemplo de un rbol B+
Los Nodos hoja pueden tener entre 2 y 4 valores
((n1)/2 y n 1, con n = 5).
Los Nodos intermedios tienen entre 3 y 5 hijos ((n/2 y n
con n =5).
La raz puede tener al menos 2 hijos
rbol B+ para el archivo account (n = 5)
Silberschatz, Korth and Sudarshan12.23Database System Concepts - 5th Edition, Oct 4, 2006
Observaciones de rboles B+
Los nodos no hojas del rbol B+ forman una jerarqua de ndices
dispersos.
El rbol B+ contiene relativamente un numero pequeo de niveles
El Nivel debajo de la raz tiene al menos 2* n/2 valores
El siguiente Nivel tiene al menos 2* n/2 * n/2 valores
.. etc.
Si hay valores K clave de bsqueda en el archivo, la altura del
rbol no es ms que logn/2(K)
Por lo tanto las bsquedas se pueden realizar de forma eficiente.
Inserciones y eliminaciones en el archivo principal se puede manejar
de manera eficiente, ya que el ndice puede ser reestructurada en
tiempo logartmico.
Silberschatz, Korth and Sudarshan12.24Database System Concepts - 5th Edition, Oct 4, 2006
Consultas con rboles B+
Encontrar todos los registros con un valor de clave de bsqueda de k.
Silberschatz, Korth and Sudarshan12.25Database System Concepts - 5th Edition, Oct 4, 2006
Consultas con rboles B+ (Cont.)
Si hay K valores de la clave de bsqueda en el archivo, este camino
no ser ms largo que logn/2(K).
Generalmente un nodo se construye para tener el mismo tamao
que un bloque de disco, tpicamente son 4 kilobytes.
Y n esta tpicamente alrededor de 100 (40 bytes por entrada de
ndice).
Con 1 milln de valores de clave de bsqueda y n = 100
A lo sumo log50(1,000,000) = 4 accesos a nodos en una
bsqueda.
Comparando con un rbol binario equilibrado con 1 milln de valores
de clave de bsqueda se necesita alrededor de 20 accesos de nodos en una bsqueda.
Silberschatz, Korth and Sudarshan12.26Database System Concepts - 5th Edition, Oct 4, 2006
Actualizaciones en rboles B+: Insercin
1. Buscar un nodo hoja donde tendra que aparecer el valor de la clave
de bsqueda.
2. Si el valor de la clave de bsqueda ya aparece en el nodo hoja
1. Se inserta un nuevo registro en el archivo
2. Si es necesario, aadir un puntero al cajn
3. Si el valor de la clave de bsqueda no aparece
1. Se inserta el valor en el nodo hoja de tal manera que las claves
de bsqueda permanezcan ordenadas.
2. Luego insertamos el nuevo registro en el archivo y, si es
necesario, creamos un nuevo cajn con el puntero apropiado.
Silberschatz, Korth and Sudarshan12.27Database System Concepts - 5th Edition, Oct 4, 2006
Actualizaciones en rboles B+: Insercin (Cont.)
Si no hay sitio para insertar un valor de la clave de bsqueda, se tiene
que dividir el nodo en otros dos nodos.
En general, si tenemos n valores de la clave de bsqueda (los n 1 valores del nodo hoja ms el valor a insertar), pondremos [n/2] en el
nodo existente y el resto de valores en el nuevo nodo. El menor valor
de este nuevo nodo hay que insertarlo en el padre del nodo hoja
dividido.
La tcnica general para la insercin en un rbol B+ es determinar el
nodo hoja h en el cual realizar la insercin. Si es necesario dividir, se
inserta el nuevo nodo dentro del padre del nodo h. Si esta insercin
produce otra divisin, procederamos recursivamente o bien hasta
que una insercin no produzca otra divisin o bien hasta crear una
nueva raz.
Silberschatz, Korth and Sudarshan12.28Database System Concepts - 5th Edition, Oct 4, 2006
Actualizaciones en rboles B+: Insercin(Cont.)
rbol B+ Antes y despus de insertar Clearview
Silberschatz, Korth and Sudarshan12.29Database System Concepts - 5th Edition, Oct 4, 2006
Actualizaciones en rboles B+: Borrado
Usando la misma tcnica que para buscar, se busca el registro a
borrar y se elimina del archivo. Si no hay un cajn asociado con el
valor de la clave de bsqueda o si el cajn se queda vaco como
resultado del borrado, se borra el valor de la clave de bsqueda del
nodo hoja.
En general, para borrar un valor en un rbol B+ se realiza una
bsqueda segn el valor y se borra. Si el nodo es demasiado
pequeo, se borra desde su padre. Este borrado se realiza como una
aplicacin recursiva del algoritmo de borrado hasta que se alcanza la
raz, un nodo padre queda lleno de manera adecuada despus de
borrar, o hasta aplicar una redistribucin.
Para borrar un nodo hoja se tiene que borrar el puntero que le llega
desde su padre.
Silberschatz, Korth and Sudarshan12.30Database System Concepts - 5th Edition, Oct 4, 2006
Ejemplo de borrado en un rbol B+
Antes y despus de borrar Daimiel
Silberschatz, Korth and Sudarshan12.31Database System Concepts - 5th Edition, Oct 4, 2006
Ejemplo de borrado en un rbol B+ (Cont.)
Borrar Pamplona del resultado del ejemplo anterior
Silberschatz, Korth and Sudarshan12.32Database System Concepts - 5th Edition, Oct 4, 2006
Ejemplo de borrado en un rbol B+ (Cont.)
redistribuir
Silberschatz, Korth and Sudarshan12.33Database System Concepts - 5th Edition, Oct 4, 2006
Organizacin de archivos con rboles B+
Se resuelve la degradacin de las bsquedas en el ndice mediante
el uso de ndices de rbol B+ en el archivo.
Tambin se soluciona el problema de la degradacin al almacenar los
registros reales utilizando el nivel de hoja del rbol B+ para almacenar
los registros reales en los bloques.
La estructura del rbol B+ se usa no slo como un ndice, sino tambin
como un organizador de los registros dentro del archivo.
Los nodos hoja del rbol almacenan registros, en lugar de almacenar
punteros a registros.
El nmero mximo de registros que se pueden almacenar en un nodo
hoja es menor que el nmero de punteros en un nodo interno.
Se requiere que los nodos hoja estn llenos al menos hasta la mitad
Silberschatz, Korth and Sudarshan12.34Database System Concepts - 5th Edition, Oct 4, 2006
Organizacin de archivos con rboles B+ (Cont.)
La utilizacin del espacio es particularmente importante, ya que el
espacio ocupado por los registros es mucho mayor que el espacio
ocupado por las claves y punteros.
Se puede mejorar la utilizacin del espacio en un rbol B+ implicando a
ms nodos hermanos en la redistribucin durante las divisiones y
fusiones. La tcnica es aplicable a los nodos hoja y nodos internos.
Involucrar a dos hermanos en la redistribucin (evitar divisin /
fusin siempre que sea posible) y como resultado en cada nodo
tiene por lo menos entradas.
Ejemplo de la organizacin de un archivo con un rbol B +
3/2n
Silberschatz, Korth and Sudarshan12.35Database System Concepts - 5th Edition, Oct 4, 2006
ndices sobre cadena de caracteres
ndices de rboles B+ sobre atributos de tipo cadena plantea dos
problemas:
Las cadenas pueden ser de longitud variable.
Las cadenas pueden ser largas.
Produce una altura de rbol incrementada.
Comprensin del prefijo
Los valores clave en los nodos internos pueden ser prefijos de la
clave completa
Mantener suficientes caracteres para distinguir las entradas de
los subrboles separados por el valor de la clave
Ejemplo: Silas y Silberschatz pueden ser separados por Silb
Claves en el nodo hoja puede ser comprimido mediante el
intercambio de prefijos comunes.
Silberschatz, Korth and Sudarshan12.36Database System Concepts - 5th Edition, Oct 4, 2006
Archivos de ndices de rbol B
Similar al rbol B+, pero los rboles B permiten que los valores de
clave de bsqueda aparezcan slo una vez, elimina la redundancia de
las claves de bsqueda.
Como las claves de bsqueda que aparecen en los nodos internos no
aparecen en ninguna otra parte del rbol B, es necesario incluir un
campo adicional para un puntero por clave, estos punteros apuntan a
registros de archivos o cajones
(a) Nodo Hoja (b) Nodo Interno de un rbol B.
Nodo interno: los punteros Bi son a un cajn o archivo de registros.
Silberschatz, Korth and Sudarshan12.37Database System Concepts - 5th Edition, Oct 4, 2006
Ejemplo de un archivo de ndice de rbol B
rbol B (arriba) y rbol B+ (abajo) con os mismos datos
Silberschatz, Korth and Sudarshan12.38Database System Concepts - 5th Edition, Oct 4, 2006
Archivos de ndices de rbol B (Cont.)
Ventajas de ndices de rbol B:
Se puede usar menos nodos que el rbol B+.
A veces es posible encontrar el valor de la clave de bsqueda antes
de alcanzar el nodo hoja.
Desventajas de ndices de rbol B:
Slo una pequea cantidad de todos los valores clave de bsqueda se
detecta en forma rpida.
Puede que tenga una profundidad mayor que el correspondiente al
rbol B+.
La Insercin y borrado es mas complicado que en los arboles B+
Silberschatz, Korth and Sudarshan12.39Database System Concepts - 5th Edition, Oct 4, 2006
Acceso bajo varias claves
Uso de mltiples ndices para ciertos tipos de consultas.
select numero_prestamo from cuenta
where nombre_sucursal = Pamplona and saldo = 1000
Hay tres estrategias posibles para procesar esta consulta:
1. Usar el ndice en nombre_sucursal para encontrar todos los registrospertenecientes a la sucursal de Pamplona. Luego se examinan estosregistros para ver si saldo = 1.000.
2. Usar el ndice en saldo para encontrar todos los registros pertenecientes acuentas con saldos de 1.000. Luego se examinan estos registros para versi nombre_sucursal = Pamplona
3. Usar el ndice en nombre_sucursal para encontrar punteros a registrospertenecientes a la sucursal Pamplona. Y tambin usar el ndice en saldopara encontrar los punteros a todos los registros pertenecientes a cuentascon un saldo de 1.000. Se realiza la interseccin de estos dos conjuntos depunteros.
La tercera utiliza ambos ndices pero podra ser una mala eleccin cuando:
Hay muchos registros pertenecientes a la sucursal Pamplona.
Hay muchos registros pertenecientes a cuentas con un saldo de 1.000.
Hay solamente unos cuantos registros pertenecientes a ambos, a lasucursal Pamplona y a las cuentas con un saldo de 1.000.
Silberschatz, Korth and Sudarshan12.40Database System Concepts - 5th Edition, Oct 4, 2006
ndices sobre varias claves
Claves de bsqueda compuesta son claves de bsqueda que
contienen mas de un atributo.
Ejm. (nombre_sucursal, saldo)
La clave se representa como un tupla de valores: (a1, a2, an) donde
los atributos indexados son (A1, A2, An).
El orden de los valores de la clave de bsqueda es el Orden
lexicogrfico: (a1, a2) < (b1, b2) si se cumple cualquier condicin
a1 < b1,
a1=b1 y a2 < b2
Silberschatz, Korth and Sudarshan12.41Database System Concepts - 5th Edition, Oct 4, 2006
Temas a investigar
Claves de Bsqueda duplicadas
ndices de cobertura
ndices secundarios y reubicacin de registros
rboles R
Database System Concepts, 5th Ed.
Silberschatz, Korth and Sudarshan
See www.db-book.com for conditions on re-use
Asociacin
Ing. Hernn Nina Hanco
Silberschatz, Korth and Sudarshan12.43Database System Concepts - 5th Edition, Oct 4, 2006
Asociacin esttica
Un cajn (bucket) es una unidad de almacenamiento que puede guardar
uno o mas registros (generalmente un bucket es un bloque de disco).
En la organizacin de archivo asociativo (hash file organization) se
obtiene un bucket de un registro directamente del valor de su clave de
bsqueda usando una funcin de asociacin (hash function)
Formalmente, sea K el conjunto de todos los valores de clave de bsqueda
y sea B el conjunto de todas las direcciones de cajn. Una funcin de
asociacin h es una funcin de K a B. Sea h una funcin asociacin.
Para insertar un registro con clave de bsqueda Ki, calcularemos h(Ki), y
proporciona la direccin del cajn para insertar el registro.
Para realizar una bsqueda con el valor Ki de la clave de bsqueda,
simplemente se calcula h(Ki) y luego se busca el cajn con esa direccin.
Supongamos que dos claves de bsqueda, K5 y K7, tienen el mismo valor
de asociacin, hay que comprobar el valor de clave de bsqueda de cada
registro en el cajn para verificar que el registro es el que queremos.
El borrado es igual de sencillo. Si el valor de clave de bsqueda del registro
a borrar es Ki, se calcula h(Ki), despus se busca el correspondiente cajn
para ese registro y se borra el registro del cajn.
Silberschatz, Korth and Sudarshan12.44Database System Concepts - 5th Edition, Oct 4, 2006
Ejemplo de la organizacin de un archivo asociativo
Hay 10 buckets,
Una funcin de asociacin sencilla calcula en primer lugar la suma
de las representaciones binarias de los caracteres de la clave y,
luego, devuelve el resto de la divisin entre la suma y el numero de
cajones:
Ejm. h(Perryridge) = 5 h(Round Hill) = 3 h(Brighton) = 3
Organizacin asociativa del archivo cuenta utilizando nombre_sucursal como clave
Silberschatz, Korth and Sudarshan12.45Database System Concepts - 5th Edition, Oct 4, 2006
Ejemplo de la organizacin de un archivo asociativo
Organizacin asociativa
del archivo cuenta
utilizando
nombre_sucursal como
clave
Silberschatz, Korth and Sudarshan12.46Database System Concepts - 5th Edition, Oct 4, 2006
Funciones de asociacin
La peor funcin posible asigna todos los valores de clave de bsqueda
al mismo cajn; esto hara que se guarde todos los registros en un
mismo cajn.
Propiedades de una buena distribucin:
Distribucin uniforme. Esto es, cada cajn tiene asignado el
mismo nmero de valores de la clave de bsqueda dentro del
conjunto de todos los valores posibles de la clave de bsqueda.
Distribucin aleatoria. Esto es, en el caso promedio, cada cajn
tendr casi el mismo nmero de valores asignados a l, sin tener
en cuenta la distribucin actual de los valores de la clave de
bsqueda.
Generalmente las funciones de asociacin realizan el clculo sobre la
representacin binaria interna del valor de la clave de bsqueda.
Silberschatz, Korth and Sudarshan12.47Database System Concepts - 5th Edition, Oct 4, 2006
Gestin de desbordamiento de cajones
El desbordamiento de cajones puede ocurrir debido a:
Cajones insuficientes
Atasco de cajones: Algunos cajones tienen asignados ms
registros que otros. Esto puede ocurrir debido a dos razones:
Varios registros podran tener la misma clave de bsqueda.
La funcin de asociacin elegida podra producir una
distribucin no uniforme de las claves de bsqueda.
Aunque la probabilidad de desbordamiento de cajones se puede
reducir, no es posible eliminarlo del todo. Por lo tanto, Trataremos el
desbordamiento de cajones utilizando cajones de desbordamiento.
Silberschatz, Korth and Sudarshan12.48Database System Concepts - 5th Edition, Oct 4, 2006
Gestin de desbordamiento de cajones (Cont.)
Cadena de desbordamiento: corresponde al tratamiento del
desbordamiento utilizando una lista enlazada. Todos los cajones de
desbordamiento de un cajn determinado estn encadenados juntos en
una lista enlazada.
La forma de la estructura asociativa que se acaba de describir se
denomina algunas veces asociacin cerrada
Aproximacin alternativa, llamada asociacin abierta. Tienen
menor importancia en la implementacin de bases de datos.
Silberschatz, Korth and Sudarshan12.49Database System Concepts - 5th Edition, Oct 4, 2006
ndices asociativos
La asociatividad se puede utilizar no solamente para la organizacin
de archivos sino tambin para la creacin de estructuras de ndice.
Un ndice asociativo (hash index) organiza las claves de bsqueda,
con sus punteros asociados, dentro de una estructura de archivo
asociativo.
Estrictamente hablando, los ndices asociativos son slo estructuras
de ndices secundarios.
Un ndice asociativo nunca necesita una estructura de ndice
primario, ya que si un archivo est organizado utilizando
asociatividad, no hay necesidad de una estructura de ndice
asociativo separada.
Silberschatz, Korth and Sudarshan12.50Database System Concepts - 5th Edition, Oct 4, 2006
Ejemplo de ndices asociativos
La funcin
de
asociacin
utilizada
calcula la
suma de
los dgitos
del nmero
de cuenta
mdulo siete
Silberschatz, Korth and Sudarshan12.51Database System Concepts - 5th Edition, Oct 4, 2006
Problemas con la tcnica de asociacin esttica
La funcin de asociacin se debe elegir cuando se implementa el
sistema y no se puede cambiar fcilmente despus si el archivo que se
est indexando aumenta o disminuye.
Ya que la funcin h asigna valores de la clave bsqueda a un conjunto
fijo C de direcciones de cajn, emplearemos ms espacio si C fue
concebido para manejar el futuro crecimiento del archivo. Si C es
demasiado pequeo, los cajones contienen registros de una gran
variedad de valores de la clave bsqueda, pudiendo originar el
desbordamiento del cajn.
A medida que el archivo aumenta el rendimiento se degrada.
Silberschatz, Korth and Sudarshan12.52Database System Concepts - 5th Edition, Oct 4, 2006
Problemas con la tcnica de asociacin esttica
La mayora de las bases de datos crecen con el tiempo. Si se va a
utilizar la asociacin esttica para estas bases de datos, tenemos tres
clases de opciones.
Elegir una funcin de asociacin basada en el tamao actual
del archivo. Esta opcin producir una degradacin del
rendimiento a medida que la base de datos crezca.
Elegir una funcin de asociacin basada en el tamao previsto
del archivo con relacin a un punto determinado del futuro.
Aunque se evite la degradacin del rendimiento, inicialmente puede
que se pierda una cantidad de espacio significante.
Reorganizar peridicamente la estructura asociativa en
respuesta al crecimiento del archivo. Esta reorganizacin implica
elegir una nueva funcin de asociacin, volviendo a calcular la
funcin de asociacin de cada registro en el archivo y generando
nuevas asignaciones de los cajones. Esta reorganizacin es una
operacin masiva que requiere mucho tiempo. Adems, es
necesario prohibir el acceso al archivo durante la reorganizacin.
Silberschatz, Korth and Sudarshan12.53Database System Concepts - 5th Edition, Oct 4, 2006
Asociacin dinmica
Permiten modificar la funcin de asociacin dinmicamente para acomodarse al aumento o disminucin de la base de datos
Asociacin extensible (Extendable hashing) una forma de asociacin dinmica
Una Funcin de asociacin genera valores dentro de un rango Tpicamente enteros binarios de b bits. Un valor normal de b es 32
Inicialmente no se utiliza el total de b bits del valor de la funcin de asociacin. En cualquier caso, empleamos i bits, donde 0< i < b. Estos i bits son utilizados como desplazamiento en una tabla adicional con las direcciones de los cajones.
Tamao de la tabla de direcciones de cajn = 2i. Inicializa i = 0
El valor de i aumenta o disminuye con el tamao de la base de datos.
Algunas entradas consecutivas de la tabla podran apuntar al mismo cajn. Todas estas entradas tendrn un prefijo comn del valor de la funcin de asociacin.
As el nmero de cajones es < 2i
EL nmero de cajones tambin cambia dinmicamente, fusionando o separndose.
Silberschatz, Korth and Sudarshan12.54Database System Concepts - 5th Edition, Oct 4, 2006
Estructura asociativa general extensible
En esta estructura, i2 = i3 = i, si i1 = i 1
Silberschatz, Korth and Sudarshan12.55Database System Concepts - 5th Edition, Oct 4, 2006
Uso de la estructura asociativa extensible
Cada cajn j almacena un valor ij
Todas las entradas que apuntan al mismo cajn tienen el mismo
valor los primeros ij bits.
Para localizar un cajn que contiene una clave de bsqueda Kj:
1. Calcular h(Kj) = X
2. Tomar los primeros i bits mas significativos de X se busca la entrada
de la tabla que corresponda a esta cadena de bits, y se sigue el
puntero del cajn en la entrada de la tabla.
Para insertar un registro con un valor de la clave de bsqueda Kj se
sigue el mismo procedimiento de bsqueda que antes, llegando a algn
cajn j. Si hay sitio en el cajn se inserta el registro en el cajn. Si por el
contrario el cajn est lleno, hay que dividir el cajn y redistribuir los
registros actuales ms uno nuevo. Para dividir el cajn, primero hay que
determinar del valor de la funcin de asociacin por si fuera necesario
incrementar el nmero de bits que se estn usando.
Silberschatz, Korth and Sudarshan12.56Database System Concepts - 5th Edition, Oct 4, 2006
Insercin en la estructura asociativa extensible (Cont)
Si i > ij (ms de una entrada en la tabla de direcciones de cajones apunta al cajn j)
Se asigna un nuevo cajn z, y se cambia ij = iz = (ij + 1)
La primera mitad de todas las entradas se dejan como estaban(apuntando al cajn j) y el resto de entradas se ponen apuntando alcajn recin creado (cajn z).
Por ltimo, se vuelve a calcular la funcin de asociacin para cada registro en el cajn j y se colocan o bien en el cajn j o bien en el cajn z recin creado. Luego se vuelve a intentar la insercin. En el caso poco probable de que vuelva a fallar.
Para dividir un cajn j cuando se inserta registros con un valor de clave de
bsqueda Kj:
Silberschatz, Korth and Sudarshan12.57Database System Concepts - 5th Edition, Oct 4, 2006
Insercin en la estructura asociativa extensible (Cont)
Si i = ij (solamente una entrada en la tabla de direcciones de los cajones apunta al cajn j)
Es necesario incrementar el tamao de la tabla de direcciones de loscajones para incluir los punteros a los dos cajones que resultan de ladivisin del cajn j. Esto se hace considerando un bit adicional en elvalor de la funcin de asociacin. Luego se incrementa el valor de ien uno, duplicando el tamao de la tabla de direcciones de cajones.Cada entrada se sustituye por dos entradas, cada una de las cualescon el mismo puntero que la entrada original. Ahora dos entradas enla tabla de direcciones de cajones apuntan al cajn j. As pues, seasigna un nuevo cajn (cajn z) y hacemos que la segunda entradaapunte al nuevo cajn. Se pone ij e iz a i. A continuacin se vuelve acalcular la funcin de asociacin para cada registro del cajn j y,dependiendo de los primeros i bits, se mantiene en el cajn j o secoloca en el cajn recin creado.
Si todos los registros en el cajn j tienen el mismo valor de la clavede bsqueda, ningn nmero de divisiones servir. En estos casosse usan cajones de desbordamiento para almacenar los registros,como en la asociacin esttica.
Para dividir un cajn j cuando se inserta registros con un valor de clave de
bsqueda Kj:
Silberschatz, Korth and Sudarshan12.58Database System Concepts - 5th Edition, Oct 4, 2006
Borrar en la estructura asociativa extensible
Para borrar un registro con valor de la clave de bsqueda Kl se sigue el
mismo procedimiento de bsqueda anterior, finalizando en algn cajn,
llammosle j. Se borran ambos, el registro del archivo y la clave de
bsqueda del cajn. El cajn tambin se elimina si se queda vaco.
Ntese que en este momento, varios cajones se pueden fusionar,
reduciendo el tamao de la tabla de direcciones de cajones a la mitad.
Silberschatz, Korth and Sudarshan12.59Database System Concepts - 5th Edition, Oct 4, 2006
Ejemplo de Uso de la estructura asociativa
extensible
Estructura de Asociacin inicial, tamao del cajn = 2
Silberschatz, Korth and Sudarshan12.60Database System Concepts - 5th Edition, Oct 4, 2006
Ejemplo (Cont.)
Estructura asociativa despus de tres inserciones
Silberschatz, Korth and Sudarshan12.61Database System Concepts - 5th Edition, Oct 4, 2006
Ejemplo (Cont.)
Estructura asociativa despus de cuatro inserciones
Silberschatz, Korth and Sudarshan12.62Database System Concepts - 5th Edition, Oct 4, 2006
Ejemplo (Cont.)
Estructura asociativa despus de siete inserciones
Silberschatz, Korth and Sudarshan12.63Database System Concepts - 5th Edition, Oct 4, 2006
Ejemplo (Cont.)
Estructura asociativa extensible para el archivo cuenta