+ All Categories
Home > Documents > Capitulo 5 Indexación y Asociación en Bases de datos

Capitulo 5 Indexación y Asociación en Bases de datos

Date post: 04-Sep-2015
Category:
Upload: james-amao-alvarez
View: 229 times
Download: 1 times
Share this document with a friend
Description:
Indexación y Asociación en Bases de datos
Popular Tags:
63
Database System Concepts, 5th Ed. ©Silberschatz, Korth and Sudarshan See www.db-book.com for conditions on re-use Indexación y Asociación
Transcript
  • 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


Recommended