Anda di halaman 1dari 63

Indexacin y Asociacin

Database System Concepts, 5th Ed.


Silberschatz, Korth and Sudarshan
See www.db-book.com for conditions on re-use

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

Database System Concepts - 5th Edition, Oct 4, 2006

12.2

Silberschatz, Korth and Sudarshan

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:
Puntero

Clave de bsqueda
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).

Database System Concepts - 5th Edition, Oct 4, 2006

12.3

Silberschatz, Korth and Sudarshan

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

Database System Concepts - 5th Edition, Oct 4, 2006

12.4

Silberschatz, Korth and Sudarshan

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.

Database System Concepts - 5th Edition, Oct 4, 2006

12.5

Silberschatz, Korth and Sudarshan

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


Database System Concepts - 5th Edition, Oct 4, 2006

12.6

Silberschatz, Korth and Sudarshan

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

Database System Concepts - 5th Edition, Oct 4, 2006

12.7

Silberschatz, Korth and Sudarshan

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

Database System Concepts - 5th Edition, Oct 4, 2006

12.8

Silberschatz, Korth and Sudarshan

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.

Database System Concepts - 5th Edition, Oct 4, 2006

12.9

Silberschatz, Korth and Sudarshan

ndice multinivel (Cont.)

Sobre archivos
secuenciales
indexados

Database System Concepts - 5th Edition, Oct 4, 2006

12.10

Silberschatz, Korth and Sudarshan

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
Database System Concepts - 5th Edition, Oct 4, 2006

12.11

Silberschatz, Korth and Sudarshan

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


Database System Concepts - 5th Edition, Oct 4, 2006

12.12

Silberschatz, Korth and Sudarshan

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.

Database System Concepts - 5th Edition, Oct 4, 2006

12.13

Silberschatz, Korth and Sudarshan

Ejemplo de ndice Secundario

ndice secundario en el campo saldo de la relacin cuenta

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.
Database System Concepts - 5th Edition, Oct 4, 2006

12.14

Silberschatz, Korth and Sudarshan

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.

Database System Concepts - 5th Edition, Oct 4, 2006

12.15

Silberschatz, Korth and Sudarshan

Archivo de ndice de rbol B+


EI ndice de rbol B+ es una alternativa para archivos de indices secuenciales.
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.

Database System Concepts - 5th Edition, Oct 4, 2006

12.16

Silberschatz, Korth and Sudarshan

Archivo de ndice de rbol (Cont.)


Un rbol B+ es una rbol balanceado que satisface las siguientes propiedades:
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.

Database System Concepts - 5th Edition, Oct 4, 2006

12.17

Silberschatz, Korth and Sudarshan

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

Database System Concepts - 5th Edition, Oct 4, 2006

12.18

Silberschatz, Korth and Sudarshan

Nodos Hoja en el rbol B+


Propiedades de un nodo hoja:
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.

Database System Concepts - 5th Edition, Oct 4, 2006

12.19

Silberschatz, Korth and Sudarshan

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 Pn


apunta tienen valores mayores o iguales a Kn1

El nmero de punteros de un nodo se llama grado de salida del


nodo.

Database System Concepts - 5th Edition, Oct 4, 2006

12.20

Silberschatz, Korth and Sudarshan

Ejemplo de rbol B+

rbol B+ para el archivo account (n = 3)

Database System Concepts - 5th Edition, Oct 4, 2006

12.21

Silberschatz, Korth and Sudarshan

Ejemplo de un rbol B+

rbol B+ para el archivo account (n = 5)


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

Database System Concepts - 5th Edition, Oct 4, 2006

12.22

Silberschatz, Korth and Sudarshan

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.

Database System Concepts - 5th Edition, Oct 4, 2006

12.23

Silberschatz, Korth and Sudarshan

Consultas con rboles B+

Encontrar todos los registros con un valor de clave de bsqueda de k.

Database System Concepts - 5th Edition, Oct 4, 2006

12.24

Silberschatz, Korth and Sudarshan

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.

Database System Concepts - 5th Edition, Oct 4, 2006

12.25

Silberschatz, Korth and Sudarshan

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.

Database System Concepts - 5th Edition, Oct 4, 2006

12.26

Silberschatz, Korth and Sudarshan

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.

