3. 3 Tópicos Indices convencionales B-trees Esquema Hashing JOSÉ CUARTAS BASES DE DATOS
4. 4 10 30 50 70 90 20 40 60 80 100 Archivosecuencial Se organizanpor un campo de ordenacióngeneralmente claves primarias o únicas JOSÉ CUARTAS BASES DE DATOS
5. 5 10 30 50 70 90 110 20 40 60 80 100 120 10 30 50 70 90 20 40 60 80 100 Archivode datossecuencial Índicedenso Se tieneunaentrada en un registro en uno de los bloques del archivo de índicesporcadaentrada en al archivo de datos bloque En estetipo de índice se tiene un valor clave y un puntero al registro. por se tan pequeño se mantiene en el buffer Puntero a registro JOSÉ CUARTAS BASES DE DATOS
6. 6 10 50 90 130 170 210 30 70 110 150 190 230 10 30 50 70 90 20 40 60 80 100 Archivo de datossecuencial Índice no denso Se tieneunaentradaen un registro en uno de los bloques del archivode índicesporcadabloque en al archivo de datos Puntero a bloque JOSÉ CUARTAS BASES DE DATOS
7. 7 10 50 90 130 170 210 10 170 330 490 30 70 110 150 190 230 90 250 410 570 10 30 50 70 90 20 40 60 80 100 Archivosecuencial Extendidos2nd Nivel JOSÉ CUARTAS BASES DE DATOS
9. 9 Notassobrepunteros: (1) Punterosa bloque(índice no denso) puedenser mas pequeñosque un puntero a registro BP RP JOSÉ CUARTAS BASES DE DATOS
10. 10 (2)Si el archivoescontiguo , entonces se puedeomitir los punteros(e.j, computación) Notassobrepunteros: JOSÉ CUARTAS BASES DE DATOS
11. 11 R2 R1 R3 R4 K1 K2 K3 K4 JOSÉ CUARTAS BASES DE DATOS
12.
13. 13 No densos vs. Densos No denso o agrupados:Menosespacioporregistro del índice, estopermite mas almacenamiento de indices en la memoria Denso:Se puede saber si existe algún registro sin acceso al archivo (Mastarde: No densomejorparainserciones Denso necesarios para índice secundario) JOSÉ CUARTAS BASES DE DATOS
14. 14 Términos Archivo de indicesecuencial Clave de búsqueda( Clave primaria) Índiceprimario(en archivosecuencial) Índicesecundario Índicedenso(Para cadadatouna clave de búsqueda) Índice no denso o índice de agrupamiento Índicemultiple-nivel JOSÉ CUARTAS BASES DE DATOS
15. 15 Siguiente: Claves de búsquedaduplicadas Eliminación/Inserción Índicesecundario JOSÉ CUARTAS BASES DE DATOS
16. 16 10 10 20 30 40 10 20 30 30 45 Claves duplicadas JOSÉ CUARTAS BASES DE DATOS
18. 18 10 10 20 30 40 10 20 30 30 45 Claves duplicadas Índicedenso, un mejorposibilidad? 10 20 30 40 JOSÉ CUARTAS BASES DE DATOS
19. 19 10 10 20 30 40 10 20 30 30 45 Claves duplicadas Índice no denso, unaposibilidad? 10 10 20 30 JOSÉ CUARTAS BASES DE DATOS
20. 20 10 10 20 30 40 10 20 30 30 45 Cuidado con búsquedas Para 20 o 30! Claves duplicadas Índice no denso, unaposibilidad? 10 10 20 30 JOSÉ CUARTAS BASES DE DATOS
21.
22.
23. 23 Valoresduplicados, Índiceprimario Resumen El índicepuedeapuntar a la primerainstancia de cada valor único Archivo Índice a a a . . b JOSÉ CUARTAS BASES DE DATOS
24. 24 10 30 50 70 20 40 60 80 Eliminación de índice no densos 10 30 50 70 90 110 130 150 JOSÉ CUARTAS BASES DE DATOS
25.
26.
27.
28.
29.
30.
31.
32. 32 10 30 50 70 20 40 60 80 Eliminación de índicedenso 10 20 30 40 50 60 70 80 JOSÉ CUARTAS BASES DE DATOS
33.
34.
35.
36. 36 10 30 40 60 20 50 Inserción, caso:Índice no densos 10 30 40 60 JOSÉ CUARTAS BASES DE DATOS
52. Cuando se usa un índice secundario se cambiala vista de los registros, su localidad física no cambia. JOSÉ CUARTAS BASES DE DATOS
53.
54.
55.
56.
57.
58. 51 Con los índicessecundarios: También:Punteros son punteros a registro (no punteros a bloques; no se computan) El nivelbajoesdenso Los otrosniveles son no densos JOSÉ CUARTAS BASES DE DATOS
59. 52 20 20 10 10 30 10 40 40 40 40 Valoresduplicados& Índicessecundarios JOSÉ CUARTAS BASES DE DATOS
63. 55 20 20 10 10 30 10 40 40 40 40 40 30 20 Valoresduplicados& Índicessecundarios Otraopción... 10 JOSÉ CUARTAS BASES DE DATOS
64. 56 20 20 10 10 30 10 40 40 40 40 40 30 20 Valoresduplicados& Indices secundarios Otraopción... 10 Problema: Registro de tamaño variable en los índices! JOSÉ CUARTAS BASES DE DATOS
65. 57 20 20 10 10 30 10 40 40 40 40 10 50 20 60 30 ... 40 Valoresduplicados& Índicessecundarios Otra idea :Los registrosencadenados con lasmisma clave de búsqueda JOSÉ CUARTAS BASES DE DATOS
68. 59 20 20 10 10 30 10 40 40 40 40 10 50 20 60 30 ... 40 Valoresduplicados& Índicessecundarios Nivelintermedio de indirección JOSÉ CUARTAS BASES DE DATOS
69. 60 Porque los “nivelesintermedios” son lasideales IndicesRegistros Nombre: primario EMP (nombre,dept,piso,...) Dept: secundario Piso: secundario JOSÉ CUARTAS BASES DE DATOS
70. 61 Dept. índice EMP Pisoíndice Sis 2do Consulta: Conseguir los empleados en(Dept Sis) ^ (2do Piso) Muyútilparaíndices con campos no únicos JOSÉ CUARTAS BASES DE DATOS
71. 62 Sis 2do Consulta: Conseguir los empleados en(Dept Sis) ^ (2do Piso) Dept. índice EMP Pisoíndice Se cruza el nivelintermedio de Dept con la cubeta de 2do Pisoconsiguiendolos empleados JOSÉ CUARTAS BASES DE DATOS
72. 63 Resumiendo Indices convencionales Ideas basicas: densos, no desos, multiple-nivel… Claves duplicadas Eliminación/Inserción Indices secundarios Nivelintermedio de indirección JOSÉ CUARTAS BASES DE DATOS
73. 64 Índiceconvencional Ventajas: - Simples - Los Índeces se almacenan un archivosecuencialfácil de escanear Desventajas: - Costosoen inserción, - Perdidadsecuencia y balance JOSÉ CUARTAS BASES DE DATOS
77. 68 Suguiente: Otrotipo de índice Cuando nose deseasecuencialidad Trata de obtener“balance” JOSÉ CUARTAS BASES DE DATOS
78. 69 EjemploB+Tree(Árboles) n=3 Raíz(ROOT) 100 120 150 180 30 3 5 11 120 130 180 200 100 101 110 150 156 179 30 35 JOSÉ CUARTAS BASES DE DATOS
79. 70 Ejemplo de un nodointerno 57 81 95 Claves Claves Claves Claves < 57 57 k<81 81k<95 95 JOSÉ CUARTAS BASES DE DATOS
80. 71 Ejemplo de un nodohoja: puntero de un nodointerno puntero a la Siguientehoja en la secuencia 57 81 95 Registro con clave 57 Registrocon clave 81 Registrocon clave 85 JOSÉ CUARTAS BASES DE DATOS
82. 73 Tamaño del nodo: n+1 punteros n Claves de búsqueda (fijos) JOSÉ CUARTAS BASES DE DATOS
83. 74 No se desea un nodovacío Utilize por lo menos Nodointerno:(n+1)/2punteros Hoja:(n+1)/2punteros a datos JOSÉ CUARTAS BASES DE DATOS
84. 75 n=3 Full node min. node Nodointerno Hoja 120 150 180 30 3 5 11 30 35 Cuentaseimpresiesvacío JOSÉ CUARTAS BASES DE DATOS
85. 76 ReglasB+treeárbol de ordenn (1) Todaslashojasestán al mismonivel(balanceado) (2) Punteros en lashojas son a los registrosexceptopara “punteros de secuencia” JOSÉ CUARTAS BASES DE DATOS
86. 77 (3) Número de punteros/claves paraB+tree Max Max Min Min ptrsClavesptrsdataClaves No-hojas (no-raíz) n+1 n (n+1)/2 (n+1)/2- 1 hojas (no-raíz) n+1 n (n+1)/2 (n+1)/2 Raíz n+1 n 1 1 JOSÉ CUARTAS BASES DE DATOS
87. 78 Inserción en el B+tree (a) Simple caso Espaciodisponible en la hoja (b) Desborde de hoja (c) Desborde de Nodointerno (d) Nueva raíz JOSÉ CUARTAS BASES DE DATOS
88. 79 (a) Inserción clave = 32 n=3 100 30 3 5 11 30 31 JOSÉ CUARTAS BASES DE DATOS
89. 80 32 (a) Inserción clave = 32 n=3 100 30 3 5 11 30 31 JOSÉ CUARTAS BASES DE DATOS
90. 81 (a) Inserción clave = 7 n=3 100 30 3 5 11 30 31 JOSÉ CUARTAS BASES DE DATOS
91. 82 3 5 7 (b) Inserción clave = 7 n=3 100 30 3 5 11 30 31 JOSÉ CUARTAS BASES DE DATOS
92. 83 7 3 5 7 (b) Inserción clave = 7 n=3 100 30 3 5 11 30 31 JOSÉ CUARTAS BASES DE DATOS
93. 84 (c) Inserción clave = 160 n=3 100 120 150 180 180 200 150 156 179 JOSÉ CUARTAS BASES DE DATOS
94. 85 160 179 (c) Inserción clave = 160 n=3 100 120 150 180 180 200 150 156 179 JOSÉ CUARTAS BASES DE DATOS
95. 86 180 160 179 (c) Inserción clave = 160 n=3 100 120 150 180 180 200 150 156 179 JOSÉ CUARTAS BASES DE DATOS
96. 87 160 180 160 179 (c) Inserción clave = 160 n=3 100 120 150 180 180 200 150 156 179 JOSÉ CUARTAS BASES DE DATOS
97. 88 (d) Nueva raíz(ROOT), inserción 45 n=3 10 20 30 1 2 3 10 12 20 25 30 32 40 JOSÉ CUARTAS BASES DE DATOS
98. 89 40 45 (d) Nueva raíz(ROOT), inserción 45 n=3 10 20 30 1 2 3 10 12 20 25 30 32 40 JOSÉ CUARTAS BASES DE DATOS
99. 90 40 40 45 (d) Nueva raíz(ROOT), inserción 45 n=3 10 20 30 1 2 3 10 12 20 25 30 32 40 JOSÉ CUARTAS BASES DE DATOS
100. 91 30 Nueva raíz 40 40 45 (d) Nueva raíz(ROOT), inserción 45 n=3 10 20 30 1 2 3 10 12 20 25 30 32 40 JOSÉ CUARTAS BASES DE DATOS
101. 92 (a) Caso simple - no hay ejemplo (b) Combinación con el vecino(sibling) (c) Redistribución de claves de búsqueda (d) Caso (b) o (c) en nodointerno Eliminación de B+tree JOSÉ CUARTAS BASES DE DATOS
102. 93 (b) Combinación con el nodovecino Elimina 50 n=4 10 40 100 10 20 30 40 50 JOSÉ CUARTAS BASES DE DATOS
103. 94 40 (b) Combinación con el nodo vecino Elimina 50 n=4 10 40 100 10 20 30 40 50 JOSÉ CUARTAS BASES DE DATOS
104. 95 (c) Redistribución de Claves Eliminación 50 n=4 10 40 100 10 20 30 35 40 50 JOSÉ CUARTAS BASES DE DATOS
105. 96 35 35 (c) Redistribución de Claves Eliminación 50 n=4 10 40 100 10 20 30 35 40 50 JOSÉ CUARTAS BASES DE DATOS
106.
107.
108.
109.
110. 101 Comparasión: B-trees vs. estaticosíndice de archivosecuencial Ref #1: Held & Stonebraker “B-Trees Re-examined” CACM, Feb. 1978 JOSÉ CUARTAS BASES DE DATOS
111. 102 Ref # 1 claims: - Controld e concurrenciaesmuyduro en B-Trees - B-tree consumenmásespacio Para la comparación: Bloque= 512 bytes clave = puntero= 4 bytes 4 datos de registroporbloque JOSÉ CUARTAS BASES DE DATOS
112. 103 k1 k2 k3 Ejemplo: 1 Bloque de índiceestatico 127 claves (127+1)4 = 512 Bytes -> punteros a un índiceexplicito! Porencima de 127 bloques 1 data block k1 k2 k3 JOSÉ CUARTAS BASES DE DATOS
113. 104 k1 k2 k3 Ejemplo: 1 Bloque B-tree k1 1 data block 63 Claves 63x(4+4)+8 = 512 Bytes -> punterosnecesarios en B-tree porencima de 63 porqueíndice no contiguo k2 ... k63 - siguiente JOSÉ CUARTAS BASES DE DATOS
114. 105 Ref. #1 análisis Para un bloque de archivodespués de 32,000 inserciones después de 16,000 búsquedas El índiceahorrasuficienteespaciopara la reorganización JOSÉ CUARTAS BASES DE DATOS
115. 106 Ref. #1 conclusión Mejoríndiceestático!! Ref. #1 análisis Para un bloque de archivodespués de 32,000 inserciones después de 16,000 búsquedas El índiceahorrasuficienteespaciopara la reorganización JOSÉ CUARTAS BASES DE DATOS
116. 107 Ref. #2 conclusión Mejor B-trees!! Ref #2: M. Stonebraker, “Retrospective on a database system,” TODS, June 1980 JOSÉ CUARTAS BASES DE DATOS
117. 108 Ref. #2 conclusión B-trees mejor!! DBA no nesecitan saber cuandoreorganizar DBA no nesecitanconocercomoestan de cargadoslaspáginas del nuevoíndice JOSÉ CUARTAS BASES DE DATOS
118. 109 Ref. #2 conclusión Mejor B-trees!! Buffering B-tree: tienerequerimiento de buffer fijo Estatico: debe leer variosbloques de desbordamientoporeficiencia(buffer largos y de tamaño variable) JOSÉ CUARTAS BASES DE DATOS
119. 110 Problemainteresante: Para B+tree, que tan largo debesern? … nnúmero de claves / nodo JOSÉ CUARTAS BASES DE DATOS
120. 111 Supuestos: (1) Tiempo de lectura de un nodo de disco es (S+Tn) msec. JOSÉ CUARTAS BASES DE DATOS
121. 112 Supuestos: (1) Tiempo de lectura de un nodo de disco es (S+Tn) msec. (2) Un bloque en memoria, usabúsquedabinariapor clave de búsqueda: (a + b LOG2n) msec. Para algunascostantesa,b; se asumea << S JOSÉ CUARTAS BASES DE DATOS
122. 113 Supuestos: (1) Tiempo de lectura de un nodo de disco es (S+Tn) msec. (2) Un bloque en memoria, usaunabusquedabinariaparalocalizar la clave:(a + b LOG2n) msec. Para algunascostantesa,b; se asume a << S (3) AsumenB+treeestalleno, i.e., # nodosexaminadosesLOGnNdondeN= # registros JOSÉ CUARTAS BASES DE DATOS
123. 114 Se consigue:f(n) = Tiempoparaencontrar un registro f(n) noptn JOSÉ CUARTAS BASES DE DATOS
124. 115 VariaciónB+tree: B-tree (no +) Idea: Evitar claves duplicadas Tenerpunteros a registro en nodosinternos JOSÉ CUARTAS BASES DE DATOS
125. 116 K1 P1 K2 P2 K3 P3 registroregistroregistro con K1con K2con K3 a las clavesa las claves a las claves a las claves < K1 K1<x<K2 K2<x<k3 >k3 JOSÉ CUARTAS BASES DE DATOS
129. 120 Ventajas y desventajas: B-trees tiene mas rapidabúsquedaqueB+trees en B-tree, nodosinternos& hojadiferentetamaño enB-tree, la eliminaciónescomplicada Preferido el B+trees! JOSÉ CUARTAS BASES DE DATOS
130. 121 Pero note: Si el bloquees de tamañofijo (Debido a restricciones de disco y buffer) Entonces la búsquedaporB+treeesmucho mejor!! JOSÉ CUARTAS BASES DE DATOS
131. 122 Ejemplo: - Punteros 4 bytes - Claves 4 bytes - Bloques 100 bytes (just example) - Búsquedapara un btree de nivel 2 JOSÉ CUARTAS BASES DE DATOS
132. 123 B-tree: Raíztiene 8 claves + 8 punteros a registro + 9 punteroshijo = 8x4 + 8x4 + 9x4 = 100 bytes JOSÉ CUARTAS BASES DE DATOS
133. 124 B-tree: Raíztiene 8 claves + 8 punteros a registro + 9 punteroshijo = 8x4 + 8x4 + 9x4 = 100 bytes De cada9 hijos:12 rec. puntero(+12 keys) = 12x(4+4) + 4 = 100 bytes JOSÉ CUARTAS BASES DE DATOS
134. 125 B-tree: Raíztiene 8 claves + 8 punteros a registro + 9 punteroshijo = 8x4 + 8x4 + 9x4 = 100 bytes De cada9 hijos:12 rec. puntero(+12 keys) = 12x(4+4) + 4 = 100 bytes 2-nivel B-tree, Max # registros= 12x9 + 8 = 116 JOSÉ CUARTAS BASES DE DATOS
135. 126 B+tree: Raíz tiene 12 claves + 13 punteros hijo = 12x4 + 13x4 = 100 bytes JOSÉ CUARTAS BASES DE DATOS