Está en la página 1de 43

Sistemas de Informacin II

Tema 8. Estructuras de datos en memoria secundaria

Bibliografa: Elmasri y Navathe: Fundamentos de Sistemas de Bases de Datos 3 edicin, 2002 (Captulo 6). Garcia-Molina, Ullman y Widom: Database systems: the complete book. Prentice-Hall (Captulos 12 y 13). Carlos Castillo UPF 2008
1

ndice

Indexacin Datos

Consulta

ndice

Datos Respuesta
2

Indexacin
ndice
Estructura que permite encontrar rpidamente un registro de datos

Requerimientos
Bajo sobrecosto (overhead) en espacio Alta velocidad de bsqueda [Opcional] Alta velocidad de insercin [Opcional] Alta velocidad de borrado

ndices en ficheros secuenciales

Fichero secuencial
10 | Juan 20 | Pedro 30 | Diego 40 | Ana 50 | Mara 60 | Ivn Persona(idpersona int, nombre char(12)) Asumimos bloque es de tamao 32 bytes (anormalmente pequeo)
5

Bloques

ndice denso
10 20 30 40 50 60 B1R1 B1R2 B2R1 B2R2 B3R1 B3R2 10 | Juan 20 | Pedro 30 | Diego 40 | Ana 50 | Mara 60 | Ivn Datos

ndice

Todos los elementos estn en el ndice

Otro ejemplo ndice denso


01
Datos (19 bytes)

0123456789012345678 JUANPEDRODIEGOTOMAS 0
Veloz en la recuperacin de registros por nmero ej.: recuperar registro 2

ndice (4 ints)

4 9 14

ndice disperso
10 B1R1 30 B2R1 50 B3R1 10 | Juan 20 | Pedro 30 | Diego 40 | Ana 50 | Mara 60 | Ivn Datos

ndice

Slo algunos de los elementos estn en el ndice Densidad del ndice = claves indexadas / claves totales
8

ndice primario
ndice sobre el atributo segn el cual estn ordenados los elementos, con el primer elemento de cada bloque Es un ndice disperso Bloque 1 Aaron, Ed Acosta, Marc Bloque 2 Adams, John Akers, Jan ... Bloque n Wright, Pam Zimmer, Byron
9

Aaron, Ed B1 Adams, John B2 ... Wright, Pam Bn

Clculo costo acceso sin ndice


Datos
Nmero de registros Tamao del bloque Tamao del registro r = 30,000 registros B = 1,024 bytes R = 100 bytes

Costo bsqueda binaria?


Elementos por bloque = R/B ~ 10 Bloques totales = r / 10 = 3,000 bloques Costo bsqueda binaria = log2(3000) ~ 12
10

Clculo costo acceso con ndice


Datos
Nmero de registros Tamao del bloque Tamao del registro Tamao de la clave r = 30,000 registros B = 1,024 bytes R = 100 bytes V = 9 bytes

Tamao del #bloque P = 6 bytes

Costo bsqueda binaria?


Tamao del ndice: (V+P)*3,000 = 45,000 Nmero de bloques: 45,000/1,024 = 44 Bsqueda binaria = log2(44) ~ 6 + 1 = 7
11

Desventajas de este ndice


Insercin y borrado son costosos Solucin:
Insercin: desbordamiento de bloques Borrado: marca de borrado por elemento

12

ndice de agrupacin
Registros ordenados por un campo que no es nico. Ej.: cod_aero, num_vuelo
Cod_aero Bloque AAR B1 LAN B1 QAT B2 VAR B3 Bloque 1 AAR, 222 AAR, 333 LAN, 444 Bloque 2 LAN, 555 LAN, 666 QAT, 777 Bloque 3 VAR, 888

13

ndice de agrupacin con bloques separados


Se reserva espacio en cada bloque
Bloque 1 AAR, 222 AAR, 333 Bloque 2 LAN, 444 # next # LAN, 555 LAN, 666Bloque 3 next 3 LAN,777 # # next # Bloque 4 QAT,888 QAT,999 # next #

Cod_aero Bloque AAR 1 LAN 2 QAT 4 ...

14

