Almacenamiento y Recuperación de la Informaciónwpalma/ari/indices_dinamicos.pdfCriterios para la...

22
Almacenamiento y Recuperación de la Información Técnicas de Indexación Indices Dinámicos 2do Semestre 2005 Wenceslao Palma M. <[email protected]> www.inf.utfsm.cl/~wpalma/ari

Transcript of Almacenamiento y Recuperación de la Informaciónwpalma/ari/indices_dinamicos.pdfCriterios para la...

Page 1: Almacenamiento y Recuperación de la Informaciónwpalma/ari/indices_dinamicos.pdfCriterios para la selección de índices El diseño físico de una BD tienen como actividad la elección

Almacenamiento y Recuperación de la Información

Técnicas de IndexaciónIndices Dinámicos

2do Semestre 2005Wenceslao Palma M. <[email protected]>

www.inf.utfsm.cl/~wpalma/ari

Page 2: Almacenamiento y Recuperación de la Informaciónwpalma/ari/indices_dinamicos.pdfCriterios para la selección de índices El diseño físico de una BD tienen como actividad la elección

Indices Dinámicos

Indices tipo árbol B

Al ser ocupado como estructura de índice no es necesario almacenar el registro en el nodo, basta con la clave y un puntero.

La estructura de un nodo es la siguiente:

P1

K1

PTR1

P2

P3 ....... P

n

K2

PTR2

K3

PTR3

Page 3: Almacenamiento y Recuperación de la Informaciónwpalma/ari/indices_dinamicos.pdfCriterios para la selección de índices El diseño físico de una BD tienen como actividad la elección

fb=3

Page 4: Almacenamiento y Recuperación de la Informaciónwpalma/ari/indices_dinamicos.pdfCriterios para la selección de índices El diseño físico de una BD tienen como actividad la elección

Arbol B+

Es una variación de un Arbol B, posee las mismas características pero se distingue en dos aspectos:

En los nodos hoja se encuentran las referencias a los archivos de datos.En los nodos intermedios se almacenan las claves que corresponden al mayor valor que se puede alcanzar a través del sub-árbol izquierdo de la clave.

73 96

31 65 107 98

Page 5: Almacenamiento y Recuperación de la Informaciónwpalma/ari/indices_dinamicos.pdfCriterios para la selección de índices El diseño físico de una BD tienen como actividad la elección

Esta alternativa de indexación es importante ya que permite la posibilidad de dar un mejor soporte a consultas basadas en rangos o categorías y ser una alternativa más eficiente que un índice basado en árbol B y que la combinación Ordenamiento Externo y Mezcla + Búsqueda Binaria.

Incluso es posible construir un índice B+ Clusterizado. En el caso de PostgreSQL existe la instrucción CLUSTER indexname ON tablename

73 96

31 65 107 98

Page 6: Almacenamiento y Recuperación de la Informaciónwpalma/ari/indices_dinamicos.pdfCriterios para la selección de índices El diseño físico de una BD tienen como actividad la elección

En PostgreSQL existe la posibilidad de definir qué tipo de índices utilizar: b-tree (Leghman Yao High-Concurrency b-tree) r-tree (Guttman's quadratic split algorithm) GiST (Generalized Search Tree) hash (Litwin's linear hashing)

Page 7: Almacenamiento y Recuperación de la Informaciónwpalma/ari/indices_dinamicos.pdfCriterios para la selección de índices El diseño físico de una BD tienen como actividad la elección

Ejercicio:Se tiene un archivo de 200000 registros cada uno de 250 bytes. Justifique cual es la mejor elección, para la recuperación de registros, si se desea construir un índice sobre la clave del archivo (9 bytes)?Para realizar la justificación considere

índice basado en arbol B (punters de 3 bytes)..índice primario. un disco de 3600 RPM, 18ms (seek) y 1229 bytes/ms, bloques de 1KB.

Caso 1: Indice primario