Database System Concepts - 5th Edition, Oct 4, 2006

12.27

Silberschatz, Korth and Sudarshan

Actualizaciones en rboles B+: Insercin(Cont.)

rbol B+ Antes y despus de insertar Clearview


Database System Concepts - 5th Edition, Oct 4, 2006

12.28

Silberschatz, Korth and Sudarshan

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.

Database System Concepts - 5th Edition, Oct 4, 2006

12.29

Silberschatz, Korth and Sudarshan

Ejemplo de borrado en un rbol B+

Antes y despus de borrar Daimiel


Database System Concepts - 5th Edition, Oct 4, 2006

12.30

Silberschatz, Korth and Sudarshan

Ejemplo de borrado en un rbol B+ (Cont.)

Borrar Pamplona del resultado del ejemplo anterior

Database System Concepts - 5th Edition, Oct 4, 2006

12.31

Silberschatz, Korth and Sudarshan

Ejemplo de borrado en un rbol B+ (Cont.)

redistribuir

Database System Concepts - 5th Edition, Oct 4, 2006

12.32

Silberschatz, Korth and Sudarshan

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

Database System Concepts - 5th Edition, Oct 4, 2006

12.33

Silberschatz, Korth and Sudarshan

Organizacin de archivos con rboles B+ (Cont.)

Ejemplo de la organizacin de un archivo con un rbol B +

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 2n / 3 entradas.

Database System Concepts - 5th Edition, Oct 4, 2006

12.34

Silberschatz, Korth and Sudarshan

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.

Database System Concepts - 5th Edition, Oct 4, 2006

12.35

Silberschatz, Korth and Sudarshan

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.


Database System Concepts - 5th Edition, Oct 4, 2006

12.36

Silberschatz, Korth and Sudarshan

Ejemplo de un archivo de ndice de rbol B

rbol B (arriba) y rbol B+ (abajo) con os mismos datos

Database System Concepts - 5th Edition, Oct 4, 2006

12.37

Silberschatz, Korth and Sudarshan

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+

Database System Concepts - 5th Edition, Oct 4, 2006

12.38

Silberschatz, Korth and Sudarshan

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 registros
pertenecientes a la sucursal de Pamplona. Luego se examinan estos
registros para ver si saldo = 1.000.
2. Usar el ndice en saldo para encontrar todos los registros pertenecientes a
cuentas con saldos de 1.000. Luego se examinan estos registros para ver
si nombre_sucursal = Pamplona

3. Usar el ndice en nombre_sucursal para encontrar punteros a registros


pertenecientes a la sucursal Pamplona. Y tambin usar el ndice en saldo
para encontrar los punteros a todos los registros pertenecientes a cuentas
con un saldo de 1.000. Se realiza la interseccin de estos dos conjuntos de
punteros.

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 la


sucursal Pamplona y a las cuentas con un saldo de 1.000.

Database System Concepts - 5th Edition, Oct 4, 2006

12.39

Silberschatz, Korth and Sudarshan

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

Database System Concepts - 5th Edition, Oct 4, 2006

12.40

Silberschatz, Korth and Sudarshan

Temas a investigar
Claves de Bsqueda duplicadas

ndices de cobertura
ndices secundarios y reubicacin de registros
rboles R

Database System Concepts - 5th Edition, Oct 4, 2006

12.41

Silberschatz, Korth and Sudarshan

Asociacin
Ing. Hernn Nina Hanco

Database System Concepts, 5th Ed.


Silberschatz, Korth and Sudarshan
See www.db-book.com for conditions on re-use

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.

Database System Concepts - 5th Edition, Oct 4, 2006

12.43

Silberschatz, Korth and Sudarshan

Ejemplo de la organizacin de un archivo asociativo


Organizacin asociativa del archivo cuenta utilizando nombre_sucursal como clave
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

Database System Concepts - 5th Edition, Oct 4, 2006

h(Round Hill) = 3 h(Brighton) = 3

12.44

Silberschatz, Korth and Sudarshan

Ejemplo de la organizacin de un archivo asociativo


Organizacin asociativa
del archivo cuenta
utilizando
nombre_sucursal como
clave

Database System Concepts - 5th Edition, Oct 4, 2006

12.45

Silberschatz, Korth and Sudarshan

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.

Database System Concepts - 5th Edition, Oct 4, 2006