ndice secundario
Se construye sobre un campo que no es clave primaria Es un ndice denso (cada registro tiene un lugar en el ndice)

15

ndice secundario, sobre campo nico


Ej.:
Pais( id_pais, nombre_pais ) Bloque 1
nombre_pais Argentina Argelia Burund Camern Chad ... id_bloque 3 1 3 2 2 1, Francia 2, Argelia 3, Suecia Bloque 2 4, Camern 5, Chad 6, Mxico Bloque 3 7, Burund 8, Noruega 9, Argentina

16

ndice secundario, sobre campo no-nico


Ej.: Persona( dni, nombre, apellido )
Bloque 1 x, Anna, x x, Joan, x Bloque 2 x, Jordi, x x, Anna, x Bloque 3 x, Joan, x x, Jordi, x

1 B1R1, B2R2 nombre id_indice Anna 1 Joan 2 Jordi 3 Xavier 4 2 B1R2, B3R1 3 B3R2, B2R1

Se utiliza un nivel intermedio de indireccin

17

ndices multinivel

18

B-Tree
Block-tree
[Bayer & McCreight, 1972]

rbol balanceado Tpicamente (mnimo) 3 niveles Variante B+ es ms popular

19

Nodo hoja (externo)


34 82 95

Al siguiente hermano Al registro 34 Al registro 82 Al registro 95

20

Nodo interno
21 52 75

x < 21
75

75 <=x

21

21 <= x < 52

52

52 <=x < 75

21

B-Tree
13

23 31 43

11

13 17 19

23 29

31 37 41

43 47

22

Bsqueda en B-Tree
Buscar un elemento
Nodo hoja: bsqueda binaria entre los punteros Nodo interno: bsqueda binaria y descender por el nodo apropiado

Bsqueda de elementos dentro de un rango (WHERE x > 10 AND x < 20)

23

Reglas del B-Tree


La raz tiene 1 elemento (2 punteros) al menos Todas las hojas estn al mismo nivel Existe una ocupacin mnima (no slo mxima)
En nuestros ejemplos es 1

Existe una ocupacin mxima (en este caso k=3)

24

Insertar 12 en B-Tree (trivial)


13

23 31 43

11 12

13 17 19

23 29

31 37 41

43 47

25

Insertar 40 en B-Tree
13

23 31 43

11

13 17 19

23 29

43 47

31 37

40 41

26

Insertar 40 en B-Tree (cont.)


13 40

23 31

43

11

13 17 19

23 29

43 47

31 37

40 41

27

Borrado de 7 en B-Tree
13

23 31 43

11

13 17 19

23 29

31 37 41

43 47

28

Borrado de 7 en B-Tree (cont.)


13

23 31 43

11

13 17 19

23 29

31 37 41

43 47

29

Borrado de 11 en B-Tree
13

23 31 43

11

13 17 19

23 29

31 37 41

43 47

30

Borrado de 11 en B-Tree (cont.)


13

23 31 43

13 17 19

23 29

31 37 41

43 47

31

Borrado de 11 en B-Tree (cont.)


13

13

23 31 43

13 17 19

23 29

31 37 41

43 47

32

Borrado de 11 en B-Tree (cont.)


23

13

31 43

13 17 19

23 29

31 37 41

43 47

33

Contenidos del B-Tree


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

34

Hashing

35

Funcin de Hashing

N claves en un dominio de tamao D N << D

h(.)

Tpicamente enteros entre 0yM Con M > N

36

Funcin de hashing tpica


int hashfunction(char *s) { int i; for( i=0; *s; s++ ) { i = 131*i + *s; } return( i % M ); }

37

Ejemplo simple

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

Colisin: solucin con lista enlazada

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

Colisin: solucin con linear probing

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

Hashing en memoria secundaria


Se usa M pequeo (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

41

Hashing extensible
La funcin de hashing tiene x bits Se ocupa primero 1 bit => slo 2 buckets Cuando se produce overflow, se reorganiza para ocupar 2 bits => 4 buckets La tabla de hashing crece dinmicamente duplicando su tamao

42

Resumen
Los SGBD ocultan una alta complejidad Conocer cmo 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

43

También podría gustarte