sistemas de información ii tema 8. estructuras de datos en ... · sistemas de información ii tema...

Post on 01-Jan-2021

4 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1

Sistemas de Información II

Tema 8. Estructuras de datos en memoria secundaria

Carlos Castillo

UPF – 2008

Bibliografía:Elmasri y Navathe: “Fundamentos de Sistemas de Bases de

Datos”3ª edición, 2002 (Capítulo 6).

Garcia-Molina, Ullman y Widom: “Database systems: the complete book”. Prentice-Hall (Capítulos 12 y 13).

2

Consulta

ÍndiceDatos

Respuesta

IndexaciónÍndice

Datos

3

Indexación

Índice

Estructura que permite encontrar rápidamente un registro de datos

Requerimientos

Bajo sobrecosto (overhead) en espacio

Alta velocidad de búsqueda

[Opcional] Alta velocidad de inserción

[Opcional] Alta velocidad de borrado

4

Índices en ficheros secuenciales

5

Fichero secuencial

10 | Juan20 | Pedro

30 | Diego40 | Ana

50 | María60 | Iván

Bloques

Persona(idpersona int, nombre char(12))

Asumimos bloque es de tamaño 32 bytes(anormalmente pequeño)

6

Índice denso

10 | Juan20 | Pedro

30 | Diego40 | Ana

50 | María60 | Iván

Todos los elementos están en el índice

10 B1R120 B1R230 B2R140 B2R250 B3R160 B3R2

ÍndiceDatos

7

Otro ejemplo índice denso

0         1        

0123456789012345678

JUANPEDRODIEGOTOMAS

0

4

9

14

Índice (4 ints)

Datos (19 bytes)

Veloz en la recuperaciónde registros por número

ej.: recuperar registro 2

8

Índice disperso

10 | Juan20 | Pedro

30 | Diego40 | Ana

50 | María60 | Iván

Sólo algunos de los elementos están en el índice

Densidad del índice = claves indexadas / claves totales

10 B1R130 B2R150 B3R1

ÍndiceDatos

9

Índice primario

Aaron, Ed B1Adams, John B2...Wright, Pam Bn

Bloque 1Aaron, Ed – Acosta, Marc

Bloque 2Adams, John – Akers, Jan

...

Bloque nWright, Pam – Zimmer, Byron

Índice sobre el atributo según el cual están ordenados los elementos, con el primerelemento de cada bloque

Es un índice disperso

10

Cálculo costo accesosin índice

Datos

Número de registros r = 30,000 registros

Tamaño del bloque B = 1,024 bytes

Tamaño del registro R = 100 bytes

¿Costo búsqueda binaria?

Elementos por bloque = R/B ~ 10

Bloques totales = r / 10 = 3,000 bloques

Costo búsqueda binaria = log2(3000) ~ 12

11

Cálculo costo accesocon índice

Datos

Número de registros r = 30,000 registros

Tamaño del bloque B = 1,024 bytes

Tamaño del registro R = 100 bytes

Tamaño de la clave V = 9 bytes

Tamaño del #bloque P = 6 bytes

¿Costo búsqueda binaria?

Tamaño del índice: (V+P)*3,000 = 45,000

Número de bloques: 45,000/1,024 = 44

Búsqueda binaria = log2(44) ~ 6 + 1 = 7

12

Desventajas de este índice

Inserción y borrado son costosos

Solución:

Inserción: desbordamiento de bloques

Borrado: marca de “borrado” por elemento

13

Índice de agrupación

Registros ordenados por un campo que no es único.

Ej.: cod_aero, num_vuelo

Cod_aero BloqueAAR B1LAN B1QAT B2VAR B3

Bloque 1AAR, 222AAR, 333LAN, 444

Bloque 2LAN, 555LAN, 666QAT, 777

Bloque 3VAR, 888

14

Índice de agrupación con bloques separados

Se reserva espacio en cada bloque

Cod_aero BloqueAAR 1LAN 2QAT 4...

Bloque 1AAR, 222AAR, 333#next #

Bloque 2LAN, 444LAN, 555LAN, 666next 3

Bloque 3LAN,777##next #Bloque 4

QAT,888QAT,999#next #

15

Índice secundario

Se construye sobre un campo que no es clave primaria

Es un índice denso (cada registro tiene un lugar en el índice)

16

Índice secundario,sobre campo único

Ej.:

Pais( id_pais, nombre_pais )

nombre_pais id_bloqueArgentina 3Argelia 1Burundí 3Camerún 2Chad 2...

Bloque 11, Francia2, Argelia3, Suecia