12.46

Silberschatz, Korth and Sudarshan

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.

Database System Concepts - 5th Edition, Oct 4, 2006

12.47

Silberschatz, Korth and Sudarshan

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.

Database System Concepts - 5th Edition, Oct 4, 2006

12.48

Silberschatz, Korth and Sudarshan

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.

Database System Concepts - 5th Edition, Oct 4, 2006

12.49

Silberschatz, Korth and Sudarshan

Ejemplo de ndices asociativos

La funcin
de
asociacin
utilizada
calcula la
suma de
los dgitos
del nmero
de cuenta
mdulo siete

Database System Concepts - 5th Edition, Oct 4, 2006

12.50

Silberschatz, Korth and Sudarshan

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.

Database System Concepts - 5th Edition, Oct 4, 2006

12.51

Silberschatz, Korth and Sudarshan

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.

Database System Concepts - 5th Edition, Oct 4, 2006

12.52

Silberschatz, Korth and Sudarshan

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.

Database System Concepts - 5th Edition, Oct 4, 2006

12.53

Silberschatz, Korth and Sudarshan

Estructura asociativa general extensible

En esta estructura, i2 = i3 = i, si i1 = i 1
Database System Concepts - 5th Edition, Oct 4, 2006

12.54

Silberschatz, Korth and Sudarshan

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.

Database System Concepts - 5th Edition, Oct 4, 2006

12.55

Silberschatz, Korth and Sudarshan

Insercin en la estructura asociativa extensible (Cont)


Para dividir un cajn j cuando se inserta registros con un valor de clave de
bsqueda Kj:
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 al
cajn 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.

Database System Concepts - 5th Edition, Oct 4, 2006

12.56

Silberschatz, Korth and Sudarshan

Insercin en la estructura asociativa extensible (Cont)


Para dividir un cajn j cuando se inserta registros con un valor de clave de
bsqueda Kj:
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 los
cajones para incluir los punteros a los dos cajones que resultan de la
divisin del cajn j. Esto se hace considerando un bit adicional en el
valor de la funcin de asociacin. Luego se incrementa el valor de i
en uno, duplicando el tamao de la tabla de direcciones de cajones.
Cada entrada se sustituye por dos entradas, cada una de las cuales
con el mismo puntero que la entrada original. Ahora dos entradas en
la tabla de direcciones de cajones apuntan al cajn j. As pues, se
asigna un nuevo cajn (cajn z) y hacemos que la segunda entrada
apunte al nuevo cajn. Se pone ij e iz a i. A continuacin se vuelve a
calcular la funcin de asociacin para cada registro del cajn j y,
dependiendo de los primeros i bits, se mantiene en el cajn j o se
coloca en el cajn recin creado.

Si todos los registros en el cajn j tienen el mismo valor de la clave


de bsqueda, ningn nmero de divisiones servir. En estos casos
se usan cajones de desbordamiento para almacenar los registros,
como en la asociacin esttica.

Database System Concepts - 5th Edition, Oct 4, 2006

12.57

Silberschatz, Korth and Sudarshan

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.

Database System Concepts - 5th Edition, Oct 4, 2006

12.58

Silberschatz, Korth and Sudarshan

Ejemplo de Uso de la estructura asociativa


extensible

Estructura de Asociacin inicial, tamao del cajn = 2


Database System Concepts - 5th Edition, Oct 4, 2006

12.59

Silberschatz, Korth and Sudarshan

Ejemplo (Cont.)
Estructura asociativa despus de tres inserciones

Database System Concepts - 5th Edition, Oct 4, 2006

12.60

Silberschatz, Korth and Sudarshan

Ejemplo (Cont.)
Estructura asociativa despus de cuatro inserciones

Database System Concepts - 5th Edition, Oct 4, 2006

12.61

Silberschatz, Korth and Sudarshan

Ejemplo (Cont.)

Estructura asociativa despus de siete inserciones

Database System Concepts - 5th Edition, Oct 4, 2006

12.62

Silberschatz, Korth and Sudarshan

Ejemplo (Cont.)
Estructura asociativa extensible para el archivo cuenta

Database System Concepts - 5th Edition, Oct 4, 2006

12.63

Silberschatz, Korth and Sudarshan

Anda mungkin juga menyukai