área de datosfactor de bloqueo: 1024/250 = 4cantidad ded bloques : 200000/4 = 50000

área de índice entradas: 50000 factor de bloqueo: 1024/11=93cantidad de bloques: 50000/93= 538

Page 8: Almacenamiento y Recuperación de la Informaciónwpalma/ari/indices_dinamicos.pdfCriterios para la selección de índices El diseño físico de una BD tienen como actividad la elección

accesos (área de índice + área de datos): log2(538) + 1=11

tiempo de recuperación, considerando que todos los accesos son en disco:11(18+8.3+(1024/1229))= 298.5ms

Caso 2: Arbol B

orden del árbol 3p+(9+3)(p-1) <=1024

p<= 69.06667p = 69

con 3 niveles es suficiente.

accesos : 3 + 1= 4

tiempo de recuperación, considerando que todos los accesos son en disco:4(18+8.3+(1024/1229))= 108.5 ms

Por lo tanto conviene usar árbol B.

Page 9: Almacenamiento y Recuperación de la Informaciónwpalma/ari/indices_dinamicos.pdfCriterios para la selección de índices El diseño físico de una BD tienen como actividad la elección

Ejercicio:Considere un archivo de 30000 registros, cada uno de los cuales tiene un

tamaño de 100 bytes. La clave de cada registro es de 9 bytes El disco en donde se almacenará tiene bloques de 512 bytes. Cuantos accesos a disco se necesitan si se desea recuperar registros usando un índice basada en un árbol B+ cuyos nodos se llenarán a un 69% de su capacidad?Puntero a nodo es de 6 bytes y el puntero a registro es de 7 bytes.Para el análisis considere las operaciones de : scan completo, búsqueda por igualdad y búsqueda por rango.

Page 10: Almacenamiento y Recuperación de la Informaciónwpalma/ari/indices_dinamicos.pdfCriterios para la selección de índices El diseño físico de una BD tienen como actividad la elección

Indices Hashing

Indice basado en hashing extendido. Para buscar k mod 2d

83264128

9176526

000001010011100101110111

54381430

7314771

.....

.....

Page 11: Almacenamiento y Recuperación de la Informaciónwpalma/ari/indices_dinamicos.pdfCriterios para la selección de índices El diseño físico de una BD tienen como actividad la elección

Indice basado en hashing lineal.

Es una alternativa al hashing extendible.

No es necesario el uso de un directorio.

Comienza con 2d buckets, donde d es el número de bits utlizados para determinar la pertenencia a un bucket. La cantidad ded buckets crece gradualmente.

El incremento en la cantidad de buckets puede ser gatillado por la existencia de overflow o cuando se ha alcanzado un factor de carga.

El factor de carga fc es el número de registros almacenados dividido por el número de posibles ubicaciones de almacenamiento.

El número inicial de buckets n es una potencia de 2, pero su creciemiento no siempre es en base a una potencia de 2.

El número de ubicaciones de almacenamiento s=#buckets * #reg/bucket

El número inicial de registros r es 0, y se incrementa cuando se inserta un registro.

