Teorico 11 Indexacion y Hashing

  • Upload
    xoretor

  • View
    22

  • Download
    0

Embed Size (px)

Citation preview

  • 1Bases de Datos 2012 -Terico:Indexacin y Hashing

    Terico 11

    Indexacin y Hashing

  • 2Bases de Datos 2012 -Terico:Indexacin y Hashing

    Conceptos bsicos Los mecanismos de indexacin son usados para acceder

    rpidamente a los datos deseados. E.j., autor en un catalogo de libros

    Clave de bsqueda: es un atributo o conjuntos de atributos usados para buscar registros en un archivo.

    Un archivo de ndices esta compuesto de registros (llamados entrada de ndices) de la forma:

    Los archivo de ndices son generalmente mucho mas pequeos que el archivo original.

    Hay dos clases bsicas de ndices: ndices ordenados: Las claves de bsquedas estn

    almacenadas ordenadas. ndices de Hash: Las claves de bsquedas estn distribuidas

    uniformemente a travs de cajones utilizando una funcin de hash.

    Clave de bsqueda puntero

  • 3Bases de Datos 2012 -Terico:Indexacin y Hashing

    Evaluacin de Mtricas para ndices

    Tipos de accesos soportados eficientemente. EJ., Registros con un valor especifico para un atributo. Registros con un valor en un rango determinado.

    Tiempo de acceso. Tiempo de Insercin. Tiempo de borrado. Espacio adicional requerido.

    Las tcnicas de indexacin son evaluadas en base a:

  • 4Bases de Datos 2012 -Terico:Indexacin y Hashing

    ndices Ordenados En un ndice ordenado, las entradas de ndices son

    almacenadas ordenadas por el valor de clave de bsqueda. Ej., catalogo de Autor en una librera.

    ndices Primarios: en un archivo ordenado secuencialmente, es el ndice cuya clave de bsqueda especifica el orden secuencial del archivo. La clave de bsqueda de un ndice primario es

    usualmente, pero no necesariamente, la clave primaria.

    ndices secundarios: es un ndice cuya clave de bsqueda especifica un orden diferente del orden secuencial del archivo.

  • 5Bases de Datos 2012 -Terico:Indexacin y Hashing

    ndices Primarios

  • 6Bases de Datos 2012 -Terico:Indexacin y Hashing

    Archivos de ndices densosndices Densos aparece un registro ndice para cada valor de la clave de bsqueda en el archivo.En la siguiente figura se muestra un ndice denso para la tabla (archivo) cuenta:

    AzcurraCordobaFernandezPerezSuarezZabala

    Edad Apellido Nombre Saldo34 Azcurra Jorge 454523 Cordoba Luis 43254 Cordoba Carlos 87834 Fernandez Beatriz -45745 Perez Juan 9654 Perez Jorge 065 Perez Evelio 086 Suarez Hernan 2112 Zabala Jose 45

  • 7Bases de Datos 2012 -Terico:Indexacin y Hashing

    Archivos de ndices Dispersos ndices dispersos: contienen registros ndices slo para algunos

    valores de la clave de bsqueda. Aplicable cuando los registros del archivo estn ordenados

    secuencialmente en la clave de bsqueda. Para localizar un registro con valor de clave de bsqueda K:

    Buscar el registro de ndice con el valor mas grande que sea menor o igual que el valor que se esta buscando.

    Buscar en el archivo secuencialmente comenzando en el registro que apunta la entrada de ndice seleccionada.

    Menos espacio y menos overhead de mantenimiento para inserciones y borrados.

    Generalmente mas lento que un ndice denso para localizar registros.

    Buen Rendimiento: los ndices dispersos con una entrada por cada bloque en el archivo, esta entrada se corresponde con el menor valor de clave en el bloque.

  • 8Bases de Datos 2012 -Terico:Indexacin y Hashing

    Ejemplo de Archivo de ndices Dispersos

    AzcurraFernandezSuarez

    Edad Apellido Nombre Saldo34 Azcurra Jorge 4523 Cordoba Luis 40054 Cordoba Carlos 87835 Fernandez Beatriz -45745 Perez Juan 40057 Perez Jorge 065 Perez Evelio 086 Suarez Hernan 40012 Zabala Jose 45

  • 9Bases de Datos 2012 -Terico:Indexacin y Hashing

    ndices Multinivel Si el ndice primario no cabe en memoria, el acceso llega a

    ser muy costoso. Para reducir el nmero de accesos a disco, se trata el

    ndice primario con un archivo secuencial y se construye un ndice disperso sobre el ndice primario. ndice externo un ndice disperso del ndice primario ndice interno el archivo de ndice primario

    Si el ndice externo es tan grande que no cabe en memoria, otro nivel de ndices puede ser creado y as sucesivamente.

    Los ndices en todos los niveles deben ser actualizados en la insercin o borrado de un registro en el archivo.

  • 10Bases de Datos 2012 -Terico:Indexacin y Hashing

    ndice Multinivel (Cont.)

  • 11Bases de Datos 2012 -Terico:Indexacin y Hashing

    ndices Secundarios Frecuentemente, uno quiere encontrar registros en un

    archivo(tabla) cuyos valores en un cierto campo(el cual no es la clave de bsqueda del ndice primario) satisface alguna condicin. Ejemplo 1: En una tabla cuentas bancarias almacenadas

    secuencialmente por nmero de cuenta, nosotros podemos querer encontrar todas las cuentas de una determinada sucursal o todas las cuentas con un determinado saldo.

    Ejemplo 2: En una tabla personas que tiene clave primaria DNI, podemos querer hacer bsquedas por Apellido

    Nosotros podemos tener un ndice secundario con un registro ndice por cada valor de clave, Los registros ndices apuntan a cajones que contienen punteros a todos los registros con esa clave.

  • 12Bases de Datos 2012 -Terico:Indexacin y Hashing

    ndice Secundario Denso en el Campo Saldo de la Tabla Titular

    Cuenta Apellido Nombre Saldo

    34 Azcurra Jorge 8523 Cordoba Luis 40054 Cordoba Carlos 87835 Fernandez Beatriz 45745 Perez Juan 40057 Perez Jorge 065 Perez Evelio 086 Suarez Hernan 40012 Zabala Jose 85

    0

    85400457878

  • 13Bases de Datos 2012 -Terico:Indexacin y Hashing

    ndices Primarios y Secundarios Los ndices secundarios tienen que ser denso, en el

    sentido que tiene que haber un puntero en los cajones a cada registro del archivo.

    Los ndices ofrecen beneficios sustanciales al buscar registros.

    Cuando un archivo se modifica, cada ndice en el archivo debe actualizarse. Actualizar los ndices impone un overhead en la modificacin de la base de datos.

    Hacer un scaneo secuencial usando ndice primario es eficiente, pero un scaneo secuencial usando un ndice secundario es ineficiente. cada acceso a un registro puede tener que recuperar

    un nuevo bloque del disco.

  • 14Bases de Datos 2012 -Terico:Indexacin y Hashing

    Archivos de ndice B+-Tree

    Desventajas de los archivo indexados secuencialmente: la performance se degrada cuando el archivo crece. La reorganizacin peridica del archivo completo es necesaria, pero esto no es deseable.

    Ventaja de archivos de ndice de rbol B+: automticamente se reorganiza con cambios pequeos y locales, ante las inserciones y eliminaciones. La reorganizacin de archivo entero no se exige para mantener la performance de los archivos de ndices con rboles B+-.

    Desventajas de rboles B+: overhead en la insercin y eliminacin y tambin tenemos un overhead de espacio.

    Las ventajas de los rboles B+ valen ms que las desventajas, los rboles B+ son muy utilizados.

    Los ndices con rboles B+ son una alternativa a los archivo de ndices secuenciales.

  • 15Bases de Datos 2012 -Terico:Indexacin y Hashing

    Ejemplo de rbol B+

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

  • 16Bases de Datos 2012 -Terico:Indexacin y Hashing

    Organizacin de Archivos con rboles B+

    La degradacin de los archivos de ndices se resuelve con la utilizacin de los ndices con B+. La degradacin de los archivos de datos se resuelve con el uso de rboles B+ para la organizacin de los archivos.

    Los nodos hojas en un organizacin de archivos de rbol B+ almacenan registros en lugar de punteros.

    Dado que los registros son ms grandes que los punteros, el nmero mximo de registros que pueden guardarse en un nodo hoja es menor que el nmero de punteros en un nodo no hoja.

    Los nodos hojas deben estar medios llenos. La insercin y borrado se manejan de la misma forma que

    las inserciones y borrados de las entradas en un ndice con rbol B+.

  • 17Bases de Datos 2012 -Terico:Indexacin y Hashing

    Organizacin de Archivos con rboles B+ (Cont.)

    Buena utilizacin del espacio dado que los registros usan ms espacio que los punteros.

    Para mejorar utilizacin del espacio, hay que involucrar mas nodos hermanos en la redistribucin durante divisiones y fusiones

    Ejemplo de una organizacin de archivos rboles B+

  • 18Bases de Datos 2012 -Terico:Indexacin y Hashing

    Archivos de ndices con rboles B Similares a los rboles B+, pero los rboles B permiten que los claves de bsquedas aparezcan slo una vez, de esta forma se elimina la redundancia en el almacenamiento de valores claves. Las claves de bsqueda en nodos no hojas no vuelven a aparecer

    en otra parte del rbol; un campo puntero adicional para cada clave de bsqueda debe ser incluido en los nodos no hojasa) Nodo hoja

    b) En los nodos no hojas los punteros Bi son punteros a un registro de un archivo o a un cajn.

  • 19Bases de Datos 2012 -Terico:Indexacin y Hashing

    B-Tree Index File Example

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

  • 20Bases de Datos 2012 -Terico:Indexacin y Hashing

    Archivos de ndices de rbol B (Cont.) Ventajas de ndices con rbol B:

    Pueden usar menos nodos que un rbol B+. Algunas veces se pueden encontrar el valor de clave

    antes de llegar a un nodo hoja. Desventajas de ndices con rboles B:

    Slo unos pocos valores buscados se encuentran rpido.

    Las inserciones y borrados son mas complicados que en los rboles B+

    La Implementacin es ms difcil que los rboles B+.

    Los implementadores de base de datos prefieren la sencillez de los rboles B+.

  • 21Bases de Datos 2012 -Terico:Indexacin y Hashing

    Hashing Esttico Un cajn (bucket en ingles) es una unidad de

    almacenamiento que contiene uno o ms registros (un cajn es tpicamente un bloque de disco).

    En una organizacin de archivos por hashing se obtiene el cajn de un registro directamente de su valor de clave de bsqueda utilizando la funcin de hash.

    La funcin de hash h es una funcin del conjunto de valores de todas las claves de bsqueda Hash funcin K al conjunto de todos los cajones direccionables B.

    La funcin de hash es utilizada para localizar registros para su acceso, insercin y borrado.

    Registros con diferentes valores de claves de bsqueda pueden ser mapeados al mismo cajn, de esta forma una vez accedido el cajn se debe hacer una bsqueda secuencial para encontrar el registro.

  • 22Bases de Datos 2012 -Terico:Indexacin y Hashing

    Ejemplo de Organizacin de Archivos por Hash La Organizacin de archivos por Hash del archivo Titular,

    utilizando Apellido como clave

  • 23Bases de Datos 2012 -Terico:Indexacin y Hashing

    Funciones de Hash La peor funcin mapea todos los valores de claves

    de bsqueda al mismo cajn.

    Una funcin de hash ideal es uniforme, es decir, cada cajn tiene asignado el mismo nmero de valores de claves de bsqueda del conjunto de todos los posibles valores.

    Una funcin de hash ideal es random, as cada cajn tendr la misma cantidad de registros asignados, la funcin deber parecer aleatoria, no deber seguir ningn orden externo visible (lexicogrfico, etc).

  • 24Bases de Datos 2012 -Terico:Indexacin y Hashing

    ndices de Hash El hashing se puede usar no slo para la organizacin de

    archivos, sino tambin para la creacin de la estructura de ndices.

    Un ndice hash organiza claves de bsqueda, con sus punteros a registros asociados, dentro de una estructura de archivo de hash.

    Estrictamente hablando, los ndices de hash siempre son ndices secundarios. Si el propio archivo es organizado con hash, un ndice

    de hash primario separado usando la misma clave de bsqueda es innecesario.

  • 25Bases de Datos 2012 -Terico:Indexacin y Hashing

    Ejemplo de un ndice de Hash

  • 26Bases de Datos 2012 -Terico:Indexacin y Hashing

    Deficiencias del Hashing Esttico En el hashing esttico, la funcin h mapea los valores de clave de

    bsqueda a un conjunto fijo B de cajones. Las bases de datos crecen con el tiempo. Si el nmero inicial

    de cajones es demasiado chico, la performance se degradar porque abra demasiados cajones de desbordamiento.

    Si el tamao del archivo va ser grande en un futuro, se pueden tener un gran numero de cajones, pero as se estar desperdiciando espacio al principio.

    Si la base de datos se achica, nuevamente se estar gastando espacio.

    Una opcin es reorganizar peridicamente el archivo con una nueva funcin de has, pero esto es muy caro.

    Este problema puede ser evitado utilizando tcnicas que permitan que el numero de cajones sean modificados dinmicamente.

  • 27Bases de Datos 2012 -Terico:Indexacin y Hashing

    Hashing DinmicoHashing Dinmico Bueno para base de datos que crecen y se achican con el tiempo Permiten modificar la funcin de hash dinmicamente Hashing Extensible una forma de hashing dinmico.

    La funcin de Hash genera valores sobre un rango relativamente amplio tpicamente b-bit, con b = 32.

    Siempre se usa slo un prefijo de la funcin de Hash para indexar dentro de una tabla de cajones direccionables.

    La longitud del prefijo es de i bits, 0 i 32. El tamao de la tabla de cajones direccionables es de 2i. Inicialmente i = 0 El valor de i crece y se achica al mismo tiempo que crece y se achica la base

    de datos. Varias entradas en la tabla de cajones pueden apuntar al mismo Cajn. As, el nmero actual de cajones es menor que 2i

    La cantidad de cajones tambin cambian dinmicamente ya que se producen fusiones y divisiones de cajones

  • 28Bases de Datos 2012 -Terico:Indexacin y Hashing

    Definicin de ndices en SQL

    Creacin de un ndiceCREATE INDEX on

    )Ej.: CREATE INDEX titular-indice ON titular(apellido)

    Usar create unique index para especificar y forzar la condicin de que la clave de bsqueda es una clave candidata.

    Para borrar un ndice:DROP INDEX

  • 29Bases de Datos 2012 -Terico:Indexacin y Hashing

    Accesos Multiple-Claves Usar ndices mltiples para determinados tipos de queries. Ejemplo:

    select cuentafrom Titularwhere Apellido = Perez and saldo = 500

    Posibles estrategias para procesar este query ndices en atributos simples:

    1. Usar el ndice sobre Apellido para buscar cuentas con Apellido = Perez ; testear saldo = $500.

    2. Usar el ndices sobre saldo para buscar cuentas con balances de $500; testear Apellido = Perez.

    3. Usar el ndice Apellidio para buscar los punteros a todos los registros pertenecientes a Perez. De la misma forma usar el ndice sobre saldo. Tomar la interseccin de ambos conjuntos punteros.

  • 30Bases de Datos 2012 -Terico:Indexacin y Hashing

    ndices sobre Mltiples Atributos

    Con la clusulawhere apellido = Perez and saldo = 500El ndice sobre la clave de bsqueda combinada buscar slo los registros que cumplan ambas condiciones.Utilizando ndices separados es menos eficiente Podemos encontrar muchos registros que cumplen slo una de las condiciones.

    Puede manejar eficientementewhere apellido = Perez and saldo < 500

    Pero no puede manejar eficientemente where Apellido < Perez and saldo = 500Puede encontrar muchos registros que cumplen la primera pero no la segunda condicin.

    El orden de los valores de la clave de bsqueda es el orden lexicgrafo

    Supongamos tener un ndice combinado sobre la clave de bsqueda(Apellido, Saldo).

  • 31Bases de Datos 2012 -Terico:Indexacin y Hashing

    Bases de Datos Avanzadas Datawarehousing.

    OnLine Analitical Processing (OLAP).

    Data Mining.

    Bases de Datos Temporales.

    Bases de Datos Espaciales.