Bloque 24, Camerún5, Chad6, México

Bloque 37, Burundí8, Noruega9, Argentina

17

Índice secundario,sobre campo no-único

Ej.: Persona( dni, nombre, apellido )

nombre id_indiceAnna 1Joan 2Jordi 3Xavier 4

Bloque 1x, Anna, xx, Joan, x

Bloque 2x, Jordi, xx, Anna, x

Bloque 3x, Joan, xx, Jordi, x

1B1R1, B2R2

2B1R2, B3R1

3B3R2, B2R1

Se utiliza un nivel intermedio de indirección

18

Índices multinivel

19

B-Tree

“Block-tree”

[Bayer & McCreight, 1972]

Árbol balanceado

Típicamente (mínimo) 3 niveles

Variante B+ es más popular

20

Nodo hoja (externo)

34 82

Al registro 34

Al registro 82

Al siguiente hermano

95

Al registro 95

21

Nodo interno

21 52 75

x < 21

21 <= x < 52 52 <=x < 75

75 <=x

21 52

75

22

B-Tree13

7 23 31 43

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47

23

Búsqueda en B-Tree

Buscar un elemento

Nodo hoja: búsqueda binaria entre los punteros

Nodo interno: búsqueda binaria y descender por el nodo apropiado

Búsqueda de elementos dentro de un rango (WHERE x > 10 AND x < 20)

24

Reglas del B-Tree

La raíz tiene 1 elemento (2 punteros) al menos

Todas las hojas están al mismo nivel

Existe una ocupación mínima (no sólo máxima)

En nuestros ejemplos es 1

Existe una ocupación máxima (en este caso k=3)

25

Insertar � 12� en B-Tree (trivial)13

7 23 31 43

2 3 5 7 11 12 13 17 19 23 29 31 37 41 43 47

26

Insertar � 40� en B-Tree13

7 23 31 43

2 3 5 7 11 13 17 19 23 29

31 37

43 47

40 41

27

Insertar � 40� en B-Tree (cont.)13 40

7 23 31

2 3 5 7 11 13 17 19 23 29

31 37

43 47

40 41

43

28

Borrado de � 7� en B-Tree13

7 23 31 43

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47

29

Borrado de � 7� en B-Tree (cont.)13

5 23 31 43

2 3 5 11 13 17 19 23 29 31 37 41 43 47

30

Borrado de � 11� en B-Tree13

5 23 31 43

2 3 5 11 13 17 19 23 29 31 37 41 43 47

31

Borrado de � 11� en B-Tree (cont.)13

5 23 31 43

2 3 5 13 17 19 23 29 31 37 41 43 47

32

Borrado de � 11� en B-Tree (cont.)13

13 23 31 43

2 3 5 13 17 19 23 29 31 37 41 43 47

33

Borrado de � 11� en B-Tree (cont.)23

13 31 43

2 3 5 13 17 19 23 29 31 37 41 43 47

34

Contenidos del B-Tree

Un B-Tree de orden k (datos por nodo) y altura h, ¿cuántos elementos puede tener?

35

Hashing

36

Función de Hashing

N claves en undominio de tamaño D

N << D

Típicamenteenteros entre0 y M

Con M > N

h(.)

37

Función de hashing típica

int hashfunction(char *s) {

int i;

for( i=0; *s; s++ ) {

i = 131*i + *s;

}

return( i % M );

}

38

Ejemplo simple

http://en.wikibooks.org/wiki/Data_Structures/Hash_Tables

39

Colisión: solución conlista enlazada

http://en.wikibooks.org/wiki/Data_Structures/Hash_Tables

40

Colisión: solución conlinear probing

http://en.wikibooks.org/wiki/Data_Structures/Hash_Tables

41

Hashing en memoria secundaria

Se usa M pequeño (M < N)

Cada bucket de la tabla de hashing es uno de los M bloques

Se admiten k colisiones, k=registros por bloque

Los bloques pueden tener punteros a bloques para desbordamiento

Cuando se llena (M*k) puede ser muy lento hacer rehashing

42

Hashing extensible

La función de hashing tiene x bits

Se ocupa primero 1 bit => sólo 2 buckets

Cuando se produce overflow, se reorganiza para ocupar 2 bits => 4 buckets

La tabla de hashing crece dinámicamente duplicando su tamaño

43

Resumen

Los SGBD ocultan una alta complejidad

Conocer cómo se organizan cada motor de bases de datos ayuda a obtener mejor eficiencia

Índices generan sobrecosto en espacio y sobrecosto en tiempo al modificar los datos => usar responsablemente

top related