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

43
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).

Upload: others

Post on 01-Jan-2021

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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).

Page 2: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

2

Consulta

ÍndiceDatos

Respuesta

IndexaciónÍndice

Datos

Page 3: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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

Page 4: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

4

Índices en ficheros secuenciales

Page 5: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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)

Page 6: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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

Page 7: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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

Page 8: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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

Page 9: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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

Page 10: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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

Page 11: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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

Page 12: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

12

Desventajas de este índice

Inserción y borrado son costosos

Solución:

Inserción: desbordamiento de bloques

Borrado: marca de “borrado” por elemento

Page 13: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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

Page 14: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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 #

Page 15: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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)

Page 16: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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

Page 17: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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

Page 18: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

18

Índices multinivel

Page 19: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

19

B-Tree

“Block-tree”

[Bayer & McCreight, 1972]

Árbol balanceado

Típicamente (mínimo) 3 niveles

Variante B+ es más popular

Page 20: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

20

Nodo hoja (externo)

34 82

Al registro 34

Al registro 82

Al siguiente hermano

95

Al registro 95

Page 21: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

21

Nodo interno

21 52 75

x < 21

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

75 <=x

21 52

75

Page 22: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

22

B-Tree13

7 23 31 43

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

Page 23: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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)

Page 24: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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)

Page 25: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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

Page 26: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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

Page 27: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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

Page 28: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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

Page 29: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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

Page 30: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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

Page 31: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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

Page 32: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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

Page 33: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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

Page 34: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

34

Contenidos del B-Tree

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

Page 35: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

35

Hashing

Page 36: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

36

Función de Hashing

N claves en undominio de tamaño D

N << D

Típicamenteenteros entre0 y M

Con M > N

h(.)

Page 37: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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 );

}

Page 38: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

38

Ejemplo simple

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

Page 39: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

39

Colisión: solución conlista enlazada

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

Page 40: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

40

Colisión: solución conlinear probing

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

Page 41: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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

Page 42: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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

Page 43: Sistemas de Información II Tema 8. Estructuras de datos en ... · Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Carlos Castillo UPF – 2008 Bibliografía:

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