1<br />Índiceshttp://es.wikipedia.org/wiki/Indexar<br />José Andrés CuartasMuñoz<br />JOSÉ CUARTAS<br />BASES DE DATOS<br />
2<br />Índexación& Hashing<br />	valor<br />registro<br />?<br />valor<br />JOSÉ CUARTAS<br />BASES DE DATOS<br />
3<br />Tópicos<br />Indices convencionales<br />B-trees<br />Esquema Hashing<br />JOSÉ CUARTAS<br />BASES DE DATOS<br />
4<br />10<br />30<br />50<br />70<br />90<br />20<br />40<br />60<br />80<br />100<br />Archivosecuencial<br />Se organiza...
5<br />10<br />30<br />50<br />70<br />90<br />110<br />20<br />40<br />60<br />80<br />100<br />120<br />10<br />30<br />...
6<br />10<br />50<br />90<br />130<br />170<br />210<br />30<br />70<br />110<br />150<br />190<br />230<br />10<br />30<b...
7<br />10<br />50<br />90<br />130<br />170<br />210<br />10<br />170<br />330<br />490<br />30<br />70<br />110<br />150<...
8<br />Comentarios:<br />{ARCHIVO,INDICES} pueden ser contiguos<br />				  o no (Bloquesencadenados)<br />JOSÉ CUARTAS<br ...
9<br />Notassobrepunteros:<br />(1) Punterosa bloque(índice no denso) puedenser mas pequeñosque un puntero a registro<br /...
10<br />(2)Si el archivoescontiguo , entonces se puedeomitir los punteros(e.j, computación)<br />Notassobrepunteros:<br />...
11<br />R2<br />R1<br />R3<br />R4<br />K1<br />K2<br />K3<br />K4<br />JOSÉ CUARTAS<br />BASES DE DATOS<br />
12<br />dice:<br />1024 B<br />Porbloque<br />R2<br />R1<br />R3<br /><ul><li>Si se deseael bloque K3:</li></ul>consigue e...
13<br />No densos vs. Densos<br />No denso o agrupados:Menosespacioporregistro del índice, estopermite mas almacenamiento ...
14<br />Términos<br />Archivo de indicesecuencial<br />Clave de búsqueda( Clave primaria)<br />Índiceprimario(en archivos...
15<br />Siguiente:<br />Claves de búsquedaduplicadas<br />Eliminación/Inserción<br />Índicesecundario<br />JOSÉ CUARTAS<br...
16<br />10<br />10<br />20<br />30<br />40<br />10<br />20<br />30<br />30<br />45<br />Claves duplicadas<br />JOSÉ CUARTA...
17<br />10<br />10<br />20<br />30<br />40<br />10<br />10<br />20<br />30<br />40<br />10<br />20<br />30<br />30<br />45...
18<br />10<br />10<br />20<br />30<br />40<br />10<br />20<br />30<br />30<br />45<br />Claves duplicadas<br />Índicedenso...
19<br />10<br />10<br />20<br />30<br />40<br />10<br />20<br />30<br />30<br />45<br />Claves duplicadas<br />Índice no d...
20<br />10<br />10<br />20<br />30<br />40<br />10<br />20<br />30<br />30<br />45<br />Cuidado con búsquedas<br />Para 20...
21<br />10<br />10<br />20<br />30<br />40<br />10<br />20<br />30<br />30<br />45<br />Claves duplicadas<br />Índice no d...
22<br />10<br />10<br />20<br />30<br />40<br />10<br />20<br />30<br />30<br />45<br />Puede<br />ser 40?<br />Claves dup...
23<br />Valoresduplicados, Índiceprimario<br />Resumen<br />El índicepuedeapuntar a la primerainstancia de cada valor únic...
24<br />10<br />30<br />50<br />70<br />20<br />40<br />60<br />80<br />Eliminación de índice no densos<br />10<br />30<br...
25<br />10<br />30<br />50<br />70<br />20<br />40<br />60<br />80<br />Eliminación de índice no denso<br /><ul><li>Elimin...
26<br />10<br />30<br />50<br />70<br />20<br />40<br />60<br />80<br />Eliminación de índice no denso<br /><ul><li>Elimin...
27<br />10<br />30<br />50<br />70<br />20<br />40<br />60<br />80<br />Eliminación de índice no denso<br /><ul><li>Elimin...
28<br />10<br />30<br />50<br />70<br />20<br />40<br />60<br />80<br />40<br />40<br />Eliminación de índice no denso<br ...
29<br />10<br />30<br />50<br />70<br />20<br />40<br />60<br />80<br />Eliminación de índices no densos<br /><ul><li>Elim...
30<br />10<br />30<br />50<br />70<br />20<br />40<br />60<br />80<br />Eliminación de índice no denso<br /><ul><li>Elimin...
31<br />10<br />30<br />50<br />70<br />20<br />40<br />60<br />80<br />50<br />70<br />Eliminación de índice no denso<br ...
32<br />10<br />30<br />50<br />70<br />20<br />40<br />60<br />80<br />Eliminación de índicedenso<br />10<br />20<br />30...
33<br />10<br />50<br />70<br />20<br />60<br />80<br />Eliminación de índicedenso<br /><ul><li>Eliminarregistro 30</li></...
34<br />10<br />50<br />70<br />20<br />60<br />80<br />40<br />Eliminación de índicedenso<br /><ul><li>Eliminarregistro 3...
35<br />10<br />50<br />70<br />20<br />60<br />80<br />40<br />40<br />Eliminación de índicedenso<br /><ul><li>Eliminarre...
36<br />10<br />30<br />40<br />60<br />20<br />50<br />Inserción, caso:Índice no densos<br />10<br />30<br />40<br />60<b...
37<br />10<br />30<br />40<br />60<br />20<br />50<br />Inserción, caso:Índice no densos<br /><ul><li>insertar el registro...
38<br />10<br />30<br />40<br />60<br />20<br />50<br />34<br /><ul><li>quebuenasuerte!</li></ul>se tieneespaciolibre<br /...
39<br />10<br />30<br />40<br />60<br />20<br />50<br />Inserción, caso:Índice no densos<br /><ul><li>insertar el registro...
40<br />10<br />30<br />40<br />60<br />20<br />50<br />15<br />20<br />20<br />30<br />Inserción, caso:Índice no densos<b...
41<br />10<br />30<br />40<br />60<br />20<br />50<br />15<br />20<br />20<br />30<br />Inserción, caso:Índice no densos<b...
Variación:
inserta un nuevobloque(archivoencadenado)
actualiza el índice</li></ul>JOSÉ CUARTAS<br />BASES DE DATOS<br />
42<br />10<br />30<br />40<br />60<br />20<br />50<br />Inserción, caso:Índice no densos<br /><ul><li>insertar el registro...
43<br />10<br />30<br />40<br />60<br />25<br />20<br />50<br />Bloque de desbordamiento<br />(despues se reorganiza...)<b...
44<br />Inserción, caso:Índice no densos<br /><ul><li>Similar
esmascostoso. . . </li></ul>JOSÉ CUARTAS<br />BASES DE DATOS<br />
45<br />30<br />20<br />80<br />100<br />90<br />50<br />70<br />40<br />10<br />60<br />Índicessecundarios<br />Secuencia...
Se puedencrearvariosíndicessecundarios
Demasiadocosto en lasoperaciones….
Cuando se usa un índice secundario se cambia</li></ul>la vista de los registros, su localidad física<br />no cambia.<br />...
46<br />30<br />20<br />80<br />100<br />90<br />50<br />70<br />40<br />10<br />60<br />30<br />90<br />20<br />...<br />...
47<br />30<br />20<br />80<br />100<br />90<br />50<br />70<br />40<br />10<br />60<br />30<br />90<br />20<br />...<br />...
48<br />30<br />20<br />80<br />100<br />90<br />50<br />70<br />40<br />10<br />60<br />Índicessecundarios<br />Archivo<b...
49<br />30<br />20<br />80<br />100<br />90<br />50<br />70<br />40<br />10<br />60<br />10<br />50<br />20<br />60<br />3...
50<br />30<br />20<br />80<br />100<br />90<br />50<br />70<br />40<br />10<br />60<br />10<br />50<br />10<br />20<br />6...
51<br />Con los índicessecundarios:<br />También:Punteros son punteros a registro<br />(no punteros a bloques; no se compu...
52<br />20<br />20<br />10<br />10<br />30<br />10<br />40<br />40<br />40<br />40<br />Valoresduplicados& Índicessecundar...
53<br />20<br />20<br />10<br />10<br />30<br />10<br />40<br />40<br />40<br />40<br />10<br />20<br />40<br />10<br />30...
54<br />20<br />20<br />10<br />10<br />30<br />10<br />40<br />40<br />40<br />40<br />10<br />20<br />40<br />10<br />30...
tiempo de búsqueda</li></ul>JOSÉ CUARTAS<br />BASES DE DATOS<br />
55<br />20<br />20<br />10<br />10<br />30<br />10<br />40<br />40<br />40<br />40<br />40<br />30<br />20<br />Valoresdup...
56<br />20<br />20<br />10<br />10<br />30<br />10<br />40<br />40<br />40<br />40<br />40<br />30<br />20<br />Valoresdup...
57<br />20<br />20<br />10<br />10<br />30<br />10<br />40<br />40<br />40<br />40<br />10<br />50<br />20<br />60<br />30...
58<br />20<br />20<br />10<br />10<br />30<br />10<br />40<br />40<br />40<br />40<br />10<br />50<br />20<br />60<br />30...
Nesecitallevar el seguimento de los campos</li></ul>JOSÉ CUARTAS<br />BASES DE DATOS<br />
59<br />20<br />20<br />10<br />10<br />30<br />10<br />40<br />40<br />40<br />40<br />10<br />50<br />20<br />60<br />30...
60<br />Porque los “nivelesintermedios” son lasideales<br />IndicesRegistros<br />Nombre: primario	EMP (nombre,dept,piso,....
61<br />Dept. índice			EMP			 Pisoíndice<br />Sis<br />2do<br />Consulta: Conseguir los empleados en(Dept Sis) ^ (2do Piso...
62<br />Sis<br />2do<br />Consulta: Conseguir los empleados en(Dept Sis) ^ (2do Piso)<br />Dept. índice			EMP			 Pisoíndic...
63<br />Resumiendo<br />Indices convencionales<br />Ideas basicas: densos, no desos, multiple-nivel…<br />Claves duplicada...
64<br />Índiceconvencional<br />Ventajas:<br />			- Simples<br />			- Los Índeces se almacenan un archivosecuencialfácil d...
65<br />EjemploÍndice(secuencia)<br />continuos<br />espaciolibre<br />10<br />20<br />30<br />40<br />50<br />60<br />70<...
66<br />39<br />32<br />31<br />38<br />33<br />35<br />34<br />36<br />Áreade desbordamiento<br /> (no secuencia)<br />Ej...
67<br />Esquema:<br />Indiceconvencional<br />B-Trees                   Siguiente<br />JOSÉ CUARTAS<br />BASES DE DATOS<b...
68<br />Suguiente: Otrotipo de índice<br />Cuando nose deseasecuencialidad<br />Trata de obtener“balance”<br />JOSÉ CUARTA...
69<br />EjemploB+Tree(Árboles) 				n=3<br />Raíz(ROOT)<br />100<br />120<br />150<br />180<br />30<br />3<br />5<br />11<b...
70<br />Ejemplo de un nodointerno<br />57<br />81<br />95<br />Claves	Claves	 Claves   Claves<br />< 57		57 k<81		81k<95...
71<br />Ejemplo de un nodohoja:<br />puntero de un nodointerno<br />puntero a la<br />Siguientehoja 						en la secuencia<...
72<br />Notación		n=3<br />Hoja:notienenhijos<br />Nodointerno:<br />30<br />35<br />30<br />35<br />30<br />30<br />JOSÉ ...
73<br />Tamaño del nodo:		n+1 punteros<br />					n Claves de búsqueda<br />(fijos)<br />JOSÉ CUARTAS<br />BASES DE DATOS<b...
74<br />No se desea un nodovacío<br />Utilize por lo menos<br />Nodointerno:(n+1)/2punteros<br />Hoja:(n+1)/2punteros ...
75<br />n=3<br />				Full node		min. node<br />Nodointerno<br />Hoja<br />120<br />150<br />180<br />30<br />3<br />5<br /...
76<br />ReglasB+treeárbol de ordenn<br />(1) Todaslashojasestán al mismonivel(balanceado)<br />(2) Punteros en lashojas so...
77<br />(3) Número de punteros/claves paraB+tree<br />Max   Max  Min             Min<br />ptrsClavesptrsdataClaves<br />N...
78<br />Inserción en el B+tree<br />(a) Simple caso<br />Espaciodisponible en la hoja<br />(b) Desborde de hoja<br />(c) D...
79<br />(a) Inserción clave = 32<br />n=3<br />100<br />30<br />3<br />5<br />11<br />30<br />31<br />JOSÉ CUARTAS<br />BA...
80<br />32<br />(a) Inserción clave = 32<br />n=3<br />100<br />30<br />3<br />5<br />11<br />30<br />31<br />JOSÉ CUARTAS...
81<br />(a) Inserción clave = 7<br />n=3<br />100<br />30<br />3<br />5<br />11<br />30<br />31<br />JOSÉ CUARTAS<br />BAS...
82<br />3<br />5<br />7<br />(b) Inserción clave = 7<br />n=3<br />100<br />30<br />3<br />5<br />11<br />30<br />31<br />...
83<br />7<br />3<br />5<br />7<br />(b) Inserción clave = 7<br />n=3<br />100<br />30<br />3<br />5<br />11<br />30<br />3...
84<br />(c) Inserción clave = 160<br />n=3<br />100<br />120<br />150<br />180<br />180<br />200<br />150<br />156<br />17...
85<br />160<br />179<br />(c) Inserción clave = 160<br />n=3<br />100<br />120<br />150<br />180<br />180<br />200<br />15...
86<br />180<br />160<br />179<br />(c) Inserción clave = 160<br />n=3<br />100<br />120<br />150<br />180<br />180<br />20...
87<br />160<br />180<br />160<br />179<br />(c) Inserción clave = 160<br />n=3<br />100<br />120<br />150<br />180<br />18...
88<br />(d) Nueva raíz(ROOT),  inserción 45<br />n=3<br />10<br />20<br />30<br />1<br />2<br />3<br />10<br />12<br />20<...
89<br />40<br />45<br />(d) Nueva raíz(ROOT),  inserción 45<br />n=3<br />10<br />20<br />30<br />1<br />2<br />3<br />10<...
90<br />40<br />40<br />45<br />(d) Nueva raíz(ROOT),  inserción 45<br />n=3<br />10<br />20<br />30<br />1<br />2<br />3<...
91<br />30<br />Nueva raíz<br />40<br />40<br />45<br />(d) Nueva raíz(ROOT),  inserción 45<br />n=3<br />10<br />20<br />...
92<br />(a) Caso simple - no hay ejemplo<br />(b) Combinación con el vecino(sibling)<br />(c) Redistribución de claves de ...
93<br />(b) Combinación con el nodovecino<br />Elimina 50<br />n=4<br />10<br />40<br />100<br />10<br />20<br />30<br />4...
94<br />40<br />(b) Combinación con el nodo vecino <br />Elimina 50<br />n=4<br />10<br />40<br />100<br />10<br />20<br /...
95<br />(c) Redistribución de Claves<br />Eliminación 50<br />n=4<br />10<br />40<br />100<br />10<br />20<br />30<br />35...
96<br />35<br />35<br />(c) Redistribución de Claves<br />Eliminación 50<br />n=4<br />10<br />40<br />100<br />10<br />20...
97<br />(d) Combinación de nodosinternos<br /><ul><li>Eliminación 37</li></ul>n=4<br />25<br />10<br />20<br />30<br />40<...
98<br />30<br />(d) Combinación de nodosinternos<br /><ul><li>Eliminación 37</li></ul>n=4<br />25<br />10<br />20<br />30<...
99<br />40<br />30<br />(d) Combinación de nodosinternos<br /><ul><li>Eliminación 37</li></ul>n=4<br />25<br />10<br />20<...
100<br />Nueva raíz<br />40<br />25<br />30<br />(d) Combinación de nodosinternos<br /><ul><li>Eliminación 37</li></ul>n=4...
101<br />Comparasión: B-trees vs. estaticosíndice de archivosecuencial<br />Ref #1:   Held & Stonebraker<br />			“B-Trees ...
102<br />Ref # 1 claims:<br />- Controld e concurrenciaesmuyduro en B-Trees<br />   - B-tree consumenmásespacio<br />Para ...
103<br />k1<br />k2<br />k3<br />Ejemplo: 1 Bloque de índiceestatico<br />127 claves<br />(127+1)4 = 512 Bytes<br />-> pun...
104<br />k1<br />k2<br />k3<br />Ejemplo: 1 Bloque B-tree<br />k1<br />1 data<br />block<br />63 Claves<br />63x(4+4)+8 = ...
105<br />Ref. #1 análisis<br />Para un bloque de archivodespués de 32,000 inserciones<br />después de 16,000 búsquedas<br ...
106<br />Ref. #1 conclusión<br />Mejoríndiceestático!!<br />Ref. #1 análisis<br />Para un bloque de archivodespués de 32,0...
107<br />Ref. #2 conclusión<br />Mejor B-trees!!<br />Ref #2:   M. Stonebraker, <br />			“Retrospective on a database			 s...
108<br />Ref. #2 conclusión<br />B-trees mejor!!<br />DBA no nesecitan saber cuandoreorganizar<br />DBA no nesecitanconoce...
109<br />Ref. #2 conclusión<br />Mejor B-trees!!<br />Buffering<br />B-tree: tienerequerimiento de buffer fijo<br />Estati...
110<br />Problemainteresante:<br />Para B+tree, que tan largo debesern?<br />…<br />nnúmero de claves / nodo<br />JOSÉ CUA...
111<br />Supuestos:<br />(1) Tiempo de lectura de un nodo de disco es (S+Tn) msec.<br />JOSÉ CUARTAS<br />BASES DE DATOS<b...
112<br />Supuestos:<br />(1) Tiempo de lectura de un nodo de disco es (S+Tn) msec.<br />(2) Un bloque en memoria, usabúsqu...
113<br />Supuestos:<br />(1) Tiempo de lectura de un nodo de disco es (S+Tn) msec.<br />(2) Un bloque en memoria, usaunabu...
114<br />Se consigue:f(n) = Tiempoparaencontrar un registro<br />f(n)<br />noptn<br />JOSÉ CUARTAS<br />BASES DE DATOS<br />
115<br />VariaciónB+tree: B-tree (no +)<br />Idea:<br />Evitar claves duplicadas<br />Tenerpunteros a registro en nodosint...
116<br />K1 P1<br />K2 P2<br />K3 P3<br />registroregistroregistro<br />con K1con K2con K3<br />a las clavesa las claves a...
117<br />Ejemplo B-tree				n=2<br />65<br />125<br />145<br />165<br />85<br />105<br />25<br />45<br />10<br />20<br />30...
118<br /><ul><li>punteros(mantieneespacio)</li></ul>Ejemplo B-tree				n=2<br />65<br />125<br />145<br />165<br />85<br />...
119<br />–<br />20<br />–<br /><ul><li>Después:</li></ul>10<br />25<br />30<br />Nota en inserción<br />inserción de regis...
120<br />Ventajas y desventajas:<br /> B-trees tiene mas rapidabúsquedaqueB+trees<br /> en B-tree, nodosinternos& hojadi...
121<br />Pero note:<br />Si el bloquees de tamañofijo<br />(Debido a restricciones de disco y buffer)<br />Entonces la bús...
Upcoming SlideShare
Loading in...5
×

índices en bases de datos

6,199

Published on

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,199
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
77
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

índices en bases de datos

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

    Clipping is a handy way to collect important slides you want to go back to later.

×