El factor de carga fc = r/s = r/(n*#reg/bucket)

Page 12: Almacenamiento y Recuperación de la Informaciónwpalma/ari/indices_dinamicos.pdfCriterios para la selección de índices El diseño físico de una BD tienen como actividad la elección

Generalmente si fc >= 90% el espacio de almacenamiento se debe incrementar.

Algoritmo de inserción

se inserta un registro con clave K solo cuando se ha calculado el valor de la función de transformación H

se toman los últimos d dígitos de H, recordar que d es la cantidad de dígitos usada para determinar la pertenencia a un bucket.

buscar el bucket m donde K debería ser almacenada.

si m<n, entonces existe un bucket para almacenar K, si el bucket no tiene espacio usar un bucket de overflow.

si m>=n, entonces almacenar K en el bucket m-2d-1

luego de cada inserción chequear si fc < umbral

si fc >= umbral entonces incrementar el espacio de almacenamiento (split) considerando lo siguiente:

agregar un nuevo bucket (esto podría incrementar d).redistribuir los registros entre el nuevo bucket n=1b

2...b

d y el bucket

0b2...b

d

Page 13: Almacenamiento y Recuperación de la Informaciónwpalma/ari/indices_dinamicos.pdfCriterios para la selección de índices El diseño físico de una BD tienen como actividad la elección

Ejemplo: considere que el valor H está compuesto de 4 dígitos binarios. Inicialmente se almacenan 0000, 1010 y 1111.n=2, d=1, fb=2, r=3

000010101111

0

1

insertar 0101

0000101011110101

0

1

luego de la inserción el fc=4/4 = 100% --> split!

Page 14: Almacenamiento y Recuperación de la Informaciónwpalma/ari/indices_dinamicos.pdfCriterios para la selección de índices El diseño físico de una BD tienen como actividad la elección

0000

11110101

00

01

Se agrega el nuevo bucket 10 y se dividen los registros de buckets 00 y 10

d=2n=3r=4

101010

Insertar 0001. 01<10, pero el bucket no tiene espacio --> bucket de overflow

0000

11110101

00

01

101010

0001d=2n=3r=5

Page 15: Almacenamiento y Recuperación de la Informaciónwpalma/ari/indices_dinamicos.pdfCriterios para la selección de índices El diseño físico de una BD tienen como actividad la elección

0000

11110101

00

01

101010

00010111

Insertar 0111. pero 11>10, entonces se ubica 0111 en el bucket m-2d-1=11-10=01

d=2n=3r=6

luego de la inserción el fc=6/6 = 100% --> split!

Page 16: Almacenamiento y Recuperación de la Informaciónwpalma/ari/indices_dinamicos.pdfCriterios para la selección de índices El diseño físico de una BD tienen como actividad la elección

Se agrega el nuevo bucket 11 y se dividen los registros de buckets 01 y 11

0000

00010101

00

01

101010

01111111

11

d=2n=4r=6

Page 17: Almacenamiento y Recuperación de la Informaciónwpalma/ari/indices_dinamicos.pdfCriterios para la selección de índices El diseño físico de una BD tienen como actividad la elección

Indices Bitmap

Indice Valor-Lista de un componente

Corresponde a un cjto de bitmaps, uno por cada valor del dominio del atributo indexado.

Cada bitmap tiene una cantidad de bits equivalente al número de registros del archivo que se esté indexando, de modo que cada bit represente un registro según la posición relativa que ambos tengan dentro del archivo o del índice, según corresponda.

El i-ésimo bit valdrá 1 si el i-ésimo registro del archivo tiene el valor v en el campo de indexación. A continuación se muestra el contenido de 9 bitmaps que indexan un atributo con dominio [0..8]

3212822075

0000100000

0000000010

0000000000

0000000001

0000000000

1000000000

0101011000

0010000000

0000000100

B0

B1

B2

B3

B4

B5

B6

B7

B8

Columna

Page 18: Almacenamiento y Recuperación de la Informaciónwpalma/ari/indices_dinamicos.pdfCriterios para la selección de índices El diseño físico de una BD tienen como actividad la elección

Indice Valor-Lista de n componentes

Para disminuir la memoria utilizada se puede realizar una representación en alguna base numérica que requiera menos bits.

Considerando el caso anterior se puede tener una representación en base 3 para bajar de 9 a 6 bitmaps, teniendo dos componentes de bitmaps para hacer el almacenamiento.

Si el valor a indexar es 8, se puede expresar como 2x3+2, esto indica que en ambos componentes se setea el bit 2.Si el valor a indexar es 7, se puede expresar como 2x3+1, esto indica que se setea el bit 2 en el segundo componente y el bit 1 en el primer componente.

3212822075

0000100010

1000000001

0111011100

0101111001

0010000010

1000000100

B0

B1

B2B

0B

1B

2

Page 19: Almacenamiento y Recuperación de la Informaciónwpalma/ari/indices_dinamicos.pdfCriterios para la selección de índices El diseño físico de una BD tienen como actividad la elección

Indice codificado por rangos de 1 componente

En un esquema de igualdad (valor-lista de 1 componente), se tienen b bitmaps según sea el tamaño del dominio del campo de indexación.

En un esquema codificado por rangos, también hay b bitmaps pero la representación de un valor v tiene un valor cero en los v bitmaps “más a la derecha” y un valor uno en los restantes bitmaps (los que están más a la izquierda).

3212822075

1 1 1 1 1 1 0 0 0

B0

B1

B2

B3

B4

B5

B6

B7

B8

Columna

1 1 1 1 1 1 1 0 01 1 1 1 1 1 1 1 01 1 1 1 1 1 1 0 01 0 0 0 0 0 0 0 01 1 1 1 1 1 1 0 01 1 1 1 1 1 1 0 01 1 1 1 1 1 1 1 11 1 0 0 0 0 0 0 01 1 1 1 0 0 0 0 0

Page 20: Almacenamiento y Recuperación de la Informaciónwpalma/ari/indices_dinamicos.pdfCriterios para la selección de índices El diseño físico de una BD tienen como actividad la elección

Indice bit-sliced

Un índice bit-sliced de un atributo es una proyección de los bits que componen los valores de dicho atributo. Si el atributo A de cierto archivo está definido como un entero de 2 bytes, el índice bit-sliced estará compuesto de 16 bitmaps. Si el valor es 201 cuya representación binaria es 0000000011001001

201 0...0 0 0 1 1 0 0 1 0 0 1

B0

B1

B2

B3

B4

B5

B6

B7

B8

B9

B15

..B10

También es posible construir un índice de n componentes y otro codificado por rangos.

En el caso de n componentes, si la base es 10, el 201 se puede escribir como 2x102 + 0x10 + 1

Page 21: Almacenamiento y Recuperación de la Informaciónwpalma/ari/indices_dinamicos.pdfCriterios para la selección de índices El diseño físico de una BD tienen como actividad la elección

Criterios para la selección de índices

El diseño físico de una BD tienen como actividad la elección de las estructuras de almacenamiento y formas de acceso a los datos, con el objetivo de obtener un buen rendimiento.

Al momento del diseño físico es importante considerar:

Tiempo de respuesta: desde la entrada del proceso hasta la respuesta.Espacio en disco: dimensionar el espacio requerido.Rendimiento del sistema: throughput.

La tareas necesarias son:

Analizar las consultas sobre los datos : archivos involucrados, atributos sobre los cuales existen condiciones de selección, atributos sobre los cuales hay condiciones de selección que involucran a registros de otros archivos.

Análisis de frecuencia esperada de la invocación de la consulta

Análisis de posibles restricciones de tiempo de las consultas.

Análisis de la frecuencia esperada de operaciones de actualización.

Page 22: Almacenamiento y Recuperación de la Informaciónwpalma/ari/indices_dinamicos.pdfCriterios para la selección de índices El diseño físico de una BD tienen como actividad la elección

Método para realizar el diseño físico de una BD

Una opción común es mantener los registros desordenados y crear muchos índices secundarios sobre atributos que se utilizan para operaciones de búsqueda y join.

Otra alternativa es:

escoger un atributo usado frecuentemente y definirlo como campo de ordenamiento para crear un índice primario o agrupado (según corresponda) sobre él.

por cada atributo, que no es el campo de ordenamiento, y que es frecuentemente utilizado en operaciones de búsqueda y join, especificar un índice secundario.

si las actualizaciones son muy frecuentes se debe reducir el número de índices.

si un atributo es usado frecuentemente en operaciones de búsqueda y join pero no para recuperar registros en orden, un archivo tipo hashing puede ser utilizado, de lo contrario se puede usar árbol b+.