Está en la página 1de 86

Indice general

I Almacenando informaci n: discos y archivos o


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6
7 7 8 10 10 10 10 11 12 13 13 13 14 15 15 15 16 16 17 17 18 18 19 19 19 19 19 20

1. Almacenamiento de datos 1.1. Jerarqua de memoria . . . . . . . . . . . . . . . . . . . . 1.2. Introducci n hist rica . . . . . . . . . . . . . . . . . . . . o o 1.3. Discos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.1. Tipos de discos . . . . . . . . . . . . . . . . . . . 1.3.2. Organizaci n de los discos . . . . . . . . . . . . . o 1.3.3. Capacidad del disco . . . . . . . . . . . . . . . . 1.3.4. Organizaci n de pistas por sectores . . . . . . . . o 1.3.5. Organizaci n de las pistas por bloques . . . . . . . o 1.3.6. Espacio reservado o de control (nondata overhead) 1.3.7. El coste del acceso a disco . . . . . . . . . . . . . 1.3.8. El disco como cuello de botella . . . . . . . . . . 1.4. Cintas magn ticas . . . . . . . . . . . . . . . . . . . . . . e 2. Archivos 2.1. Archivos fsicos y archivos l gicos . . . . . o 2.2. Operaciones principales sobre archivos . . . 2.2.1. Abrir archivos . . . . . . . . . . . 2.2.2. Cerrar archivos . . . . . . . . . . . 2.2.3. Leer y escribir en archivos . . . . . 2.2.4. Posicionamiento (seek) en archivos

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

3. Elementos b sicos de las estructuras de archivos a 3.1. Estructuras de campos . . . . . . . . . . . . . . . . . . . . 3.1.1. Campos de longitud ja . . . . . . . . . . . . . . . 3.1.2. Comenzar cada campo con un indicador de longitud 3.1.3. Utilizar un delimitador al nal de cada campo . . . . 3.1.4. Utilizar una expresi n . . . . . . . . . . . . . . . . o 3.2. Estructuras de registros . . . . . . . . . . . . . . . . . . . . 3.2.1. Registros de longitud ja en n mero de bytes . . . . u 1

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

2o I.T.I.G./UAL

Indice general 20 20 20 20 21 21 22 23 23 25 27 27 27 28 30 31 31 32 32 33 34 35 35 35 37 37 39 40 41 41 43 43

3.2.2. Registros de longitud ja en n mero de campos . . . . . . . . . . u 3.2.3. Comenzar cada registro con un indicador del n mero de bytes de u longitud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.4. Utilizar un archivo auxiliar donde se indica la posici n de inicio o de cada registro . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.5. Utilizar un delimitador al nal de cada registro . . . . . . . . . . 3.3. Buffers y bloques de registros . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1. Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2. Bloques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4. Operaciones sobre registros. Fragmentaci n del almacenamiento . . . . . o 3.4.1. La inserci n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 3.4.2. El borrado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.3. La actualizaci n . . . . . . . . . . . . . . . . . . . . . . . . . . o 3.5. Acceso a registros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.1. Llaves de b squeda . . . . . . . . . . . . . . . . . . . . . . . . . u 3.5.2. B squeda iterativa de un registro en un archivo (b squeda secuenu u cial) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.3. Acceso directo e ndices . . . . . . . . . . . . . . . . . . . . . . 4. Organizaciones b sicas de registros en archivos a 4.1. Archivos de registros no ordenados: Organizaci n apilada . . o 4.1.1. Estructura . . . . . . . . . . . . . . . . . . . . . . . 4.1.2. No estructurados . . . . . . . . . . . . . . . . . . . 4.1.3. Estructurados . . . . . . . . . . . . . . . . . . . . . 4.1.4. Resumen . . . . . . . . . . . . . . . . . . . . . . . 4.2. Archivos de registros ordenados: Organizaci n secuencial . . o 4.2.1. Estructura de la organizaci n secuencial . . . . . . . o 4.2.2. Manipulaci n de los archivos secuenciales . . . . . o 4.2.3. Resumen . . . . . . . . . . . . . . . . . . . . . . . 4.3. Archivos con registros enlazados: Organizaci n encadenada o 4.3.1. Estructura de las cadenas . . . . . . . . . . . . . . . 4.3.2. Manipulaci n de los archivos encadenados . . . . . o 4.4. Archivos relativos (hashing): Organizaci n directa . . . . . o 4.4.1. Hashing interno . . . . . . . . . . . . . . . . . . . . 4.4.2. Manipulaci n de los archivos encadenados . . . . . o 4.4.3. Hashing externo . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

II

Indexaci n o

45
46 2 Antonio Aliaga Munoz

5. Conceptos b sicos sobre ndices a Organizaci n y gesti n de archivos o o

2o I.T.I.G./UAL

Indice general

5.1. Archivos con ndices . . . . . . . . . . . . . . . . . . . . . . . . 5.1.1. Denici n . . . . . . . . . . . . . . . . . . . . . . . . . . o 5.1.2. Estructura de los ndices . . . . . . . . . . . . . . . . . . 5.2. Propiedades de los ndices . . . . . . . . . . . . . . . . . . . . . 5.2.1. Indices agrupados y no-agrupados (clustered/unclustered) 5.2.2. Indices densos y dispersos (dense/sparse . . . . . . . . . 5.2.3. Indices primarios y secundarios . . . . . . . . . . . . . . 5.2.4. Indices sobre claves m ltiples . . . . . . . . . . . . . . . u 5.2.5. Indices multinivel . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

46 46 46 47 47 48 48 48 49 50 50 50 50 51 51 52 52 52 53 53 53 53 54 54 55 55 55 55 56 56 57 58 60 60 61 61 62 63

6. Organizaciones indexadas 6.1. Organizaci n secuencial indexada . . . . . . . . . . . . . . . . . . . . . o 6.2. Organizaci n indexada simple . . . . . . . . . . . . . . . . . . . . . . . o 6.3. Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4. El acceso a los datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.5. Operaciones b sicas en un ndice . . . . . . . . . . . . . . . . . . . . . . a 6.5.1. Creando los archivos . . . . . . . . . . . . . . . . . . . . . . . . 6.5.2. Leer el ndice en memoria . . . . . . . . . . . . . . . . . . . . . 6.5.3. Guardando el ndice en disco . . . . . . . . . . . . . . . . . . . . 6.5.4. Inserci n de registros . . . . . . . . . . . . . . . . . . . . . . . . o 6.5.5. Borrado de registros . . . . . . . . . . . . . . . . . . . . . . . . 6.5.6. Actualizaci n de registros . . . . . . . . . . . . . . . . . . . . . o 6.5.7. Indices que no caben en memoria . . . . . . . . . . . . . . . . . 6.6. Indices secundarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.7. Denici n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 6.8. Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.9. Operaciones b sicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 6.9.1. Inserci n de registros . . . . . . . . . . . . . . . . . . . . . . . . o 6.9.2. Borrado de registros . . . . . . . . . . . . . . . . . . . . . . . . 6.9.3. Actualizaci n de registros . . . . . . . . . . . . . . . . . . . . . o 6.10. La recuperaci n de registros utilizando una combinaci n de claves secuno o darias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.11. Mejorando la estructura del ndice secundario . . . . . . . . . . . . . . . 6.12. Binding: Enlazando o vinculando . . . . . . . . . . . . . . . . . . . . . . 7. Reorganizaci n multinivel con arboles B y B+ o 7.1. Introducci n . . . . . . . . . . . . . . . . . o 7.2. Planteamiento del problema . . . . . . . . 7.3. Arboles binarios de b squeda . . . . . . . . u 7.4. Arboles AVL (Adelson-Velskii-Landis) . . . 7.5. Arboles binarios paginados . . . . . . . . . Organizaci n y gesti n de archivos o o 3

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

Antonio Aliaga Munoz

2o I.T.I.G./UAL 7.6. Arboles-B . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.6.1. Denici n . . . . . . . . . . . . . . . . . . . . . . . . o 7.6.2. Operaciones . . . . . . . . . . . . . . . . . . . . . . . 7.6.3. Organizaci n del ndice en arbol-B . . . . . . . . . . o 7.6.4. Variantes de arboles-B: arboles-B* . . . . . . . . . . . 7.7. Arboles-B+ . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.7.1. Variantes de arboles-B+: arboles-B+ de prejo simple 7.8. Arboles-B frente a arboles-B+ . . . . . . . . . . . . . . . . . 8. Organizaci n directa. Hashing o 8.1. Caractersticas de la organizaci n hashing . . . . . . . . . o 8.2. Elementos que intervienen en la organizaci n hashing . . . o 8.2.1. Los cubos o unidades de direccionamiento . . . . 8.2.2. La densidad de empaquetamiento() . . . . . . . . 8.2.3. La funci n hash . . . . . . . . . . . . . . . . . . . o 8.2.4. Tratamiento de las colisiones . . . . . . . . . . . . 8.3. Hashing est tico . . . . . . . . . . . . . . . . . . . . . . . a 8.3.1. Algoritmos hashing . . . . . . . . . . . . . . . . . 8.3.2. T nicas para evitar colisiones . . . . . . . . . . . e 8.3.3. T cnicas de resoluci n de colisiones. Operaciones e o 8.4. Hashing din mico . . . . . . . . . . . . . . . . . . . . . . a 8.4.1. Caractersticas . . . . . . . . . . . . . . . . . . . 8.4.2. Hashing extensible . . . . . . . . . . . . . . . . .

Indice general

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

66 66 67 69 71 72 73 74 76 76 77 77 78 78 78 79 79 80 81 83 83 84

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

Organizaci n y gesti n de archivos o o

Antonio Aliaga Munoz

Indice de guras
1.1. Esquema interno de un disco magn tico . . . . . . . . . . . . . . . . . . e 1.2. Interleaving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1. Inserci n de un registro en un bloque no-ordenado . . . . . . . . . . . . . o 3.2. Inserci n de un registro en un bloque ordenado con espacio . . . . . . . . o 3.3. Inserci n de un registro en un bloque ordenado sin espacio. Bloque de o overow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4. Inserci n de un registro en un bloque ordenado sin espacio. B squeda en o u el bloque vecino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5. Borrado de un registro con lista de espacio libre . . . . . . . . . . . . . . 3.6. B squeda secuencial en archivos no-bloqueados . . . . . . . . . . . . . . u 3.7. B squeda secuencial en archivos no-bloqueados . . . . . . . . . . . . . . u 4.1. Organizaci n apilada no-estructurada . . . . . . . . . . . . . . . . . . . o 7.1. 7.2. 7.3. 7.4. 7.5. 7.6. 7.7. 7.8. 7.9. Arboles binarios de b squeda . . . . . . . . . . . . . . u Arboles AVL . . . . . . . . . . . . . . . . . . . . . . Arboles binarios paginados . . . . . . . . . . . . . . . Arboles binarios paginados (desbalanceo) . . . . . . . Arboles-B . . . . . . . . . . . . . . . . . . . . . . . . Arboles-B (eliminaci n simple en una hoja) . . . . . . o Arboles-B (eliminaci n simple en un nodo intermedio) o Arboles-B (eliminaci n: redistribuci n) . . . . . . . . o o Arboles-B (eliminaci n: concatenaci n) . . . . . . . . o o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 12 24 24 25 26 26 28 29 32 61 62 64 65 68 70 70 71 71

Parte I Almacenando informaci n: discos y o archivos

Captulo 1 Almacenamiento de datos


El problema clave del dise o de estructuras de archivos es la gran cantidad de tiempo n requerido para obtener la informaci n desde el disco. Todos los dise os de estructuras de o n archivos se centran en minimizar los accesos a disco y en maximizar la probabilidad de que la informaci n que el usuario necesita est ya en la RAM. Por lo tanto, el probleo e ma principal consiste en encontrar f rmulas que minimicen los accesos a disco para los o archivos que cambien de contenido y tama o. n

1.1.

Jerarqua de memoria

La memoria y el almacenamiento se puede clasicar en los siguientes tipos (entre par ntesis se indica el orden del tiempo medio de acceso tpico): e Almacenamiento primario (ns). Registros de la CPU. Memoria cach : de primer nivel, segundo nivel y tercer nivel. e RAM. Discos RAM. Cach de disco. e Almacenamiento secundario. Discos magn ticos (ms). e Cintas (s). Almacenamiento ofine. Discos magn ticos removibles (ms). e 7

2o I.T.I.G./UAL Discos opticos (CD-ROM, DVD-ROM) (ms). Cintas (s).

Almacenamiento de datos

A la vista de la clasicaci n anterior es f cil deducir que el almacenamiento secuno a dario y ofine, en cualquiera de sus modalidades, es muy lento en comparaci n con el o almacenamiento primario (RAM, cach s y registros de la CPU). El tiempo medio de ace ceso de una RAM actual es de unos 7,5 ns (7,5*10-9 sg) mientras que los discos SCSI m s r pidos superan los (3+2) 5 ms (5*10-3 sg). Existe un orden de diferencia de acceso a a 1:500.000 (como mnimo). Esto signica, que un proceso para ordenar una lista que ca be entera en memoria RAM y que tarda 1 sg, si se utilizara el disco para la ordenaci n o tardara 500.000 sg, es decir, 139 horas (casi seis das). Por otra parte, los discos proporcionan una capacidad de almacenamiento ilimitada (hoy da) a un coste muy bajo en comparaci n con la RAM. Por ejemplo, un disco SCSI o de 73 GB a 10.000 rpm puede costar unos 300 euros (50.000 pts), mientras que 1 GB de RAM costara aproximadamente lo mismo. Otra ventaja de los discos frente a la RAM es que la informaci n almacenada en estos o permanece intacta una vez desconectado el sistema, mientras que la RAM es vol til, si el a sistema se para, la informaci n contenida en ella se pierde. o Un buen dise o de la estructura de archivos nos dar acceso a toda la capacidad del n a disco sin hacer que nuestras aplicaciones esperen mucho tiempo.

1.2.

Introducci n hist rica o o

Las caractersticas generales de la investigaci n y el desarrollo de estructuras de ar o chivos se pueden deducir f cilmente del ejemplo anteriormente citado: a De una forma ideal, nos gustara obtener la informaci n que necesitamos accedien o do una s la vez al disco. Es decir, no queremos esperar m s de seis das a tener o a nuestra lista ordenada. Si esto anterior no es posible, (tener la informaci n en un s lo acceso a disco), queo o remos tener estructuras que permitan obtener la informaci n que buscamos con el o mnimo de accesos posibles. Por ejemplo, una b squeda binaria sobre un mill n re u o gistros permite encontrar el dato con menos de veinte comparaciones. Sin embargo, veinte accesos a disco pueden consumir mucho tiempo, m s del deseado. Se necea sitan, por tanto, estructuras que permitan obener el dato deseado en s lo dos o tres o accesos como m ximo. a Adem s, queremos que nuestras estructuras de archivos permitan recuperar infora maci n agrupada. Por ejemplo, si accedemos a disco para capturar los datos de un o cliente (nombre, direcci n, tel fono etc.) esperamos que esto se haga con un solo o e acceso a disco y no con varios accesos, uno para cada dato. Organizaci n y gesti n de archivos o o 8 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Almacenamiento de datos

Estas tres caractersticas son relativamente f ciles de implementar en una estructura a de archivos cuando tenemos archivos con datos que nunca cambian. Sin embargo, esto se complica cuando los datos cambian y los archivos crecen o decrecen al a adir o eliminar n informaci n. o Al principio se trabajaba con cheros almacenados en cintas. El acceso era secuencial, y el coste de acceso directamente proporcional al tama o de chero. Posteriormente n aparecieron los discos y en ellos se empezaron a utilizar los ndices. El acceso ya era aleatorio. La ventaja de usar ndices es que permiten realizar b squedas muy r pidas. Estos u a guardan en peque os cheros estructuras de claves y punteros que apuntan al archivo n original o primario. Encontrando la clave en el chero de ndices, el acceso al dato es inmediato. Sin embargo, los ndices simples son m s de lo mismo, cheros de acceso a secuencial en s mismos; y cuando crecen, se convierten en difciles de gestionar, sobre todo en cheros din micos en los que las claves pueden cambiar. a A principios de los a os sesenta se comenzaron a utilizar estructuras basadas en arbon les binarios, convirti ndose en una potencial soluci n al problema. Sin embargo, cuando e o se a adan o eliminaban registros, los arboles crecan muy desordenadamente (no de forn ma uniforme o balanceada) ocasionando que en grandes b squedas se accediera demasiau do a disco. A raz de esto se dise o el arbol AVL, consistente en una estructura autoajus n table basada en un arbol binario, empleado satisfactoriamente para gestionar datos en la RAM. Este mismo algoritmo se intent aplicar para archivos en disco, pero los accesos a o disco eran m s de los esperados para grandes archivos. Se tardaron m s de diez a os en a a n encontrar una soluci n al problema, hasta que se implementaron los B- rboles. En gran o a medida, esta tardanza fue debida al modo en que se contruan estas estructuras, ya que son del tipo de abajo-arriba, el rev s de como trabajan los arboles binarios implementados en e el AVL que se empleaban para la geti n de la RAM. o Los B- rboles proveen un excelente acceso a los datos, pero estos tambi n tenan a e un coste: ya no se podra acceder secuencialmete a los cheros de forma eciente. Esto se solucion r pidamente con los arboles B+, que a aden estructuras secuenciales a las o a n hojas del arbol. El n mero de accesos crece en proporci n a log(k)N (k = no de entradas u o indexadas en un bloque y N = tama o del chero). Esta estructura permite acceder a un n chero de varios millones de registros con tres o cuatro accesos y garantiza la inserci n o y borrado sin p rdida de rendimiento. Posteriormente apareci una nueva estructura, el e o hashing, que viene a dar una aproximaci n a nuestra pretensi n de obtener la informaci n o o o deseada con s lo un acceso. Esta es una buena soluci n cuando los archivos no cambian o o demasiado de tama o en el tiempo. Para este tipo de situaciones se dise o el hashing n n extensible y din mico, que permiten b squedas con no m s de dos accesos a disco. a u a

Organizaci n y gesti n de archivos o o

Antonio Aliaga Munoz

2o I.T.I.G./UAL

Almacenamiento de datos

1.3.

Discos

Como ya se ha dicho antes, el lugar ideal para trabajar con los datos es la RAM, en d nde pueden estar asociados a estructuras de archivos de forma autom tica. Sin embargo o a el uso de almacenamiento secundario es imprescindible. Las principales desventajas de los discos y otros dispositivos frente a la RAM son su mayor tiempo de acceso y que este no es igual en todas las partes del dispositivo.

1.3.1.

Tipos de discos

Los discos o unidades de disco (nos referimos a discos magn ticos), son dispositivos e de almacenamiento de acceso directo, ya que se puede acceder directamente a cualquier dato en el disco y no secuencialmente como ocurre en una cinta (serial access o acceso secuencial). Los discos magn ticos se clasican en discos duros (hard disks - HD) y discos exie bles (oppy disks - FD). Los HD ofrecen alta capacidad a un coste por bit bajo, y son los m s usados. Los FD son baratos pero tambi n son muy lentos y tienen poca capacidad. a e Estos ultimos son adecuados para transportar peque as cantidades de datos o hacer copias n de seguridad. Hay un tipo de discos duros, llamados removibles, que permiten ser monta dos y desmontados varias veces, lo cual puede ser util para transportar grandes cantidades de datos y hacer copias de seguridad que requieren un acceso directo. Otro tipo de discos son los no-magn ticos, entre los cuales est n los opticos como e a los m s importantes (CD-ROM, DVD-ROM, etc.). Tambi n existen otro tipo de discos a e hbridos llamados magneto- pticos. o

1.3.2.

Organizaci n de los discos o

Un disco est compuesto a su vez por varios discos o platos, en los que se almacena a la informaci n sobre su supercie. Esta se organiza en pistas conc ntricas que a su vez o e est n divididas en sectores. Las pistas se organizan en cilindros. Todas las pistas de un a cilindro se pueden leer sin mover el cabezal, que es lo que consume m s tiempo (Ver la a gura 1.1). La unidad de lectura/escritura en un disco es el sector, que se lee entero y se guarda en un buffer, desde el cual se accede al bit que se desea leer.

1.3.3.

Capacidad del disco

Capacidad de la pista = no sectores por pista x bytes por sector. Capacidad del cilindro = no pistas por cilindro x capacidad de pista. Capacidad del disco = no de cilindros x capacidad de cilindro.

Organizaci n y gesti n de archivos o o

10

Antonio Aliaga Munoz

2o I.T.I.G./UAL

Almacenamiento de datos

Figura 1.1: Esquema interno de un disco magn tico e

1.3.4.

Organizaci n de pistas por sectores o

A la hora de organizar los sectores en las pistas, hay que tener en cuenta el tiempo que la controladora del disco tarda en procesar la informaci n que este le va suministrando. o Existe pues un retardo entre la lectura de cada sector y el siguiente. Si estamos accediendo a datos que est n almacenados en sectores de forma contigua o adyacente, si la controlaa dora no es lo sucientemente r pida, s lo podramos leer un sector en cada revoluci n del a o o disco, lo cual no es deseable. Para mejorar esto, se sit an los sectores de forma no adyau cente dejando el suciente espacio entre ellos para que las controladoras puedan procesar la informaci n que el disco le va suministrando. A esta t cnica se conoce como interleao e o ving, donde al factor de interleaving es el n de sectores que separan cada dos sectores l gicos adyacentes. Actualmente, todos los discos son accedidos por la controladora con o interleave 1:1, lo cual permite leer todos los sectores de una pista en una s la revoluci n o o (Ver la gura 1.2). Desde el punto de vista del sistema operativo, este agrupa los sectores en clusters para obtener un mayor rendimiento en las operaciones de E/S. En la FAT (le allocation table) se almacena para cada archivo ordenadamente los clusters en los que se ubica. De esta manera, cuando se accede a un chero no se hace sector a sector sino cl ster a cl ster. u u Si el sistema operativo es capaz de ubicar un chero completo en cl sters contiguos del u disco, se dice que ocupa una sola extensi n. Si esto no es posible, se utilizara m s de una o a extensi n y el archivo estar fragmentado (desde el punto de vista del sistema operativo). o a Otro tipo de fragmentaci n ocurre cuando se quiere almacenar un registro en disco con o Organizaci n y gesti n de archivos o o 11 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Almacenamiento de datos

Figura 1.2: Interleaving tama o inferior a un cl ster. Existen dos opciones: utilizar un sector para cada registro n u o un cl ster para cada archivo, o almacenarlos de forma contigua. La primera opci n u o supone desperdiciar grandes cantidades de espacio en disco, y la segunda requiere leer dos sectores o dos clusters para recuperar el registro o archivo. Este par metro es importante a en sistema operativos que permiten predeterminar el tama o del cl ster, ya que si en n u el se van a almacenar grandes cheros de acceso secuencial, el tama o de cl ster debe n u ser grande, mientras que el almacenamiento de datos de reducidas dimensiones requiere tama os de cl ster menores. n u

1.3.5.

Organizaci n de las pistas por bloques o

Se trata de una organizaci n diferente a la de los sectores, caracterstica de los sisteo mas UNIX. Los discos que lo permitan, pueden almacenar los archivos de forma continua, en bloques de distinto tama o llamado factor de bloqueo, que indica el n mero de regisn u tros que se almacenan en cada bloque. Esto elimina los problemas anteriormente citados en la organizaci n de pistas por sectores, pero necesita almacenar informaci n adicional o o para su correcta gesti n. Por tanto pasamos de tener un sistema de direccionamiento por o sectores a un sistema de direccionamiento por bloques. Este es en t rminos generales de e mayor eciencia que el anterior. La informaci n necesaria para gestionar el bloque de o informaci n se almacena en subbloques (count subblock - no bytes del bloque, key subo block - clave del ultimo registro del bloque, data subblock - datos, etc). As por ejemplo, se podran realizar b squedas directamente sobre disco sin necesidad de cargar las claves u Organizaci n y gesti n de archivos o o 12 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Almacenamiento de datos

previamente en memoria.

1.3.6.

Espacio reservado o de control (nondata overhead)

Tanto la organizaci n por bloques como por sectores requiere reservar un espacio o adicional para la gesti n del disco. Esta se suele reservar durante el pre-formateo y guaro dar informaci n sobre atributos de los sectores o bloques que el disco va a contener a o como: direcci n fsica del sector y de la pista, sector defectuoso o no, etc. Esto se hace de o forma transparente al usuario o programador.

1.3.7.

El coste del acceso a disco

El tiempo total de acceso a disco esta determinado por la contribuci n de tres operao ciones fsicas: el tiempo de posicionamiento (seek time), el retardo de rotaci n (rotational o delay) y el tiempo de transferencia (fransfer time). El tiempo de posicionamiento es el que tarda el brazo del cabezal en posicionarse en el cilindro correspondiente. Si estamos accediendo a un archivo que est en cilindros a adyacentes, el tiempo de posicionamiento tras haber ledo todas las pistas de un cilindro ser peque o pues ir al cilindro inmediatamente contiguo. Si por el contrario estamos a n a accediendo a dos cheros, uno en el cilindro m s exterior y otro en el m s interno, el a a tiempo de posicionamiento ser bastante elevado. a En sistemas multiusuario, el tiempo de posicionamiento suele ser mayor que en un sistema mono-usuario, por la cantidad de diferentes procesos que acceden a distintos archivos simult neamente. a Generalmente, suele ser muy difcil o imposible conocer exactamente el tiempo de posicionamiento, y entonces se da una estimaci n del tiempo medio de acceso. o El retardo de rotaci n hace referencia al tiempo que tarda el disco en situarse sobre el o sector buscado, y se calcula en promedio como (1/2 tiempo una vuelta). Un disco SCSI de 15k rpm tiene un retardo medio de 2 ms mientras que uno de 10k rpm tiene un retardo medio de 3 ms y un UATA de 7200 rpm 4,2 ms y una disketera de 360 rpm 83,33 ms. El tiempo de transferencia viene dado por la siguiente f rmula: o Tiempo de transferencia = tiempo de rotaci n * (no bytes transferidos / no bytes por pista) o

1.3.8.

El disco como cuello de botella

Los discos actuales m s r pidos pueden transferir datos al sistema a raz n de unos 75 a a o MBytes/sg de forma sostenida. En la actualidad, las redes de comunicaciones permiten anchos de banda por cable de cobre de 1 Gbit/sg que equivale a 128 MBytes/seg y supe riores con bra optica. Est claro que es posible transmitir a mayor velocidad de la que a

Organizaci n y gesti n de archivos o o

13

Antonio Aliaga Munoz

2o I.T.I.G./UAL

Almacenamiento de datos

los datos est n disponibles. Para aprovechar al m ximo las capacidades de las redes de a a comunicaciones se han dise ado sistemas que permiten este aprovechamiento. n El striping consiste en tener sistemas de almacenamiento con m ltiples discos en los u que la informaci n se almacena a trozos entre todos los discos, sumando as el ancho de o banda generado por cada uno de ellos y por tanto reduciendo proporcionalmente el tiempo de transferencia. Es un ejemplo tpico de paralelismo. Otra opci n es utilizar parte de la RAM como unidad disco (RAM disks) debido al o abaratamiento de costes de esta. Lo que se hace es simular un disco en memoria, con lo que eliminamos el retardo de rotaci n y el de posicionamiento se reduce enormemente. o El mayor problema es su volatilidad. Otra posibilidad es la utilizaci n de RAM como cach de disco, la cual contiene p gio e a nas de datos del disco. Cuando el sistema solicita un dato ubicado en almacenamiento secundario, el sistema buscar antes si est ya en la cach , en cuyo caso evitar el tener a a e a que acceder a disco. El impacto en rendimiento es enorme, sobre todo cuando se accede a datos localmente residentes (ubicados contiguamente). Estos dos ultimos tipos, (RAM disks y cach disco) son ejemplos de buffering, que es e una de las t cnicas m s utilizadas por los sistemas de E/S. e a

1.4.

Cintas magn ticas e

A modo de resumen, las cintas son dispositivos magn ticos de almacenamiento secune dario de acceso secuencial (no directo). Sus ventajas principales es que son muy baratas, compactas, f ciles de trasportar, se pueden almacenar en lugares con diferentes condicioa nes ambientales y proveen un muy r pido acceso secuencial a cheros. a Los datos se organizan en la cinta uno tras otro, por lo que no es necesario ning n tipo u de direccionamiento. La supercie de la cinta se divide en pistas paralelas, cada una de las cuales es una secuencia de bits. Suelen incorporar una pista para control de paridad. Los bytes se suelen agrupar en bloques de tama o que puede variar (Bytes a KBytes n dependiendo de las necesidades del usuario). Ejemplo del Catastro: 10 registros de 720 bytes por bloque que equivale a 7200 bytes x bloque. Los par metros fsicos caractersticos de las cintas son la densidad medida en bits/pulgada a (800, 1600, 6250, etc.), la velocidad (pulgadas/segundo) y el tama o entre bloques (puln gadas). En la actualidad, las cintas se utilizan para backups y almacenamiento de archivos hist ricos de acceso poco frecuente. o

Organizaci n y gesti n de archivos o o

14

Antonio Aliaga Munoz

Captulo 2 Archivos
Este captulo es una introducci n a las operaciones fundamentales de los sistemas de o archivos: crear, abrir, cerrar, leer, escribir y posicionar (create, open, close, read, write, seek).

2.1.

Archivos fsicos y archivos l gicos o

Un archivo es una colecci n de bytes existentes en alg n dispositivo de almacenao u miento (por ejemplo, en un disco o en una cinta). Por lo tanto, el archivo existe fsicamen te. Un disco puede contener cientos o miles de archivos fsicos. En sistemas operativos como LINUX se dice que cualquier dispositivo del sistema se puede considerar como si fuera un archivo. As pues, el teclado, una impresora, un disco o una partici n, seran o tambi n tratados como archivos. e Sin embargo, desde el punto de vista de un programa de usuario, un archivo es algo muy distinto. Apenas sabe nada del archivo, s lo que puede enviar y/o recibir datos o de el, adem s de cu ndo llega a su nal (es como una lnea de tel fono). Adem s, los a a e a programas de usuario suelen usar un n mero limitado de archivos, y confan la tarea de u la comunicaci n al sistema operativo. A esta idea de archivo como lnea de tel fono la o e llamaremos archico l gico. Por lo tanto, el programa indicar al sistema operativo que o a asocie un archivo fsico a un archivo l gico, y a partir de entonces s lo se comunicar con o o a este archivo l gico. o

2.2.

Operaciones principales sobre archivos

Antes de entrar a describir las funciones que permiten el manejo de cheros, hay que tener en cuenta que el lenguaje C distingue entre dos grupos distintos, las de bajo nivel y alto nivel.

15

2o I.T.I.G./UAL

Archivos

La diferencia principal entre ellas es que en las de bajo nivel (tipo UNIX) deben declararse y mantenerse todas las zonas intermedias de memoria (buffers); todos los accesos al chero deben programarse manualmente, as como controlar los punteros y contadores. En estas, al chero se le asocia un valor num rico llamado descriptor. e En las funciones de alto nivel (tipo ANSI), todas las lecturas y escrituras se realizan sobre zonas intermedias de memoria (canales) que no precisan mantenimiento por parte del programador, proporcionando as un nivel de abstracci n entre el programador y el o dispositivo fsico utilizado, empleando el canal como dispositivo l gico o archivo l gico. o o Este sistema est pensado para trabajar con pantallas, discos, disquetes, teclados, etc. a Aunque son dispositivos diferentes, el sistema de alto nivel asocia a cada uno un canal distinto permitiendo utilizar las mismas funciones de E/S con todos ellos. En estas, al chero se le asocia un puntero a un registro (FILE). Existen dos tipos de canales de alto nivel, los binarios y los de texto.

2.2.1.

Abrir archivos

Una vez asociado un archivo l gico o canal a un archivo fsico, debemos decirle al o sistema operativo qu queremos hacer con el archivo. Existen dos opciones: abrir un e archivo existente o crear un archivo nuevo (esto implica borrar cualquier informaci n o que contuviera en caso de existir previamente). Una vez realizada alguna de estas dos operaciones, el archivo queda a disposici n del programa para leer o escribir, posicionado o al principio del mismo. crear (bajo nivel): int creat(char *nombreArchivo, int modo) abrir (bajo nivel): int open(char *nombreArchivo, int modo) abrir (alto nivel): FILE *fopen(char *nombreArchivo, char *modo)

2.2.2.

Cerrar archivos

Un archivo debe cerrarse siempre. S lo as nos aseguraremos que todos los cambios o producidos en el mismo quedan escritos en el archivo. Cuando termina un programa se cierran todos los cheros autom ticamente, pero esto no ocurre si el programa aborta a antes de su n. Como se vio en el captulo anterior, es m s eciente trabajar con bloques de datos que a byte a byte. Por ello, el sistema operativo no realiza los cambios de manera inmediata en el disco, sino que utiliza un canal intermedio. Al cerrar el archivo, se descarga todo el contenido del canal en el disco. cerrar (bajo nivel): int close(int descriptorFichero) cerrar (alto nivel): int fclose(FILE *descriptorFichero)

Organizaci n y gesti n de archivos o o

16

Antonio Aliaga Munoz

2o I.T.I.G./UAL

Archivos

2.2.3.

Leer y escribir en archivos

Las funciones de lectura y escritura en archivos son las operaciones fundamentales de los procesos de E/S de cualquier sistema. leer (bn): int read(int descriptorFichero, void *buffer, unsigned numeroBytes) escribir (bn): int write(int descriptorFichero, void *buffer, unsigned numeroBytes) leer (an): int fread(void *buffer, int numeroBytes, int contador, FILE *descriptorFichero) escribir (an): int fwrite(void *buffer, int numBytes, int contador, FILE *descrFichero)

2.2.4.

Posicionamiento (seek) en archivos

Cada vez que se lee o escribe con las funciones anteriores, el puntero que controla la posici n sobre el archivo se mueve al nal de la cadena leda o escrita. En ocasiones nos o puede interesar saltar directamente a otra posici n distinta de la actual sin tener que leer o los caracteres intermedios. O ir al nal del chero para a adir nueva informaci n. n o Posicionar (bn): long lseek(int descriptorFichero, long desplazamiento, int origen) Posici n (bn): long tell(int descriptorFichero) o Posicionar (an): long fseek(FILE *descriptorFichero, long desplazamiento, int origen) Posici n (an): long ftell(FILE *descriptorFichero) o

Organizaci n y gesti n de archivos o o

17

Antonio Aliaga Munoz

Captulo 3 Elementos b sicos de las estructuras de a archivos


Cuando creamos estructuras de archivos, estamos imponiendo un orden a los datos. Existen varias formas de implantar este orden. La m s b sica consiste en un chero stream a a (traducido como corriente). Supongamos que introducimos datos desde el teclado (nombre, direcci n). Estos se guardaran en el archivo en el mismo orden que los vamos teo cleando como si fuera una corriente o stream de caracteres, sin a adir ninguna informan ci n adicional. o Esto nos ocasiona varios problemas, ya que perdemos la integridad de las unidades organizativas fundamentales de nuestros datos; es decir, no sabemos distinguir nombres de direcciones, ni cuando empiezan o terminan. A estas unidades las llamaremos campos. Por tanto, un campo ser la menor unidad l gica de informaci n con signicado en un a o o chero. Por tanto, un campo es un concepto l gico importante para la estructura del chero, o pero no tiene que existir fsicamente.

3.1.

Estructuras de campos
Campos de longitud ja. Comenzar cada campo con un indicador de longitud. Utilizar un delimitador al nal de cada campo. Utilizar una expresi n del tipo clave=valor para identicar cada campo y su valor. o

Existen varias formas de estructurar los archivos en campos:

18

2o I.T.I.G./UAL

Elementos b sicos de las estructuras de archivos a

3.1.1.

Campos de longitud ja

Lo normal es que los datos que cada campo puede contener no tengan la misma longitud. Sin embargo, si a la hora de almacenarlos en el archivo utilizamos el mismo tama o n para todos los datos de un campo conseguiremos delimitar exactamente por la posici n o que ocupa este en el archivo. La principal ventaja es que basta con un contador para localizar el principio y nal de cada campo, y la mayor desventaja es que el archivo necesita espacio adicional (espacios en blanco). Tambi n podemos tener problemas si tenemos que e almacenar distintos campos en donde alguno de ellos pudiera ser excesivamente largo, o cuando los datos de un campo pueden variar de longitud considerablemente.

3.1.2.

Comenzar cada campo con un indicador de longitud

Otra forma de organizar los datos en un archivo es incluir al principio de cada campo un entero que indique la longitud del mismo. Esto es util si el tama o de campo no supera n los 256 caracteres, ya que as s lo tendramos que utilizar un byte adicional por campo. o

3.1.3.

Utilizar un delimitador al nal de cada campo

En este caso es necesario elegir un car cter delimitador adecuado, que no est prea e sente en ning n dato. Suelen utilizarse, seg n convenga, caracteres de espaciado (blanco, u u tabulador, salto de lnea), u otros caracteres especiales de uso poco frecuente en el texto corriente (, $, &).

3.1.4.

Utilizar una expresi n o

Esta opci n tiene una ventaja que las otras no tienen, y es que cada campo provee ino formaci n a cerca de su estructura. As s lo se incluiran aquellos campos que existieran, o o ignorando aquellos sin un valor. Suele utilizarse en combinaci n con otros m todos, funo e damentalmente con delimitadores. La gran desventaja es la cantidad de espacio adicional a que requiere (50 % o m s es ocupado por informaci n de control). o

3.2.

Estructuras de registros

Un registro se dene como un conjunto de campos que permanecen unidos desde un punto de vista de alto nivel organizativo. Al igual que ocurre con el campo, el registro es un concepto l gico de un nivel conceptual superior al campo y con signicado propio. o Los registros no tienen que existir en el archivo en sentido fsico. Existen varias formas de estructurar los archivos en registros: Registros de longitud ja en n mero de bytes. u Organizaci n y gesti n de archivos o o 19 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Elementos b sicos de las estructuras de archivos a

Registros de longitud ja en n mero de campos. u Comenzar cada registro con un indicador del n mero de bytes de longitud. u Utilizar un archivo auxiliar donde se indica la posici n de inicio de cada registro. o Utilizar un delimitador al nal de cada registro.

3.2.1.

Registros de longitud ja en numero de bytes

Al igual que ocurre con los campos, con este m todo se fuerza a que todos los ree gistros tengan la misma longitud. Suele ser el m todo m s utilizado en la organizaci n e a o de archivos. No es necesario que los campos del registro tambi n sean de longitud ja e (pueden estar delimitados), lo cual implicara la utilizaci n de espacios de relleno o ller. o

3.2.2.

Registros de longitud ja en numero de campos

Una mejor soluci n consiste en jar el n mero de campos que contiene el registro. o u Podremos reconocer el comienzo de cada registro simplemente contando el numero de campos ledos.

3.2.3.

Comenzar cada registro con un indicador del numero de bytes de longitud

En este caso se a adira un entero al comienzo de cada registro indicando el numero n de bytes del registro. Este es el m todo m s usado para manejar registros de longitud e a variable.

3.2.4.

Utilizar un archivo auxiliar donde se indica la posici n de inio cio de cada registro

Es lo que se conoce como un ndice. Nos permite conocer la posici n exacta de inicio o de cada registro as como su longitud por diferencia con la posici n del registro siguiente. o

3.2.5.

Utilizar un delimitador al nal de cada registro

Esta soluci n es equivalente a utilizar delimitadores para campos. El car cter delimio a tador, por tanto, no debe ser utilizable en los datos almacenados. Normalmente suele ser el car cter n de lnea (LR) o el par retorno de carro m s nueva lnea (CR+LR). a a

Organizaci n y gesti n de archivos o o

20

Antonio Aliaga Munoz

2o I.T.I.G./UAL

Elementos b sicos de las estructuras de archivos a

3.3.

Buffers y bloques de registros

Como ya se ha citado en el primer captulo, se han desarrollado diferentes t cnicas e para obtener mejores resultados en cuanto a la minimizaci n de los accesos a disco. El o uso de zonas de memoria a modo de buffers y la agrupaci n de sectores en bloques son o dos muestras de los m todos m s empleados para este n. Ambas suelen emplearse sie a mult neamente ya que se complementan al aplicarse en fases distintas del proceso de a lectura/escritura de la informaci n en disco. o

3.3.1.

Buffers

Un buffer no es m s que una porci n de memoria que se utiliza a modo de cach para a o e la transferencia de datos desde el disco al procesador o viceversa. Cuando hablemos de buffers nos referiremos precisamente a la RAM, diferenciando a estos de los diferentes niveles de memoria cach que suelen integrar las propias unidades de disco y sus tarjetas e controladoras. El buffer se gestiona desde el sistema operativo, y es este quien lo mantiene, dotando al menos uno para cada chero abierto durante el proceso de creaci n (creat) o apertura o (open) del archivo. Cuando un programa de usuario solicita una petici n de lectura el proceso realizado o se puede esquematizar como sigue: 1. Petici n de lectura. o 2. Si el registro NO est en el buffer entonces . . . a 3. Obtener un nuevo bloque de registros del disco y ubicarlos en el buffer. 4. Obtener el registro del buffer. 5. Procesar el registro. De manera similar, el proceso de escritura sera: 1. Petici n de escritura. o 2. Actualizar el registro en el buffer. 3. En alg n momento, sincronizar volcando el bloque de registros modicado a disco. u Con esta t cnica, al trabajar con grandes cantidades de datos en la RAM, se reduce e dr sticamente el n mero de accesos a disco. La cuesti n que se nos plantea a continuaci n a u o o es si es suciente con un s lo buffer por chero, o podemos mejorar el sistema de E/S con o la utilizaci n de varios buffers por chero. Veamos el siguiente ejemplo: o Organizaci n y gesti n de archivos o o 21 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Elementos b sicos de las estructuras de archivos a

Un programa realiza entradas y salidas de un car cter cada vez en un chero. Cuando a lee el primer car cter, el buffer se carga con el sector que contiene el car cter solicitaa a do, y este se transmite al programa. Si el programa dedice escribir un car cter, entonces a el buffer es modicado. Si el programa solicita otro dato, antes de nada se debe volcar el buffer al disco y posteriormente recuperar el sector conteniendo dicho caracter . . . y as sucesivamente. Esta situaci n se puede optimizar utilizando dos buffers por archivo, uno de entrada o y otro de salida. Adem s, se puede mejorar el rendimiento utilizando t cnicas de doble a e buffer. Esto consiste en disponer dos buffers de escritura por archivo, de tal manera que cuando se escribe uno en disco, se lee el otro y as alternativamente intercambiando los papeles de ambos. Por lo tanto, el sistema operativo puede realizar operaciones en un buffer mientras escribe el otro en disco. Esta t cnica no se limita unicamente a dos buffers, e pudi ndo tratarse de un conjunto de buffers o buffer pooling. e

3.3.2.

Bloques

Como es l gico pensar, el sistema operativo necesita tener control sobre el estado o de todos los sectores (unidad mnima de transferencia de informaci n entre el disco y o el subsistema de E/S) en un disco. Supongamos que tenemos un disco de 128 GBytes distribuidos en sectores de 512 bytes y que s lo utilizamos 1 byte por sector para control; o haran falta 256 MBytes para gestionar esta tarea. Por tanto, el sistema operativo utiliza un m ltiplo del sector como unidad mnima de u transferencia de informaci n de E/S, llamada cluster o bloque dependiendo del gestor o de cheros. Como consecuencia, un bloque es el espacio mnimo que puede ocupar un chero en disco y un chero no tiene por qu tener el mismo tama o desde el punto de e n vista fsico en distintos sistemas de cheros. Por ejemplo, si un chero contiene s lo 5 o bytes, y el tama o de bloque es de 1 KByte (2 sectores), en disco ocupar 1024 bytes, n a desperdici ndose el 99.51 % del espacio disponible; en otro sistema con bloques de 2 a KBytes (4 sectores) ocupar 2048 bytes, desaprovechando el 99.76 %. a Esta forma de gestionar el espacio en disco por el sistema operativo, repercute directamente sobre c mo se manipular n nuestros registros de datos. Es f cil calcular cu ntos o a a a registros habr en un bloque realizando el cociente entre el tama o de bloque por el taa n ma o de registro (suponiendo que un registro sea de longitud ja e inferior a la del blon que). A esto se conoce como factor de bloqueo o de blocaje. Dependiendo del tipo de registos que pertenecen a un chero se pueden distinguir dos tipos de emblocamiento, el jo y el variable. Emblocamiento jo Considera que todos los registros del chero son del mismo tama o con campos de n tama o jo y predenido. Adem s se exige que el tama o del registro sea inferior al del n a n Organizaci n y gesti n de archivos o o 22 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Elementos b sicos de las estructuras de archivos a

bloque, y no se permite colocar registros en dos bloques distintos. Este tipo de emblocamiento ocasiona generalmente un desperdicio de espacio al no poder ubicar algunos registros completos en un bloque, en el caso de que el tama o de bloque no sea m ltin u plo del tama o de registro. Requiere, pues, que se dise en los registros con un tama o n n n adecuado. Emblocamiento variable Se aplica a registros de longitud variable. Puede haber dos variantes, el emblocamiento variable no espaciado o no extendido que no permite que un registro se ubique en dos bloques distintos; y el emblocamiento variable espaciado o extendido, en caso contrario. En el segundo caso, cuando un registro no cabe entero en un bloque se debe almacenar un puntero al siguiente bloque, ya que estos no tienen que ser adyacentes. En el caso de tener registros de tama o superior al del bloque es necesario utilizar el emblocamiento variable n espaciado. En ambos casos, el c lculo del factor de blocaje es complejo y menos preciso que en el a n a emblocamiento jo, ya que se estima en base a la media del tama o de registro. Adem s hay que considerar las marcas que se almacenan para delimitar los registros y los campos entre s. Si el tama o medio de los registros es grande, tambi n es aconsejable utilizar el n e emblocamiento variable espaciado.

3.4.

Operaciones sobre registros. Fragmentaci n del alo macenamiento

Las inserciones, borrados y actualizaciones de registros generan varios problemas, especialmente graves si los registros son de longitud variable. Incluso cuando los campos y registros son de longitud ja hay que dedicarle especial atenci n. o

3.4.1.

La inserci n o

Si el chero no mantiene ning n orden particular (gura 3.1), debemos buscar un blou que con suciente espacio vaco para colocar el nuevo registro, y en caso de no encontrar ninguno, obtendremos un bloque nuevo donde lo introduciremos. El problema es mayor si existe un orden establecido en el archivo, por ejemplo de clave primaria (gura 3.2). En este caso, hay que localizar primero el bloque que corresponda (seg n el orden). Si en el bloque hay espacio vaco, tendremos que desplazar los u registros para colocar el nuevo registro en su lugar adecuado. Si en el bloque no hay espacio vaco para colocar el nuevo registro , tendremos que buscarlo en otro bloque. Hay dos posibilidades:

Organizaci n y gesti n de archivos o o

23

Antonio Aliaga Munoz

2o I.T.I.G./UAL

Elementos b sicos de las estructuras de archivos a

Figura 3.1: Inserci n de un registro en un bloque no-ordenado o


Los registros se insertan desde fuera hacia dentro para que el espacio libre quede siempre a continuaci n de la cabecera permitiendo la incorporaci n de nuevos punteros. o o

Figura 3.2: Inserci n de un registro en un bloque ordenado con espacio o

Organizaci n y gesti n de archivos o o

24

Antonio Aliaga Munoz

2o I.T.I.G./UAL

Elementos b sicos de las estructuras de archivos a

1. A adir un bloque nuevo B2 (de desbordamiento o overow) (gura 3.3), que ser din a reccionado a partir de un puntero de overow que existe en la cabecera del bloque B1. En este nuevo bloque B2 podremos colocar los registros ordenadamente. A su vez, el bloque de overow puede apuntar a un segundo bloque de overow B3, y as sucesivamente.

Figura 3.3: Inserci n de un registro en un bloque ordenado sin espacio. Bloque de overo ow o 2. Encontrar espacio en un bloque vecino o pr ximo B2 (gura 3.4). Si el bloque candidato B1 a albergar el registro no contiene suciente espacio, lo buscamos en el bloque siguiente. Si en este segundo bloque B2 hay espacio suciente, llevaremos el registro superior del bloque B1 al bloque B2 ordenadamente, desplazando a su vez los registros del bloque B2. Entonces insertamos el nuevo registro en el bloque B1 en la posici n adecuada. o

3.4.2.

El borrado

En caso de tener una tabla de offsets, podemos eliminar el registro simplemente desplazando los otros para dejar el espacio libre en el centro del bloque. De esta manera queda el espacio compactado, sin fragmentar. Si no tenemos una tabla de offsets o no podemos desplazar los registros (gura 3.5), tendremos que mantener una lista de registros borrados o espacio libre en el bloque que

Organizaci n y gesti n de archivos o o

25

Antonio Aliaga Munoz

2o I.T.I.G./UAL

Elementos b sicos de las estructuras de archivos a

Figura 3.4: Inserci n de un registro en un bloque ordenado sin espacio. B squeda en el o u bloque vecino nos permita conocer qu espacio libre hay y su tama o. Para ello sera suciente con gese n tionar los fragmentos libres a modo de pila, colocando el tope de la pila en el registro de cabecera del bloque, y en cada registro borrado un puntero al siguiente registro eliminado.

Figura 3.5: Borrado de un registro con lista de espacio libre Otra t cnica es colocar una marca de borrado en cada registro eliminado, sin m s. e a Este mecanismo requiere tener una tabla de registros borrados. El espacio libre que queda al eliminar los registros puede ser recuperado realizando un preoceso de compactaci n o general del archivo.

Organizaci n y gesti n de archivos o o

26

Antonio Aliaga Munoz

2o I.T.I.G./UAL

Elementos b sicos de las estructuras de archivos a

3.4.3.

La actualizaci n o

Si los registros son de longitud ja, las modicaciones de estos no afectan al almacenamiento ya que el tama o del registro no vara, s lo cambia su contenido. n o Si los registros son de longitud variable, tenemos todos los problemas de la inserci n o y del borrado juntos, exceptuando la necesidad de crear marcas de borrado (es su caso). Se pueden dar dos casos: Si la nueva versi n del registro es de un tama o mayor que la antigua, es necesario o n tomar espacio adicional del bloque. Esto puede suponer el desplazamiento de otros registros dentro del bloque, e incluso la creaci n de un bloque de desplazamiento o (overow). Si el nuevo registro es de menor tama o, podemos utilizar t cnicas de recuperaci n n e o de espacio, como se ha explicado en el apartado anterior.

3.5.

Acceso a registros

Una vez que hemos tomado conciencia de que en nuestras estructuras de archivosel registro es la mnima unidad de informaci n que ser leda o escrita a la vez, nece o a sitamos t cnicas para movernos ecientemente con esta losofa de organizaci n de la e o informaci n. o

3.5.1.

Llaves de busqueda

Es conveniente tener identicados cada uno de los registros del archivo con una clave (llave o key) basada en su contenido. De esta manera conseguiremos realizar b squedas u m s ecientes. La clave es otra herramienta conceptual (como lo son el campo, registro, a archivo, etc). La forma can nica de una clave consiste en una representaci n de esta que o o nos permite estandarizar los valores que la clave puede tomar; por ejemplo, si tenemos un registro cuya clave fuese el nombre .ANTONIO, el registro debera poder encontrarse A a independientemente de escribir . ntonio . ntonio. En este caso, la forma can nica cono o sistira en formar claves que s lo contengan may sculas y no contengan blancos al nal o u de la cadena. Podemos tener claves que identiquen de forma unica a un registro. A estas claves las llamaremos primarias o primary keys. Otras claves que pueden denirse y que no tienen porqu ser unicas son las claves secundarias. Un ejemplo de clave primaria puede ser el e NIF, y una clave segundaria el nombre+apellidos. Si una clave secundaria no identica al registro de forma unica, debemos proveer mecanismos que resuelvan la incertidumbre ocasionada al realizar una b squeda. Lo m s u a

Organizaci n y gesti n de archivos o o

27

Antonio Aliaga Munoz

2o I.T.I.G./UAL

Elementos b sicos de las estructuras de archivos a

normal suele ser que se devuelva el subconjunto de registros que coinciden con dicha clave, permitiendo realizar scroll entre ellos. Algunos criterios importantes para escoger buenas claves primarias son: Las primary keys suelen no estar basadas en datos reales, debido a la incertidumbre intrnseca de estos, ya que en cualquier momento pueden repetirse valores y adem s a no podr n contener datos nulos. a Las primary keys no pueden o no deben estar denidas sobre valores cambiantes.

3.5.2.

Busqueda iterativa de un registro en un archivo (busqueda se cuencial)

En registros no bloqueados (gura 3.6), la eciencia de una b squeda secuencial es u en promedio N/2, siendo N el n mero de registros del archivo, y por tanto, el orden de u eciencia es O(N).

Figura 3.6: B squeda secuencial en archivos no-bloqueados u En registros bloqueados las b squedas son m s ecentes (gura 3.7). Como se ha visto u a en el primer captulo, el coste de recuperar un registro de disco es b sicamente el tiempo a de posicionamiento o b squeda o seek-time. Si recuperamos dos registros consecutivos u en un archivo no bloqueado, necesitaremos dos accesos a disco, tardando m s tiempo que a en recuperar esos dos registros en un s lo acceso transriendo los datos de un s la vez. o o Organizaci n y gesti n de archivos o o 28 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Elementos b sicos de las estructuras de archivos a

En este caso, s lo habr que posicionarse en el primero de ellos y transferir en bloque la o a informaci n de ambos. o Por tanto, podemos mejorar el rendimiento de la b squeda transriendo bloques de u registros en lugar de registros individuales. Aunque aumentar el tiempo de transferena cia (que es proporcional a la cantidad de informaci n) el tiempo de b squeda se reduo u cir dr sticamente, y en conjunto, el coste de la b squeda ser mucho menor. a a u a Sin embargo, aunque obtendremos tiempos de b squeda muy inferiores a la b squeda u u en archivos no bloqueados, el orden de eciencia contin a siendo O(N). En promedio, sin u embargo, el n mero de accesos se puede calcular como N/(2*FB), donde FB es el factor u de bloqueo (n mero de registos por bloque). u El bloqueo de registros no vara el n mero de comparaciones que deben realizarse en u la RAM para encontrar el registro buscado.

Figura 3.7: B squeda secuencial en archivos no-bloqueados u La b squeda secuencial puede ser recomendable en las siguientes situaciones: u B squeda de patrones en cheros ASCII. u Ficheros con pocos registros. B squeda en cheros almacenados en cintas. u Organizaci n y gesti n de archivos o o 29 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Elementos b sicos de las estructuras de archivos a

B squeda por claves secundarias con un gran n mero de resultados por clave. u u

3.5.3.

Acceso directo e ndices

El acceso directo es la alternativa m s radical al acceso secuencial. Diremos que tenea mos acceso directo a un registro cuando podemos posicionarnos directamente al comienzo del mismo y leerlo. El orden de eciencia ser , por tanto, constante: O(1), independientemente del n mea u ro de registros del chero. En ocasiones, la posici n de cada registro se almacena en un o chero secundario o ndice, o bien, si prescindimos de estos, podemos conocer su posi ci n a partir del numero de registro relativo -RRN- con respecto al inicio del chero (0, o 1, 2, 3, . . . ). Este RRN suele asignarse a cada registro y se almacena con elseg n el orden u de introducci n en el chero. Para trabajar con el RRN de forma eciente necesitamos o que los registros sean de longitud ja. En caso contrario, si los registros son de longitud variable, la eciencia de la b squeda seguira siendo O(N) ya que no sabramos el tama o u n de cada registro y por tanto no podemos obtenerla posici n del registro de forma directa o (para calcularla habra que realizar una b squeda secuencial). u Por tanto, necesitamos registros de longitud ja conocida:

Posici n del registro en el chero = RRN * tama o de registro o n

Organizaci n y gesti n de archivos o o

30

Antonio Aliaga Munoz

Captulo 4 Organizaciones b sicas de registros en a archivos


Los archivos pueden adoptar varias formas de organizaci n de los registros que cono tienen, pudiendo adoptar una u otra en funci n de la utilidad para la que est n dise ados o e n o del tipo de registro que almacenan. B sicamente, existen cinco tipos de organizaciones: a 1. Organizaci n apilada. o 2. Organizaci n secuencial. o 3. Organizaci n encadenada. o 4. Organizaci n directa. o 5. Organizaci n indexada. o En este tema s lo trataremos las tres primeras y la cuarta a modo de introducci n, o o dejando la organizaci n indexada y la directa para m s adelante por abordarse en captulos o a especcos para cada una.

4.1.

Archivos de registros no ordenados: Organizaci n o apilada

Este tipo de organizaci n recibe su nombre de la forma en que se incorporan nuevos o registros al archivo, ya que se hace del mismo modo que en las pilas. Es decir, los nuevos registros siempre se incorporan al nal, tras el ultimo registro existente. No existe, por tanto, ning n orden establecido, ni existen referencias que indiquen la posici n de un u o registro en el archivo. 31

2o I.T.I.G./UAL

Organizaciones b sicas de registros en archivos a

El acceso a la informaci n s lo puede ser secuencial, de tal manera que para acceder o o a un registro siempre ser necesario pasar por todos los anteriores al mismo comenzando a desde el principio del archivo.

4.1.1.

Estructura

En funci n de la estructura de los registros que contienen estos archivos se pueden o clasicar en estructurados y no-estructurados. Los no-estructurados pueden contener registros sin estructura denida, con diferente n mero de campos, y cada campo con difeu rente tipo de datos. Los estructurados, que pueden ser de longitud ja o variable, tienen una estructura perfectamente denida; todos tienen el mismo n mero de campos, y estos u son del mismo tipo y mantienen el mismo orden en el registro.

4.1.2.

No estructurados

El hecho de que no tengan una estructura denida, obliga a que con cada dato se almacene informaci n a cerca de su contenido. Los registros tienen la forma que muestra o la gura 4.1.

Figura 4.1: Organizaci n apilada no-estructurada o Cada registro est compuesto por el par identicador/valor con separadores entre ama bos y a su vez con separadores entre diferentes parejas. Por su propia naturaleza auto descriptiva el espacio que ocupan con respecto a la informaci n verdaderamente util es o excesivamente elevado. Organizaci n y gesti n de archivos o o 32 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaciones b sicas de registros en archivos a

A continuaci n vamos a describir en qu modo afecta la estructura de este tipo de o e organizaci n a las operaciones elementales que pueden realizarse con archivos. o La inserci n tiene un coste computacional bajo ya que siempre se insertar n los o a nuevos registos al nal del ultimo bloque en disco. La lectura es totalmente secuencial desde el comienzo y puede suponer la lectura del archivo completo. Para cada registro accedido, antes de comparar con su valor hay que localizar el identicador deseado seg n el criterio de b squeda establecido. u u Es por tanto, una operaci n bastante costosa de eciencia O(N). o La lectura consecutiva del registro siguiente (en orden) dado su anterior es muy costosa ya que el archivo no mantiene orden alguno. Supondr la lectura de todo el a archivo desde su inicio, y el orden de eciencia es O(N). La lectura exhaustiva consiste en listar todos los registros desde el primero sin ning n orden particular. Es una operaci n poco costosa. u o La lectura ordenada, por el contrario, es una operaci n muy costosa de eciencia o O(N 2 ). Para cada dato hay que leer de nuevo el archivo completo. El borrado consiste en marcar el registro con un car cter especial. No requiere a ninguna otra acci n especial. o La actualizaci n. Si el registro no cambia de tama o, se actualiza directamente. En o n cambio, si la longitud vara habr que marcar el registro como borrado y realizar la a posterior inserci n como si de uno nuevo se tratara. o La reorganizaci n, o compactaci n del archivo consiste en eliminar todos los eso o pacios generados por los borrados y actualizaciones. Se requerir de un archivo a auxiliar donde ir copiando los registros v lidos, comenzando por el primero hasta a el nal del archivo. Es una operaci n bastante costosa. o

4.1.3.

Estructurados

En este tipo de archivos todos los registros tienen el mismo n mero de campos y en u el mismo orden, y si los registros son de longitud ja, adem s en la misma posici n. a o No es necesario almacenar m s informaci n que los datos en s mismos. la denici n de a o o cada campo puede estar en el propio programa que gestiona el archivo (implcitamente denida) o bien se puede incorporar como el primer registro del archivo. La manipulaci n de este tipo de archivos tiene las mismas caractersticas que los no o estructurados, siendo todas las operaciones de car cter secuencial. S lo tiene la ventaja a o del ahorro que se obtiene al no tener que procesar los identicadores y que los campos Organizaci n y gesti n de archivos o o 33 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaciones b sicas de registros en archivos a

est n ordenados en el registro, lo cual es importante para encontrar el registro que satisa faga la condici n de b squeda con un menor coste computacional. o u La inserci n: se realiza siempre al nal del archivo. o La lectura: secuencial desde el principio, O(N). La lectura consecutiva: una vez encontrado el primer registro es necesario comenzar de nuevo desde el principio del archivo para recuperar el siguiente registro, O(N). La lectura exhaustiva: al igual que en los no-estructurados ,se listan todos los registros desde el primero hasta el ultimo por orden de introducci n. o La lectura ordenada: para cada registro se debe recorrer de nuevo el archivo completo, O(N 2 ). El borrado: se marca el registro con un car cter especial. a La actualizaci n: si el registro no cambia de longitud, simplemente se reemplaza. o En caso contrario, se marca como borrado y se inserta al nal. La reorganizaci n: se procede como en los no-estructurados, utilizando un archivo o auxiliar.

4.1.4.

Resumen

De forma resumida podemos decir que las organizaciones apiladas tienen las siguientes caractersticas: Son la forma menos estructurada existente de organizaci n archivos. o Su uso data de los comienzos de los sistemas autom ticos de procesamiento de a informaci n. o Se justica su uso en la actualidad cuando se necesita una adquisici n muy r pida o a de la informaci n, siendo en estos casos desaconsejable su procesamiento en tiempo o real. Tambi n se aconseja cuando se desconoce el dominio de la informaci n adquirida. e o Los principales inconvenientes de este tipo de archivos son: Costes de tratamiento muy elevados. Organizaci n y gesti n de archivos o o 34 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaciones b sicas de registros en archivos a

Costes de almacenamiento muy altos. Requieren reorganizaciones peri dicas, sobre todo si la volatilidad de la informao ci n es alta. o El control de la informaci n es difcil de realizar, ya que permiten distintas ocurreno cias del mismo dato en diferentes posiciones del archivo (informaci n redundante). o

4.2.

Archivos de registros ordenados: Organizaci n seo cuencial

Con este nuevo tipo de organizaci n se intentar resolver algunos de los problemas o a que presentan las organizaciones apiladas. En las organizaciones secuenciales todos los registros est n ordenados en funci n de una clave. Una clave es un t rmino que puea o e de estar compuesto por uno o varios atributos (campos) y que permite la identicaci n o inequvoca de un registro, o que permite la ordenaci n de estos en el archivo. o Los registros tendr n una estructura perfectamente denida, con el mismo n mero de a u campos, en el mismo orden y referidos al mismo dominio de la informaci n, representano do la misma propiedad del mundo real. Los registros pueden ser de longitud variable o ja. En los archivos con registros de longitud variable, el acceso es secuencial ya que no es posible determinar directamente la posici n de un registro en el archivo. Cuando los registros son de longitud ja, el acceso o se puede realizar de forma directa si disponemos de una clave unica y de un algoritmo que calcule la posici n relativa en el archivo a partir de esta clave. o Por tanto, parece imprescindible disponer de una clave que identique de forma unica a cada registro del archivo. En caso de no ser posible, ser necesario utilizar un atributo a externo que haga la funci n de clave primaria. o

4.2.1.

Estructura de la organizaci n secuencial o

Como ya hemos adelantado, los archivos estar n compuestos por registros de estructua ra perfectamente denida, con el mismo n mero de campos (atributos) ocupando el misu mo lugar en el registro, y adem s, en los registros de longitud ja, en la misma posici n. a o Este tipo de organizaci n secuencial no requiere el almacenamiento de identicadores o junto a los valores.

4.2.2.

Manipulaci n de los archivos secuenciales o

Las inserciones de los nuevos registros no se realizar n al nal, sino en la posici n a o indicada por el valor de la clave. Por tanto, las inserciones y actualizaciones son m s a Organizaci n y gesti n de archivos o o 35 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaciones b sicas de registros en archivos a

costosas que en las organizaciones apiladas. La inserci n es una operaci n compleja debido al orden establecido en el archivo, o o y mucho m s costosa que en las organizaciones de apilo. En primer lugar debemos a localizar la posici n de inserci n del nuevo registro. Si no hay un hueco libre hao o br que desplazar todos los registros inferiores y nalmente se inserta el registro. a Est claro que esta operaci n es muy costosa porque supone el desplazamiento de a o gran cantidad de informaci n. o Si las inserciones son muy frecuentes, para evitar este problema se puede emplear una zona de derrama, bien en el propio archivo, bien en un archivo auxiliar. En esta zona de derrama se insertar n directamente los nuevos registros desordenadamente a como si de una organizaci n de apilo estructurada se tratara. o En alg n momento ser necesario reorganizar el conjunto del archivo, ya sea porque u a se llene la zona de derrama (si esta se encunetra en el mismo chero), o porque se llegue a un n mero considerable de registros en el archivo de derrama secundario. u Las inserciones son mucho m s r pidas, pero a costa de tener parte del archivo a a desordenado, lo cual nos genera ciertos problemas: Las b squedas, y en general cualquier acceso a la informaci n, deber n exu o a plorar dos zonas de datos diferentes, con procedimientos de acceso distintos. En la zona ordenada el acceso ser directo, y en la zona de derrama, el acceso a ser secuencial. a Cuanto m s crece la zona de derrama, el acceso a la informaci n ser m s a o a a lento, por lo cual se har m s necesaria la reorganizaci n. a a o La lectura depender de dos factores: el criterio de b squeda y el tipo de registro a u (longitud ja o variable). Si el criterio de b squeda no se realiza por la clave, el proceso ser secuencial u a y el costo computacional tan elevado como en las organizaciones apiladas. Si la b squeda es por clave, el costo es muy bajo, ya que pueden utilizarse algoritmos u r pidos, como por ejemplo la b squeda binaria que tiene un orden de eciencia a u O(log2 N ). Si la b squeda en la zona ordenada del archivo no ha tenido exito y u existe una zona de derrama, habr que buscar en esta de forma secuencial la clave a deseada, increment ndose considerablemente el tiempo de acceso. a Si los registros son de longitud variable, el algoritmo de b squeda puede aplicarse u a bloques en lugar de a los registros, ya que se desconoce la posici n absoluta de o estos en el archivo. Por el contrario, si los registros son de longitud ja y la clave determina su posici n en el archivo, la lectura puede ser directa O(1). o

Organizaci n y gesti n de archivos o o

36

Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaciones b sicas de registros en archivos a

La lectura consecutiva depende de la condici n de b squeda. Si no se busca por o u clave, una vez recuperado el primer registro obtener el siguiente es tan costoso como en las organizaciones apiladas ya que ser necesario recorrer todo el archivo a desde el principio. Si la b squeda es por clave primaria, el siguiente registro estar con una probabiu a lidad alta en el mismo bloque o en el siguiente, o por el contrario, en la zona de derrama. La lectura exhaustiva consiste simplemente en leer el archivo comenzando por la zona maestra de forma ordenada y siguiendo por la zona de derrama sin ordenar. La lectura ordenada es r pida siempre que el predicado de ordenaci n incluya la a o clave. Si existe zona de derrama se realizar una reorganizaci n del archivo antes a o de proceder a la lectura y despu s se realiza la lectura exhaustiva. Si el predicado no e incluye la clave, para cada registro recuperado hay que recorrer de nuevo el archivo completo para recuperar el siguiente, O(N 2 ). El borrado consistir simplemente el marcar el registro con un car cter especial. a a La actualizaci n, si se modica la clave del registro o vara su longitud, se marca o el registro como borrado y se procede a su posterior inserci n. Si no se modica la o clave y la longitud del registro no cambia se modica directamente el registro con los nuevos valores. La reorganizaci n consiste en generar un nuevo archivo ordenado por la clave en o el que se han eliminado los registros borrados y se han intercalado los registros de la zona de derrama.

4.2.3.

Resumen

El empleo de archivos con organizaci n secuencial resuelve algunos de los probleo mas que planteaban las organizaciones apiladas y mejora el coste computacional de otras operaciones. No obstante siguen siendo poco ecientes cuando existen zonas de derrama. Por ello suelen desaconsejarse cuando el tama o del archivo es grande o cuando la n informaci n es muy vol til por las continuas reorganizaciones que requieren. o a

4.3.

Archivos con registros enlazados: Organizaci n eno cadenada

Cuando es necesario manejar medios y grandes vol menes de informaci n es recou o mendable almacenar esta en varios archivos relacionados entre s, con el n de reducir Organizaci n y gesti n de archivos o o 37 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaciones b sicas de registros en archivos a

la redundancia y controlar la consistencia de los datos almacenados. Las clases de obje tos del mundo real o entidades se pueden representar por uno o varios archivos, y una relaci n entre dos o varias clases de objetos por un nuevo archivo. o Es necesario, por tanto, que nuestro sistema pueda operar con m ltiples archivos a u la vez. Los archivos secuenciales no son adecuados para trabajar con varios archivos simult neamente. a As pues, si los registros de un archivo est n relacionados con a su vez con otros a objetos de otros archivos, ser necesario poder almacenar informaci n de esta relaci n en a o o el propio archivo. Esto lo conseguiremos deniendo unos atributos especiales llamados punteros, que ser n un atributo de un registro cuya funci n es la de se alar a otro registro a o n del mismo o distinto archivo con el cual se encuentra relacionado. No se debe confundir el signicado de estos punteros con los punteros de los lenguajes de programaci n que son otra cosa bien distinta. Un puntero permitir mantener una o a relaci n fsica o l gica entre registros de archivos, no entre direcciones de memoria. o o En consecuencia, un puntero podr contener: a La direcci n de m quina de un registro (cilindro, pista, cabeza y sector). Estos puno a teros son los m s directos y ecientes, pero tienen inconvenientes, ya que dependen a del sistema fsico de almacenamiento y de su localizaci n en el mismo; adem s o a requieren mucho espacio de almacenamiento. La direcci n relativa de un registro con respecto al BOF (begin of le o comieno zo del archivo). Con estos punteros se consigue la independencia del dispositivo, ya que el registro siempre ocupar la misma direcci n relativa (byte de origen con a o respecto al BOF) en cualquier sistema de archivos. Adem s requieren menos espaa cio que los anteriores. Sin embargo, tienen el inconveniente de que dependen de la posici n del registro en el archivo, de tal manera que si el archivo se reorganiza, o cambiar n muchas de las direcciones relativas de los registros. a La identicaci n de un registro ( valor simb lico) a partir de la cual puede obteo o o nerse alguna de las dos direcciones anteriores. Estos punteros simb licos son indeo pendientes del dispositivo as como de la posici n del registro en el archivo. Por o contra, son difciles de gestionar ya que requieren de complejos algoritmos para transformar su valor en la correspondiente direcci n del registro. o Resumiendo, diremos que los archivos est n basados en una organizaci n encadenada a o si alguno de sus atributos es un puntero (de cualquiera de las clases vistas) a otro registro del mismo archivo o de otro diferente. Desde un punto de vista l gico, los registros pueden o verse como eslabones de una cadena. Los punteros podr n representar: a Relaciones entre registros. Organizaci n y gesti n de archivos o o 38 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaciones b sicas de registros en archivos a

Relaciones entre archivos. Relaciones entre tipos de entidades. Un orden o secuencia entre los registros de un archivo, permitiendo tener un archivo ordenado por varias claves a la vez.

4.3.1.

Estructura de las cadenas

Los archivos que intervienen en las cadenas de registros pueden estar compuestos de registros de longitud ja o variable, siendo alguno de sus atributos un puntero. Como es m s c modo, en adelante supondremos que los registros son de longitud ja. a o Una cadena ser una colecci n de registros referenciados, cada uno ocupando una a o posici n relativa con respecto al primero (llamado cabeza de la cadena) en base a un o predicado de ordenaci n (compuesto por uno o varios atributos). Una cadena puede cono siderarse como una lista de registros, debiendo conocerse en cada momento la cabeza y la cola de la misma. El uso de organizaciones encadenadas permite representar f cilmente las relaciones a l gicas existentes entre el dominio de un problema. Los punteros permiten aumentar el o dominio del conocimiento que aporta un registro; es como si los registros de los archivos apuntados estuvieran incluidos en el registro apuntador, pero con las siguientes ventajas: Los datos de los registros apuntados s lo son almacenados una vez, evitando reduno dancias superuas. La penalizaci n (en n mero de accesos a disco) del sistema es baja ya que s lo o u o ser necesario un acceso adicional para localizar el registro apuntado. a Al no haber redundancia se vitan los problemas de las inconsistencias. No obstante, tienen el inconveniente de que requieren un dise o cuidadoso de los n procesos que actualizan los valores de las claves, ya que si se pierde alg n puntero de la u cadena, la informaci n del archivo situada a continuaci n nunca ser accesible. o o a Normalmente, las organizaciones encadenadas se basan en la existencia de archivos secuenciales (ordenados por una sola clave). Cuando el acceso a estos se realiza por la cla ve, este ser muy eciente, pero cuando se requiere acceder con un predicado de b squeda a u basado en otro atributo, los tiempos de acceso aumentar n proporcionalmente al tama o a n de la cadena, como si fuese una organizaci n de apilo. Para solucionar este problema es o frecuente denir varios punteros en el archivo que lo mantengan ordenado por diferentes claves de b squeda. u

Organizaci n y gesti n de archivos o o

39

Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaciones b sicas de registros en archivos a

Por tanto, los elementos de una cadena pueden formar parte del mismo archivo de archivos diferentes. Si los elementos de la cadena pertenecen a diferentes archivos, organizaciones encadenadas representan relaciones entre entidades; y cuando todos los elementos de una cadena pertenecen al mismo archivo, las organizaciones encadenadas representan secuencias l gicas, al igual que las organizaciones secuenciales pero con varias o diferencias: El orden no viene determinado por la posici n fsica de los registros, sino por los o punteros. Los registros se incorporan al nal del archivo evitando el uso de zonas de derrama. Se pueden mantener tantas secuencias como se quiera incorporando nuevos punteros al registro. Se necesita conocer cual es el primer registro de la cadena.

4.3.2.

Manipulaci n de los archivos encadenados o

Este tipo de organizaciones encadenadas se aconseja para el uso de registros estructurados (con estructura ja denida) y de longitus ja. En el caso de registros de longitud variable, el tiempo de procesamiento se dispara al no conocer la longitud de los registros adem s de por la propia gesti n de los punteros. En los registros de longitud ja a o conocemos siempre la posici n exacta de cada puntero en la estructura del registro. o La inserci n. El nuevo registro se puede incorporar en cualquier posici n del aro o chivo (al principio, al nal o en huecos dejados por registros eliminados). una vez insertado se deben reasignar los punteros para mantener la secuencia de la cadena ordenada(o de las cadenas, si hay m s de una). a La lectura s lo podr realizarse de forma secuencial comenzando por la cabeza o a de la cadena, necesitando en promedio N/2 accesos, siendo el orden de eciencia O(N). Si la b squeda no es por ninguna de las claves, se realiza como si fuera una u organizaci n de apilo. o La lectura consecutiva de un registro a partir del anterior (basada en alguna clave) es inmediata ya que los registros est n ordenados, O(1). En la mayor parte de los a casos el registro siguiente estar en el mismo bloque de registros o en el siguiente. a Si no es por clave hay que leer el archivo desde el inicio O(N). La lectura exhaustiva consistir en localizar la cabeza y a partir de ella recorrer a toda la cadena de forma ordenada. La lectura ordenada equivale a una lectura exhaustiva (O(N)). Si el orden no es por ninguna de las claves de la cadena, entonces su eciencia es O(N 2 ). Organizaci n y gesti n de archivos o o 40 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaciones b sicas de registros en archivos a

La actualizaci n es un proceso sencillo si no se modica ning n atributo perteo u neciente a alguna clave, simplemente actualizando su valor. Pero si interviene en alguna cadena ordenada habr que reestructurar cuidadosamente los punteros. En a ocasiones, puede ser interesante borrar e insertar en lugar de actualizar. El borrado se realizar marcando el registro con un car cter especial y reasignando a a los punteros de la cadena en la que interviene. Si el registro est implicado en m s a a de una cadena, no podr ser marcado como eliminado mientras sea signicante en a las otras cadenas. Esto se controla mediante el uso de unas marcas en el propio registro que indican la signicancia del mismo con respecto a cada cadena. La reorganizaci n deber realizarse peri dicamente debido a la existencia de reo a o gistros no-signicantes para ninguna de las cadenas existentes en el archivo. Tambi n puede ser necesaria si se ha producido alg n fallo en el sistema (software o e u hardware) o en el proceso de mantenimiento del archivo y se ha perdido el puntero de alguna de las cadenas declaradas, quedando informaci n no enlazada que hay o que eliminar. En caso de existir una unica cadena, se lee el archivo como si de una organizaci n o de apilo se tratara guardando en un archivo temporal los registros v lidos a modo de a organizaci n secuencial (ordenadamente), para posteriormente asignar la direcci n o o de cada puntero a su registro siguiente. Si hay m s de una cadena, el proceso se a complica pues ser necesario tener en cuenta los punteros que referencian a todos a aquellos registros que cambian de posici n tras la reorganizaci n. o o

4.4.

Archivos relativos (hashing): Organizaci n directa o

Existe otro tipo de organizaci n primaria basada en el direccionamiento calculado o o hashing, que proporciona un acceso muy r pido a los registros con cierta condici n de a o b squeda. Esta organizaci n suele llamarse organizaci n directa. u o o La condici n de b squeda suele estar basada en un s lo campo o atributo llamado o u o campo de direccionamiento calculado, y si este campo es la clave del archivo se denomina clave de direccionamiento calculado. Tambi n necesitaremos una funci n h e o llamada funci n de direccionamiento calculado o funci n hash o funci n de aleatorio o o zaci n, la cual devuelve para cada registro la posici n del mismo en funci n de la clave. o o o Tambi n puede devolver la direcci n del bloque al que pertenece el registro, realizando la e o b squeda dentro del bloque en la RAM. u

4.4.1.

Hashing interno

El hashing interno se implementa como una tabla o array de registros. Suponiendo que tenemos M registros, la funci n hash h deber transformar el campo o clave k en un o a Organizaci n y gesti n de archivos o o 41 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaciones b sicas de registros en archivos a

valor ente [0..M-1]. Normalmente, las funciones hash tienen la forma: h(k) = k mod M . Los valores de k no-enteros pueden convertirse utilizando la conversi n ASCII. El o siguiente ejemplo muestra un algoritmo tpico de conversi n para cadenas de caracteres: o temp = 1; for (i = 0; i < M; i++) temp = (temp * k[i]) % M; direccin = temp % M; o Las funciones hash tienen el problema de que no garantizan que para cada dos claves distintas exista siempre dos valores de direccionamiento diferentes. No son funciones perfectas. Generalmente, el espacio de direccionamiento calculado (los valores que puede devolver la funci n hash) suele ser mayor que el espacion de direcciones ( numero de o o direcciones disponibles para los registros). La funci n hash lo que hace es establecer una o correspondencia entre ambos. En los casos en que la funci n hash devuelve una misma direcci n para distintos o o valores de la clave k diremos que se ha producido una colisi n. En estos casos tendremos o que almacenar el registro en otra posici n diferente a la calculada por h ya que esta ya o est ocupada por otro registro insertado anteriormente. Por tanto, debemos dise ar un a n proceso de resoluci n de colisiones. Existen varios m todos: o e Direccionamiento abierto: se examina el archivo hasta encontrar la primera posici n libre. o Encadenamiento: consiste en mantener unas areas de desbordamiento extendiendo el array mediante el uso de punteros. La colisi n se resuelve colocando el registro o en este area y encaden ndolo al registro anterior con un puntero. As se tendr una a a lista enlazada de registros para cada valor de la funci n hash. o Hashing multiple: consiste en aplicar una segunda funci n hash. Si se siguen proo duciendo colisiones puede aplicarse una tercera funci n y tambi n aplicar directao e mente direccionamiento abierto. El objetivo de la funci n hash es distribuir los registros uniformente en el espacio o de direcciones de manera que minimice el n mero de colisiones y se ocupen el mayor u n mero de posiciones del array. Estudios demuestran que es recomendable tener tablas u que no superen el 70 % . . . 90 % de espacio ocupado para evitar las colisiones y para que no se desperdicie demasiado espacio. Por tanto, para almacenar r registros en una tabla r habr que escoger un M tal que 0,7 M 0,9, siendo M un n mero primo, ya que se a u ha demostrado que los n meros primos realizan una mejor distribuci n de los registros al u o utilizarse conjuntamente con la funci n mod. Tambi n es usual tomar M como potencia o e de 2. Organizaci n y gesti n de archivos o o 42 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaciones b sicas de registros en archivos a

4.4.2.

Manipulaci n de los archivos encadenados o

En este tipo de organizaciones cualquier operaci n es eciente siempre que se realice o bas ndose en el campo clave por el que se calcula la funci n hash. En caso contrario, la a o eciencia en la misma que la de los archivos de apilo. La inserci n se realiza siempre en la posici n devuelta por la funci n hash, O(1). Si o o o se produce una colisi n debemos aplicar alg n m todo de resoluci n de colisiones o u e o que permita insertar el registro. La lectura Se compara el registro con el indicado por la funci n hash, O(1). Si no o coincide es porque hubo una colisi n y debemos buscar en otro lugar en funci n o o del m todo de resoluci n de colisiones implementado. e o La lectura consecutiva de un registro a partir del anterior debe realizarse de forma secuencial desde el inicio del archivo ya que no est ordenado por ninguna clave, a O(N). La lectura exhaustiva consiste en leer el archivo desde el inicio hasta el nal sin ordenar. La lectura ordenada se realiza recorriendo para cada registro de nuevo el archivo completo, O(N 2 ). La actualizaci n es simple si no se modica la clave. Basta con localizar el registro o y cambiar su valor. Si se modica la calve, tambi n cambiar la direcci n asociada e a o por la funci n hash, por lo que habr que eliminarlo y volverlo a insertar en su lugar o a adecuado. El borrado consiste en marcarlo como eliminado. La reorganizaci n no parece ser necesaria salvo que se disponga de zonas de deso bordamiento con registros marcados como eliminados y sea necesario recuperar el espacio.

4.4.3.

Hashing externo

Para adecuar el hashing a las caractersticas del almacenamiento en disco los que se hace es dividir el espacio de direcciones de destino en cubetas, siendo estas bloques de disco o bien un grupo de bloques contiguos. La funci n hash establecer una correspono a dencia entre la clave del registro y un n mero de cubeta relativo, en lugar de asignar una u direcci n absoluta. En la cabecera del chero debemos tener una tabla que convierta el o n mero de la cubeta en la direcci n fsica del bloque de disco correspondiente. u o Organizaci n y gesti n de archivos o o 43 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaciones b sicas de registros en archivos a

Con este m todo, el problema de las colisiones no es demasiado grave porque se asige nan a una cubeta tantos registros como caben en la misma. Sin embargo, si una cubeta se llena debemos tener un mecanismo que permita la inserci n en otro lugar mantenieno do enlazada la lista de registros. Esto se hace con punteros a registros que guarden la direcci n del bloque y la posici n relativa del registro en este. o o El hashing que asigna un n mero jo de cubetas se denomina hashing est tico. Este u a tiene varios problemas ya que puede ocurrir que se desperdicie mucho espacio o por el contrario, que nos falte. Para solucionar estas cuestiones se ha dise ado el hashing n din mico. a

Organizaci n y gesti n de archivos o o

44

Antonio Aliaga Munoz

Parte II Indexaci n o

45

Captulo 5 Conceptos b sicos sobre ndices a


5.1.
5.1.1.

Archivos con ndices


Denici n o

Al nal de muchos libros aparecen unas cuantas p ginas conteniendo un ndice. Un a ndice es una tabla que contiene una lista de claves y la referencia a los n meros de las u p ginas donde aparecen. Todos los ndices est n basados en los mismos conceptos: claves a a y campos referenciados. La funci n de un ndice es proporcionar un camino para acceder o a un registro r pidamente evitando tener que escanear el contenido completo del libro o a del archivo en busca de la clave deseada. Los ndices son, por tanto, estructuras auxiliares dise adas para acelerar operaciones n que no son ecientes en nuestras organizaciones b sicas de archivos. a Un ndice es otra herramienta conceptual y permite imponer un orden en un archivo sin necesidad de reorganizarlo. Tienen la ventaja de que puede haber varios ndices de nidos sobre un archivo, bas ndose en distintas claves, lo cual nos permite tener m ltiples a u caminos de aceso al archivo. Desde un punto de vista formal, un ndice es una colecci n de entradas de datos que o proporcionan un camino eciente para localizar todas las entradas de datos con un valor de la clave de b squeda k. Cada entrada de datos k* contiene toda la informaci n necesaria u o para recuperar todos los registros con el valor de la clave de b squeda k (por ejemplo, un u puntero al registro referenciado).

5.1.2.

Estructura de los ndices

Debemos tener en cuenta dos cuestiones importantes: Exactamente qu se debe almacenar en una entrada de datos? e

46

2o I.T.I.G./UAL

Conceptos b sicos sobre ndices a

C mo se organizan las entradas de datos para soportar de forma eciente recupeo raciones a partir de un valor dado? Una entrada de datos k* nos permitir recuperar uno o m s registros con el valor de la a a clave k. Existen varias alternativas sobre qu se debe almacenar en las entradas de datos e de un ndice: 1. Una entrada de datos k* es un registro de datos con valor de la clave de b squeda k. u 2. Una entrada de datos k* es un par k,rid donde rid es el identicador del registro cuyo valor de clave es k (puntero). 3. Una entrada de datos k* es un par k1,lista-rid donde lista-rid es una lista de identicadores de registros cuya clave de b squeda es k. u En el caso 1, el ndice no necesita almacenar registros de datos de forma separada a los propios datos. El ndice est contenido implcitamente en la propia organizaci n del a o archivo (secuencial, encadenado o hash). Las alternativas 2 y 3, que contienen entradas que apuntan a registros de datos, son independientes de la organizaci n usada para el o archivo de datos. La soluci n 3 suele gestionar mejor el espacio, pero las entradas de o datos suelen ser de longitud variable. Si deseamos utilizar varios ndices, uno de ellos estar basado en la opci n 1 para ahorrarnos tener que almacenar el contenido de archivo a o varias veces. Una forma de organizar las entradas de datos es realizando hashing sobre la clave de b squeda. En este caso, las entradas de datos se tratan como un archivo con organizau ci n directa (hash). Otra soluci n sera organizar las entradas de datos construyendo una o o estructura de datos para las b squedas: arboles y hash. u

5.2.

Propiedades de los ndices

Veremos algunas propiedades de los ndices que afectan a la eciencia de las b sque u das utilizando el ndice.

5.2.1.

Indices agrupados y no-agrupados (clustered/unclustered)

Un ndice es agrupado si el orden de los datos en el ndice es el mismo que el de la organizaci n del archivo de datos. Por denici n, todos los ndices de tipo 1 son agrupao o dos. Los ndices de tipo 2 y 3 ser n agrupados si los registros de datos est n ordenados a a por la misma clave del ndice. Los ndices basados en hashing no almacenan las entradas de datos de forma ordenada, por lo tanto, s lo ser n agrupados si utilizan la alternativa 1. o a Los ndices que mantienen entradas de datos ordenadas por la clave de b squeda utilizan u organizaciones basadas en arboles. Organizaci n y gesti n de archivos o o 47 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Conceptos b sicos sobre ndices a

En la pr ctica es raro mantener archivos de datos totalmente ordenados debido al coste a que supone tener que reorganizar la informaci n constantemente (inserciones y borrados). o Normalmente, los registros son ordenados inicialmente en p ginas o bloques que dejan a un cierto espacio sin ocupar para absorber nuevas inserciones en orden. Si el espacio de la p gina est agotado, se obtiene m s espacio usando p ginas de desbordamiento a a a a (overow). Posteriormente, el chero deber ser reorganizado para asegurar un buen rena dimiento. Por tanto, los ndices agrupados son relativamente caros de mantener cuando el archivo es modicado; tambi n cuando las entradas de datos pueden ser movidas ene tre p ginas estando los registros identicados por la combinaci n (p gina, slot). Mientras a o a que s lo podemos tener un ndice agrupado en el archivo, podemos tener varios ndices o no-agrupados. El coste de utilizar un ndice para recuperar un rango de registros en funci n de la clave o de b squeda puede variar mucho. Si el ndice es agrupado s lo tenemos que recuperar u o a unos pocos bloques o p ginas, si es no-agrupado tendremos que recuperar muchas p ginas a de registros.

5.2.2.

Indices densos y dispersos (dense/sparse

Un ndice es denso si contiene al menos una entrada para cada valor de la clave de b squeda. Un ndice disperso contiene una entrada para cada p gina de registros del u a archivo de datos. Los ndices dispersos deben ser agrupados, por tanto, podemos tener como mucho un ndice disperso. Tpicamente, los ndices dispersos suelen ser mucho menores que los densos.

5.2.3.

Indices primarios y secundarios

Si un ndice est basado en los campos de la clave primaria diremos que es un ndice a primario. En otro caso, es un ndice secundario. Los ndices de la alternativa 1 son primarios y el resto secundarios. Un ndice primario garantiza que no hay valores de clave duplicados. Los ndices secundarios pueden contener duplicados. En caso de que sepamos que en un ndice secundario no hay duplicados, lo llamaremos ndice unico (unique index).

5.2.4.

Indices sobre claves multiples

La clave de b squeda de un ndice puede contener varios campos, llam ndose clave u a compuesta. En estos ndices, diremos que una consulta de igualdad es aquella en la que cada cam po de la clave de b squeda se compara con una constante con el operador = (ej: edad u = 20 and salario = 10). Los archivos hash s lo permiten este tipo de consultas. Por otra o Organizaci n y gesti n de archivos o o 48 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Conceptos b sicos sobre ndices a

parte, una consulta de rango es aquella en la que alguno de los campos de la clave de b squeda no se compara con una constante con el operador = (ej: edad 30 and salario u 40), o bien (ej: edad = 30 - omitiendo salario). El orden de los campos en la clave de b squeda del ndice inuye bastante a la hora de denir este (ej: edad+salario no es igual u que salario+edad).

5.2.5.

Indices multinivel

Consisten en tener una especie de ndice de un ndice. Esto puede ser util cuando te nemos un ndice que est compuesto de muchas entradas (ndices de gran tama o). Igual a n mente podemos pensar en a adir un tercer nivel, etc., pero esto tiene lmites en t rminos n e de eciencia y en tal caso deberamos considerar la implantaci n de un ndice basado en o arboles-B.

Organizaci n y gesti n de archivos o o

49

Antonio Aliaga Munoz

Captulo 6 Organizaciones indexadas


6.1. Organizaci n secuencial indexada o

Ver el tema 5 del libro Ficheros: organizaciones cl sicas para el almacenamiento de a la informaci n de Irene Luque Ruiz. o

6.2.

Organizaci n indexada simple o

Un ndice simple es aquel que puede ser representado utilizando arrays simples de estructuras que contienen las claves y los campos referenciados. Es importante recordar que un ndice es una herramienta conceptual que impone un orden en un archivo sin necesidad de reorganizarlo.

6.3.

Estructura

Las entradas del ndice consistir n en registros de longitud ja con un campo para el a valor de la clave y otro campo para el puntero a la posici n real del registro referenciado o en el archivo de datos. En el ndice habr una entrada para cada registro del archivo de datos (es un ndice a denso). El ndice est ordenado, mientras que el archivo de datos no tiene por qu estarlo a e (ndice no-agrupado). Normalmente el archivo de datos suele tener una organizaci n o apilada para realizar m s ecientemente las inserciones y borrados, pudiendo tener rea gistros de longitud variable.

50

2o I.T.I.G./UAL

Organizaciones indexadas

6.4.

El acceso a los datos

La operaci n de localizar y acceder a un registro del archivo de datos utilizando el o ndice es simple: Las caractersticas del nuevo procedimiento de b squeda son: u Se trabaja con dos archivos: el archivo de datos y el archivo de ndice. El archivo de ndice es considerablemente m s f cil de gestionar por dos motivos: a a Los registros son de longitud ja, lo cual facilita el uso del algortmo de b squeda binaria. u Los registros son de menor tama o, lo que permite tener todo el contenido en n memoria. Al tener registros de longitud ja en el ndice, estamos imponiendo un tama o m xi n a mo de clave. Si las claves son el archivo de datos son de mayor tama o y se produce n truncamiento, puede haber problemas al violar la restricci n de clave primaria. o El archivo de ndice no almacena nada m s que el valor de la clave y el puntero en a la mayora de los casos. Sin embargo, puede ser necesario guardar otros atributos, como por ejemplo, el tama o de registro. n

6.5.

Operaciones b sicas en un ndice a

Hemos visto que mantener archivos de datos ordenados para poder ejecutar sobre ellos b squedas binarias puede resultar demasiado costoso. Una de las grandes ventajas u de utilizar ndices simples es que la adici n de registros puede realizarse mucho m s o a rapidamente que en un archivo ordenado, siempre que podamos tener todo el ndice en memoria. Suponiendo que la longitud del registro de ndice es peque a, podremos cargar n en memoria varios miles de entradas en una estructura del tipo array. Entonces, todas las operaciones de b squeda se realizar n en la RAM utilizando b squedas binarias, siendo u a u mucho m s r pidas, teniendo que acceder al archivo de datos una sola vez para hacer a a seek() y recuperar la informaci n. En caso de no tener un ndice y estar el archivo de o datos ordenado, cada operaci n de b squeda (aunque sea binaria) acceder a disco, siendo o u a mucho menos eciente. Sin embargo, el mantenimiento de las estructuras de ndices requiren la realizaci n de o tareas adicionales, como por ejemplo: Crear el archivo de ndice originalmente vaco y el archivo de datos. Leer el contenido del ndice en memoria antes de usarlo. Organizaci n y gesti n de archivos o o 51 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaciones indexadas

Escribir el ndice de memoria a disco despu s de su uso. e A adir registros al archivo de datos y al ndice. n Eliminar registros del archivo de datos y del ndice. Modicar registros en el archivo de datos y en el ndice.

6.5.1.

Creando los archivos

Los dos archivos (datos e ndice) se crean vacos con los registros de cabecera nada m s. a

6.5.2.

Leer el ndice en memoria

Se asume que el ndice es lo sucientemente peque o como para poder albergarlo en n una estructura de tipo array. Cada elemento de la estructura es un registro del ndice. La lectura se realiza de forma secuencial desde el archivo de ndice en disco a la estructura en memoria, recuperando en cada acceso un gran n mero de registros (para ahorrarnos u accesos a disco).

6.5.3.

Guardando el ndice en disco

Cuando no se necesita utilizar m s el ndice, se guarda su contenido en disco. En los a sistemas inform ticos pueden generarse corrupciones de datos debido a fallos del sistema a (software o hardware) o cortes de suministro el ctrico. Debido a que el ndice se mantiene e ntegramente en memoria y s lo se actualiza en disco cuando se deja de utilizar, si antes de o realizar esta operaci n se produce un fallo, entonces tendremos un serio problema. Para o evitar desastres (o m s bien para poder recuperar el sistema ante un fallo) se deberan a implementar al menos un par de mecanismos de seguridad: El programa debe saber cuando el ndice est fuera de fecha (out of date). Esto pue a de realizarse gestionando una marca de modicado tanto en memoria como en la cabecera del archivo de ndice en el preciso instante que se produzca la primera mo dicaci n. Esta marca se eliminar cuando se guarde el ndice completo en disco. o a De esta manera, si se produce un fallo durante la ejecuci n del programa o antes de o nalizar el procedimiento de escritura, el archivo en disco quedar marcado como a fuera de fecha. Cualquier programa, antes de utilizar el ndice deber consultar su estado, y si a est marcado, deber regenerar el ndice antes de su uso. a a

Organizaci n y gesti n de archivos o o

52

Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaciones indexadas

6.5.4.

Inserci n de registros o

El procedimiento de inserci n debe realizarse siempre sobre el archivo de datos y o sobre el ndice. A adir en el archivo de datos es f cil, s lo deberemos recordar la posici n n a o o de inserci n para asign rsela al puntero de la nueva entrada de datos en el ndice. Como el o a array del ndice est ordenado, la inserci n de un nuevo registro requerir probablemente a o a la reorganizaci n del ndice. El procedimiento supondr el desplazamiento de todos los o a registros posteriores al nuevo para dejarle espacio a este. La gran ventaja de los ndices es que este proceso se hace ntegramente en memoria sin acceder ni una sola vez a disco.

6.5.5.

Borrado de registros

Al igual que la inserci n, el borrado debe actuar sobre el archivo de datos (por los meo canismos estudiados en captulos anteriores: marca de borrado, recuperaci n de espacio, o etc.) y sobre el ndice en memoria. Existen dos posibilidades: Marcar simplemente el registro del ndice como borrado. Desplazar el contenido de todos los registros posteriores liberando el espacio de la entrada borrada.

6.5.6.

Actualizaci n de registros o

Podemos distinguir dos casos, dependiendo de que el cambio afecte a la clave de indexaci n o no: o La actualizaci n modica el valor de la clave. Esta operaci n puede signicar la o o reoganizaci n del ndice y del archivo de datos, para lo cual, el camino m s sencillo o a consiste en realizar una operaci n de borrado seguida de una inserci n. o o La actualizaci n no afecta a la clave. Normalmente no afecta al ndice, pero puede o suponer reorganizar el archivo de datos. Si el tama o del registro de datos no vara n o disminuye, entonces solo hay que actualizar el archivo de datos nada m s. En a caso de que vare su tama o, increment ndose, puede ser necesario recolocarlo en n a otra posici n del archivo de datos, teniendo por tanto que actualizar el puntero del o registro del ndice.

6.5.7.

Indices que no caben en memoria

Los m todos vistos hasta ahora presuponen que el contenido completo del ndice e est en memoria. Desgraciadamente, esto no es posible con todos los ndices existentes, a teniendo que realizar las operaciones de mantenimiento del ndice sobre almacenamiento Organizaci n y gesti n de archivos o o 53 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaciones indexadas

secundario. Las desventajas de los ndices simples que no pueden gestionarse integramen te en memoria son las siguientes: La b squeda binaria, al requerir varios accesos a disco, no es signicantivamente u m s r pida que realizarla directamente sobre el archivo de datos. a a La reorganizaci n del ndice (debida a inserciones, borrados y actualizaciones) se o realizar sobre disco siendo millones de veces m s costosa que haci ndola sobre a a e RAM. En este punto habra que reconsiderar seriamente la utilizaci n de organi o zaciones basadas en hash si la velocidad de acceso es la prioridad o de estructuras basadas en arboles-B si se necesita la exibilidad del acceso por clave y del acceso secuencial ordenado. En cualquier caso, los ndices simples proseen una importante serie de ventajas sobre los archivos de datos ordenados por clave, a n cuando no puedan ser gestionados en u memoria: Un ndice simple hace posible el uso de la b squeda binaria sobre archivos de datos u con longitud variable, ya que el ndice establece una asociaci n entre la longitud o ja del ndice y la longitud variable del registro de datos. Los registros del ndice son mucho m s peque os, por lo que las operaciones de a n reorganizaci n, ordenaci n, etc., ser n mucho menos costosas sobre el ndice que o o a sobre el archivo de datos (debido a que habr que mover menor cantidad de infora maci n). o El uso del ndice permite reorganizar las claves sin mover los registros del archivo de datos. Podemos tener diferentes ndices por distintas claves de b squeda, mientras que en u el archivo de datos ordenado por una s la clave s lo se permite un orden. o o

6.6. 6.7.

Indices secundarios Denici n o

Un ndice secundario es aqu l que permitir establecer un orden adicional al de la e a clave primaria en nuestro archivo de datos. Los campos o atributos en los que est n baa sados estos nuevos ndices se llaman claves secundarias y estos pueden contener valores duplicados.

Organizaci n y gesti n de archivos o o

54

Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaciones indexadas

6.8.

Estructura

Las entradas de datos de los ndices secundarios suelen estar compuestas de un par de claves: una clave secundaria y la correspondiente clave primaria del registro de datos con el que est relacionado. Las claves se almacenan en forma can nica (may sculas) con a o u registros de longitud ja. Aunque sera posible construir un ndice secundario de igual manera que un ndice primario, incluyendo un puntero al byte de inicio del registro de da tos asociado, existen poderosas razones para no hacerlo as (borrados y actualizaciones).

6.9.
6.9.1.

Operaciones b sicas a
Inserci n de registros o

Cuando tenemos presente un ndice secundario, la inserci n de un nuevo registro de o datos supone tambi n la inserci n de una nueva entrada en el ndice secundario. Pree o viamente deber haberse incluido esta clave en el ndice primario, siendo el coste de la a inserci n el mismo en ambos casos (desplazamiento de entradas desde la posici n de la o o clave hasta el nal en RAM).

6.9.2.

Borrado de registros

Borrar un registro de datos implica borrarlo del archivo de datos y tambi n todas las e referencias a el existentes en el ndice primario as como en los secundarios. Por lo tanto, habr que reorganizar los registros restantes del ndice para recuperar el espacio liberaa do por la entrada eliminada. Sin embargo podemos optar por no borrar las entradas de ndice secundario, especialmente si no podemos cargarlo en memoria y lo estamos man teniendo en almacenamiento secundario. Esto no afectara al funcionamiento de nuestra aplicaci n ya que al buscar una clave en el ndice secundario, su valor de puntero en el o ndice primario devolvera un valor no-existe, lo cual nos indicara que dicha clave no es v lida aunque est a n en el ndice secundario. Con este m todo, podemos ganar enormea e u e mente en eciencia de borrado ya que s lo sera necesario mantener el ndice primario en o operaciones de borrado. Sin en lugar de la referencia a la clave primaria en el ndice se cundario, hubi ramos almacenado el puntero al registro de datos, entonces no podramos e ignorar la operaci n de borrado en estos ndices, debido a que estaramos apuntando a o registros err neos que no se corresponden con la entrada indicada por la clave secundaria. o Sin embargo, tenemos un espacio adicional ocupado por entradas de datos inv lidas en a los ndices secundarios. Si el sistema de archivos realiza pocas operaciones de borrado, esto no supone ning n problema adicional. No obstante, ser necesario realizar reorganiu a zaciones peri dicas de los ndices secundarios eliminando aquellas entradas que no tienen o asignado un valor de clave primaria v lido. Si el sistema de archivos es muy vol til, ena a Organizaci n y gesti n de archivos o o 55 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaciones indexadas

tonces deberamos considerar el uso de otras estructuras de ndices como los arboles-B, que permiten el borrado de registros sin reorganizar todas las entradas del ndice.

6.9.3.

Actualizaci n de registros o

En la operaci n de borrado hemos visto c mo el ndice primario act a como un buffer o o u protector aislando al ndice secundario de los cambios del archivo de datos. Este aisla miento puede extenderse a la actualizaci n de registros. Si nuestros ndices secundarios o contienen punteros al byte del archivo de datos no queda m s remedio que actualizar el a ndice secundario ya que los registros de datos podran cambiar de posici n. Pero si el o ndice secundario hace referencia al ndice primario s lo habr que cambiarlo si se modi o a ca el valor de la clave primaria o de la clave secundaria, en otros casos, el ndice queda intacto. Existen tres posibles situaciones: La actualizaci n cambia el valor de clave secundaria. Ser necesario reorganizar el o a ndice para mantenerlo ordenado. Puede ser una operaci n bastante costosa. o La actualizaci n cambia el valor de la clave primaria. Esta operaci n supone un o o gran impacto para el ndice primario, pero en el ndice secundario s lo habr que o a modicar el valor de la clave en aquellos registros afectados. Como el cambio no afecta a la clave secundaria, no habr que reorganizar el ndice a menos que haya a m s de una entrada para la msma clave secundaria, lo cual puede signicar que a haya que reorganizar localmente s lo aquellos registros que coinciden en esta clave o para mantener el ndice totalmente ordenado en aquellos casos de coincidencia de la clave secundaria. La actualizaci n afecta a otros campos. Todos los cambios que no afecten a las o claves primaria o secundaria no suponen cambios en los ndices secundarios.

6.10.

La recuperaci n de registros utilizando una combio naci n de claves secundarias o

Hasta ahora hemos encontrado un camino eciente para recuperar informaci n del o archivo de datos bas ndonos s lo en la clave primaria (ndice primario) o en alguna de las a o claves secundarias (ndices secundarios). A modo de ejemplo, supongamos que tenemos un archivo de datos que guarda una colecci n de grabaciones de m sica. El archivo est indexado por la combinaci n del o u a o o c digo de compa a discogr ca y n de grabaci n como clave primaria. Tambi n tieo n a o e ne dos ndices secundarios basados en el compositor y otro en el ttulo de la obra. Si Organizaci n y gesti n de archivos o o 56 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaciones indexadas

deseamos consultar aquellos registros que pertenezcan al autor A y a la obra O y no tuvieramos estos ndices secundarios, deberiamos realizar una b squeda secuencial sobre la u totalidad del archivo de datos. Sin embargo podemos realizar b squeda muy eciente de u la siguiente manera: 1. Recuperamos todos aquellas entradas del ndice secundario cuyo autor es A. 2. Recuperamos todas aquellas entradas del ndice secundario cuya obra es O. 3. Realizamos la intersecci n de ambos conjuntos obteniendo aquellos valores de clao ve primaria que est n en ambos. a 4. Obtenemos los datos de los registros del archivo de datos. Por tanto, utilizando los ndices secundarios, podemos obtener r pidamente respuesta a a consultas basadas en combinaciones de claves secundarias relacionadas con los operadores OR/AND mediante uniones o intersecciones de conjuntos.

6.11.

Mejorando la estructura del ndice secundario

Las estructuras de los ndices secundarios que hemos visto plantean dicultades en dos aspectos: Tenemos que reorganizar el ndice cada vez que se a ade un registro. n Si hay entradas de clave secundaria duplicadas, estas estar n repetidas haciendo que a el tama o de los archivos de ndices sea mayor de lo necesario. n Una posible soluci n sera cambiar la estructura del ndice secundario asociando a o cada clave secundaria un array de referencias de clave primaria con un n mero jo de enu tradas para cada clave secundaria. Este m todo soluciona (en parte) la segunda dicultad e de la inserci n de nuevos registros cuando existen valores duplicados de clave ya que en o este caso no habr que reorganizar el ndice. Sin embargo nos ocasiona otros problemas a a adidos: n Al proveer espacio para un n mero jo de registros por entrada de clave secundaria, u necesitamos mecanismos que resuelvan el problema de tener m s de cuatro o cinco a entradas para una misma clave. El espacio desperdiciado por las claves no usadas es bastante grande. Por tanto, necesitamos una estructura que no requiera la reorganizaci n del ndice cada vez que o insertamos una nueva entrada y que no utilice m s espacio del necesario, permitiena do un n mero ilimitado de entradas para cada clave duplicada. u Organizaci n y gesti n de archivos o o 57 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaciones indexadas

Una mejor soluci n consistir en enlazar una lista de referencias a cada valor de la clao a ve secundaria. A este tipo de estructura le llamaremos listas invertidas ya que accedemos a la clave primaria a partir de la clave secundaria. El t rmino lista indica de hecho que e tenemos una lista de claves primarias. Esta soluci n permitir tener un n mero indetermio a u nado de entradas para cada clave, de tal modo que la clave s lo aparece una vez ahorrando o espacio de almacenamiento. Por el contrario, necesitamos reorganizar el archivo de ndice s lo si una nueva clave es insertada. o Por lo tanto, necesitamos redenir la estructura de nuestros ndices secundarios, cons tando as de una entrada con la clave secundaria m s un puntero a la referencia de la a primera clave primaria asociada en la lista invertida. La lista invertida de claves primarias se almacenar en un archivo aparte. a El hecho de asociar el ndice del archivo secundario a un nuevo archivo que contiene las listas enlazadas de referencias provee nuevas ventajas a la estructuras vistas hasta ahora: S lo necesitaremos reorganizar el archivo del ndice secundario si una nueva clave o secundaria es insertada, o actualizada. Si borramos o a adimos registros de una n clave existente s lo requiere actualizar la lista invertida. o La reorganizaci n del ndice secundario (inserciones o actualizaciones) es m s r pio a a da al haber menos registros o entradas y estas son m s peque as. a n Permiten ser gestionados en almacenamiento masivo dejando m s espacio en RAM a a otras estructuras de datos. La lista enlazada no necesita ser ordenada. La lista enlazada contiene entradas de tama o jo lo cual permite ser compactada n f cilmente para elimiar el espacio ocupado por entradas correspondientes a registros a de datos eliminados. El principal inconveniente del uso de las listas de claves primarias es la imposibilidad de tener juntas las entradas correspondientes a una misma clave secundaria. Esto ocasiona tener que reposicionarse en el archivo de la lista enlazada demasiadas veces para acceder a los registros de una misma clave secundaria. Una soluci n a este problema podra ser o leer la lista completa en RAM, lo cual puede ser muy costoso e incluso impracticable si trabajamos con varios ndices a la vez (se podra hacer paginaci n leyendo s lo una parte o o de la lista en funci n de nuestras necesidades, en cualquier caso no resuelve el problema). o

6.12.

Binding: Enlazando o vinculando

A continuaci n nos planteamos una cuesti n importante que est asociada a los sisteo o a mas que utilizan ndices: Organizaci n y gesti n de archivos o o 58 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaciones indexadas

En qu momento se vinculan a la direcci n fsica sus registros asociados? e o En el desarrollo de este captulo hemos visto que la vinculaci n de las claves prima o rias a una direcci n se realiza cuando el archivo de datos es construido, mientras que en o los ndices secundarios, las claves secundarias se vinculan a una direcci n cuando son o usadas. L gicamente, si un ndice se relaciona directamente con el byte de inicio de cada o registo del archivo de datos, conseguimos mayor rapidez en el acceso (es lo que sucede en los ndices primarios). Por tanto, si pensamos en realizar lo mismo con los ndices secun darios, ganaramos bastante en tiempo de acceso, sobre todo si el ndice est gestionado a en disco y no en memoria principal. Sin embargo, la desventaja de enlazar o vincular directamente es que las reorganizaciones del archivo de datos afectar n a todos los archivos a de ndices, pudiendo llegar a ser demasiado costosas. Al retrasar el vnculo o enlace hasta el momento del acceso (en tiempo de ejecuci n), podremos dise ar ndices secundarios o n que requieran un mnimo de reorganizaciones cuando se a aden o borran nuevos regis n tros. Otra ventaja de referenciar los ndices secundarios a las claves primarias en lugar de hacerlo directamente a la posicion fsica del registro es que podemos permitir la existen cia de claves secundarias falsas, ya que quien determinar realmente la exsitencia de una a clave o no ser la correspondiente clave primaria. De otra forma, cualquier valor de clave a asociado a un puntero debera ser correcto (v lido) o de lo contrario tendramos un ndice a corrupto. Con este m todo de referenciar los ndices secundarios a partir de los primarios obe tenemos un nivel de seguridad importante ya que s lo tendremos que realizar cambios o importantes en el ndice primario, mejor que hacerlo en varios lugares (adem s los secun a darios). Existen casos en los que puede ser deseable vincular los ndices secundarios directa mente al puntero del registro de datos: Cuando se requiere un alto rendimiento en la recuperaci n de datos. o Cuando el archivo de datos es est tico (no requiere adici n, borrado o actualizaci n a o o de registros o pocas modicaciones). Por ejemplo, los archivos contenidos en CD-ROM (almacenamiento optico) son archivos de solo lectura.

Organizaci n y gesti n de archivos o o

59

Antonio Aliaga Munoz

Captulo 7 Reorganizaci n multinivel con arboles o B y B+


7.1. Introducci n o

Los arboles-B comenzaron a gestionarse a principios de los setenta pero no tomaron forma hasta 1979 (Douglas Corner), dando una soluci n eciente al mantenimiento o y la organizaci n de grandes sistemas de archivos con un mnimo coste adicional, cono virti ndose as en la organizaci n est ndar para los ndices en los sistemas de bases de e o a datos. En un artculo de R. Bayer y E. McCreight publicado en 1972 se dan los primeros pasos hacia la soluci n denitiva, realizando el planteamiento del problema desde la imo posibilidad de mantener el ndice completamente en memoria principal. Se expone la arquitectura de la nueva estructura del ndice, concluyendo que los tiempos de inserci n, o borrado y recuperaci n de la informaci n tienen un orden de eciencia de logk N donde k o o es el tama o de p gina y N el tama o del ndice. Por lo tanto, se ha introducido un nuevo n a n concepto, que ser necesario optimizar en cada sistema de archivos, que es el tamano de a p gina. a A modo de ejemplo, un ndice con un mill n de entradas y un tama o de p gina de o n a 64 necesitar (log64 220 4) no m s de 4 accesos a disco para recuperar la informaci n a a o solicitada. Por el contrario, una b squeda binaria requerir 20 accesos para la misma u a operaci n. Adem s, la sobrecarga del sistema es mnima cuando se realiza una inserci n o a o o borrado de datos. El nombre arbol-B (B-trees) puede provenir de tres diferentes orgenes, ninguno de ellos conrmado: B de Boeing donde trabajaban R. Bayer y E. McCreight en 1972. B de Bayer. 60

2o I.T.I.G./UAL

Reorganizaci n multinivel con arboles B y B+ o

B de balanced, broad, bushy (balanceado, externo, poblado).

7.2.

Planteamiento del problema

El problema fundamental de gestionar un ndice directamente sobre el almacenamien to secundario es la lentitud inherente al almacenamiento secundario. Este problema puede dividirse en dos cuestiones m s especcas: a La b squeda binaria requiere demasiados posicionamientos en disco, invirtiendo u m s tiempo del deseable. a Puede ser demasiado costoso mantener el ndice ordenado para poder realizar b sque u das binarias debido a la necesidad de desplazar grandes cantidades de datos cuando se insertan o borran datos.

7.3.

Arboles binarios de busqueda

Una posible soluci n podran ser los arboles binarios de b squeda. Los nodos de esta o u estructura de datos contienen los punteros (derecha e izquierda) a sus hijos. Si cada nodo es un registro de longitud ja y los punteros son el n mero de registro relativo (RRN) u podremos mantener esta estructura en disco.

Figura 7.1: Arboles binarios de b squeda u Organizaci n y gesti n de archivos o o 61 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Reorganizaci n multinivel con arboles B y B+ o

Esta estructura no aparece ordenada en disco, sino de forma aleatoria, ni existe rela ci n entre la secuencia de registros y la estructura del arbol. Toda la informaci n sobre o o la estructura de los datos est basada en los punteros. Con este punto de vista, la adici n a o de un nuevo registro se realiza en cualquier posici n, generalmente al nal del archivo, o realizando adem s el enlace de esta nueva clave con los nodos apropiados. El rendimiena to de una b squeda en un arbol binario es bueno siempre y cuando este est balanceado. u e Diremos que un arbol est balanceado cuando la altura del camino m s corto a una hoa a ja no diera en m s de un nivel al camino m s largo. Se dice que est completamente a a a balanceado si todos los caminos son de la misma altura o longitud. Si un arbol no est baa lanceado debido a que se realizan inserciones sin reorganizar el arbol, los tiempos de respuesta de las b squedas no ser n los deseados en algunos de los casos, especialmente si u a en arbol est siendo gestionado en almacenamiento secundario. a

7.4.

Arboles AVL (Adelson-Velskii-Landis)

Un arbol AVL es un arbol balanceado en altura. La m xima diferencia de altura entre a dos nodos con la misma raz es 1.

Figura 7.2: Arboles AVL Dos caractersticas importantes son: Al exigir que la diferencia m xima permitida entre las dos ramas del arbol no exa ceda de 1, garantizamos un cierto nivel mnimo de eciencia en las operaciones de b squeda. u Organizaci n y gesti n de archivos o o 62 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Reorganizaci n multinivel con arboles B y B+ o

Al mantener el arbol en la forma AVL, la inserci n de nuevos nodos implican el o uso de alguna de las cuatro posibles rotaciones que se realizan sobre una zona local del arbol que no necesita de m s de cinco reasignaciones de punteros. Es decir, las a nuevas inserciones son ecientes. Los arboles AVL representan una soluci n a la degeneraci n producida en los arboles o o binarios de b squeda debido a las inserciones de nuevos nodos. El problema de los arboles u AVL es que no son directamente aplicables a la mayoria de las estructuras de archivos debido a la gran cantidad de nivieles que presentan, suponiendo cada nivel un acceso a disco, resultando ineciente el acceso a la informaci n. Sin embargo son interesantes o desde el punto de vista de que permiten mantener un arbol de forma equilibrada con pocas operaciones (bajo coste).

7.5.

Arboles binarios paginados

La idea de la paginaci n viene del hecho ya comentado en esta asignatura de que o lo m s costoso en el acceso a disco es el tiempo de posicionamineto de la cabeza del a disco en alg n lugar de este. Una vez all, la lectura de unan gran cantidad de datos u secuencialmente es muy r pida. Por tanto, en un sistema paginado, despu s de posicionar a e la cabeza, se lee el tama o de bytes correspondiente a una p gina completa del archivo. n a Una p gina contendr una gran cantidad de registros individuales, ahorr ndonos el coste a a a del acceso a disco para cada uno de ellos. Por tanto, deberemos dividir al arbol binario en p ginas, almacen ndolas en bloques contiguos de disco. a a En este ejemplo (Ver la gura 7.3) accederemos a cualquier registro con no m s de a dos accesos a disco (de un total de 63 nodos). Cada p gina almacena siete nodos y puede a ramicarse en ocho nuevas p ginas (64 7 = 448 + 63 = 511) y as sucesivamente (4095 a nodos con cuatro accesos como m ximo). Claramente, troceando el arbol en p ginas obtea a nemos una b squeda m s r pida sobre almacenamiento secundario, mejor que cualquiera u a a de la estudiadas hasta ahora. El n mero m ximo de accesos en este tipo de arboles binarios paginados es (con u a respecto a los arboles binarios): En arboles binarios: log2 (N + 1) - En arboles binarios paginados: logk+1 (N + 1) Ejemplo: Sea un arbol completamente balanceado de 511 nodos por p gina, en 3 a niveles de paginaci n (k=511, tama o en disco 8 kbytes por p gina). Cu ntos registros o n a a pueden gestionarse con este arbol?: logk+1 (N + 1) = 3 = log511+1 (N + 1) = 3 = N + 1 = 5123 = N = 5123 1 = N = 134217721 Organizaci n y gesti n de archivos o o 63 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Reorganizaci n multinivel con arboles B y B+ o

Figura 7.3: Arboles binarios paginados Cu ntos accesos son necesarios para localizar un registro con el N calculado arriba en a un arbol binario? log2 134217721 + 1 = 27 Con este ejemplo se demuestra la gran ventaja, desde el punto de vista del n mero de u accesos al almacenamiento secundario, de utilizar la paginaci n en arboles binarios. o Sin embargo, el uso de grandes p ginas no es gratuito. Cada acceso a una p gina a a requiere la trasmisi n de una gran cantidad de datos, peor a n si el espacio ocupado por o u la p gina no est siendo utilizado completamente. Pero el principal problema no es este a a (ya que lo que invertimos en la transmisi n nos lo ahorramos en mayor medida en el o tiempo de posicionamiento), sino c mo se organiza el arbol para que la b squeda sea o u realmente eciente. Si tenemos el conjunto completo de claves del arbol antes de que este sea construido, la soluci n al problema es relativamente f cil: podemos ordenar la lista de claves y conso a truir el arbol desde esta, partiendo de la clave situada en el punto medio de la lista como clave raz de la p gina raz del arbol (procediendo de igual forma con cada una de las dos a partes de la lista, hasta el nal). Desafortunadamente, no solemos disponer de la lista completa de claves al comienzo, sino m s bien de una lista desordenada de claves que llegan aleatoriamente. Despu s de a e recibir una nueva clave, debemos ir rotando el arbol hasta encontrar aquella posici n que o lo deje de foma balanceada. Despu s de insertar todas las claves, generalmente solemos e obtener un arbol desbalanceado (Ver la gura 7.4). Este problema deriva directamente del Organizaci n y gesti n de archivos o o 64 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Reorganizaci n multinivel con arboles B y B+ o

hecho de que el arbol lo construimos desde la raz hacia abajo. Si las claves que entran en primer lugar no son las adecuadas, posiblemente tengamos un mal arbol, o una mala rama del arbol (si est en un nivel inferior). A estar el arbol paginado, no podemos rotar a p ginas completas de la misma forma que hacamos en los arboles sin paginar, ya que a esto supondr tener que romper p ginas, lo cual abre un amplio mundo de posibilidades a a y dicultades. Romper las p ginas signicar reorganizar parte del ndice en disco ya que a a el cambio afectar a varias p ginas. Esta operaci n puede llegar a ser muy costosa si las a a o p ginas son de gran tama o. a n

Figura 7.4: Arboles binarios paginados (desbalanceo) En cualquier caso, nos quedaremos con la idea de que agrupar claves en p ginas es a una mejor soluci n al problema ya que reduce dr sticamente los accesos a disco. o a Sin embargo tenemos tres cuestiones pendientes de resolver: C mo nos aseguramos de que las claves de la p gina raz son buenos separadores, o a dividiendo al resto de las claves de una forma m s o menos equilibrada? a C mo agrupamos claves que no deben compartir la misma p gina? (en el ejemplo o a (c,d y s). C mo garantizamos que cada p gina contiene un mnimo de claves? Si tenemos un o a tama o de p gina grande, podemos tener p ginas muy sobrecargadas y otras poco n a a ocupadas desperdiciando espacio. LOS ARBOLES-B SON LA SOLUCION A TODOS ESTOS PROBLEMAS. Organizaci n y gesti n de archivos o o 65 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Reorganizaci n multinivel con arboles B y B+ o

7.6.

Arboles-B
No existe una buena poltica de situaci n de las claves en los nodos lo cual provoca o la evoluci n hacia un arbol desbalanceado. o Mientras algunas p ginas del arbol est n completas, otras est n casi vacas provoa a a cando desequilibrio en el arbol incrementando excesivamente la altura de algunos sub rboles. a

Los dos principales problemas que presentan los arboles binarios paginados son:

7.6.1.

Denici n o

Est claro que el hecho de agrupar un n mero determinado de nodos en un mismo a u bloque de informaci n reduce considerablemente el n mero de accesos a disco. Esta opeo u raci n, desde un punto de vista l gico, puede considerarse como cambiar el arbol binario o o pasando a ser n-ario, siendo n el n mero de nodos en cada bloque. Por tanto, cada bloque u tendr ahora n vas o bifurcaciones. Cada bloque de registros se considerara como un a nodo del arbol (un nodo tendra varias claves y varios apuntadores a otros sub rboles). a Estos arboles, por su naturaleza, tambi n se llaman arboles multiva o arboles de accesos e m ltiples. u En un arbol multiva (de orden n), cada nodo tiene n o menos punteros y contiene una clave menos que el n mero de punteros. Si un nodo est lleno, tendr n-1 claves y n u a a punteros. Si el nodo no est lleno, contendr i n 1 claves y i + 1 punteros. a a Al tener m ltiples claves, cuando se insertan registros se vuelven a presentar los misu mos problemas que ocurran en los arboles binarios debido a la inadecuada selecci n del o nodo raz y a la mala poltica de distribuci n de las claves, provocando el desbalanceo. o Todo est ocasionado por la selecci n en cada momento de una raz inadecuada, lo cual a o requiere realizar reorganizaciones peri dicas del arbol o de partes del mismo que tienen o un coste computacional muy elevado. Hemos visto que si tuvi ramos m s informaci n a e a o priori, antes de seleccionar la raz, podramos construir un arbol mejor, lo cual hace pre ver que retrasando la elecci n de la misma podemos solucionar este problema. Esta idea o da lugar a la t cnica de construir el arbol de abajo hacia arriba, al rev s de c mo se ha e e o venido haciendo hasta ahora. La poltica a seguir en la construcci n de los arboles-B con o sistir en seleccionar una nueva raz para dos nodos conocidos, permitiendo as escoger a la mejor para ambos. Para denir los arboles-B utilizaremos la terminologa expuesta por Knuth (m s clara a y menos confusa que la expuesta por Bayer y McCreight). Propiedades: 1. En un arbol-B, una hoja es un nodo sin descendientes. Organizaci n y gesti n de archivos o o 66 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Reorganizaci n multinivel con arboles B y B+ o

2. Cada nodo tiene como m ximo n descendientes. a 3. Cada nodo tiene al menos n/2 descendientes, excepto la raz y las hojas. 4. La raz tiene al menos 2 descendientes, salvo que sea una hoja. 5. Todas las hojas se encuentran al mismo nivel. 6. Un nodo (no hoja) con k descendientes tiene k-1 claves. 7. Un nodo hoja tiene al menos n/2 1 claves y no m s de n-1. a Por tanto, un nodo estar compuesto por una secuencia de claves ordenadas y por un a conjunto de punteros (que siempre es mayor que el n mero de claves en una unidad). u Las claves ki cumplen que k1 < k2 < k3 < . . . < kn1 y pi apunta a un sub rbol con a valores mayores que ki1 y menores que ki .

7.6.2.

Operaciones

La busqueda La localizaci n de una clave concreta en un arbol-B es inmediata: o 1. Partiendo de la raz se realiza una b squeda de la clave en el nodo (si es grande el u n mero de elementos se realiza una b squeda binaria). u u 2. Si la clave k est en el nodo la b squeda ha terminado. a u 3. En caso contrario, suponiendo que la clave ki < k < ki+1 se repite el proceso de b squeda descencidendo por el sub rbol apuntado por pi . u a La inserci n o El mecanismo en que se basa la inserci n para conseguir que el arbol est siempre o e completamente balanceado consiste en promocionar la clave central de un nodo que se divide al no poder albergar m s claves (Ver la gura 7.5). a Cuando un nodo est lleno se ordenan todas las claves, incluida la nueva, y se elige la a central para situarla en el nodo padre, dividiendo el nodo original en dos nodos cada uno apuntado por un puntero del nodo padre, con la mitad de claves cada uno. Algoritmo de inserci n: o 1. Se busca la hoja del arbol donde debe insertarse la nueva clave. 2. Si el nodo no est lleno se inserta de forma ordenada en ese nodo. a Organizaci n y gesti n de archivos o o 67 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Reorganizaci n multinivel con arboles B y B+ o

Figura 7.5: Arboles-B 3. Si el nodo est lleno: a a) Si el n mero de claves es par, se ordena el conjunto de claves m s la nueva y u a la central se promociona al nodo padre, dividiendo el nodo en dos mitades con el mismo n mero de claves a la izquierda y derecha de la clave promocionada. u b) Si el nodo es impar, se promociona una de las dos claves centrales, produci ndose una polarizaci n derecha/izquierda al quedar uno de los nodos divie o didos con una clave m s que el otro. a El algoritmo de inserci n resuelve el problema del desbalanceo porque siempre se o promociona la clave que nos conviene (la central). La eliminaci n o Se trata de un proceso m s complejo que el de la inserci n. Siempre podemos recurrir a o a la posibilidad de marcar la clave como borrada manteni ndola en la estructrura del e arbol, ya que as se coserva la consistencia para posteriores accesos. L gicamente tiene el o incoveniente de ocupar un espacio innecesario en memoria lo cual requerir de posteriores a reorganizaciones. Si decidimos eliminar la clave debemos recordar las restricciones impuestas a los arboles-b, concretamente que el n mero de descendientes es al menos n/2 . u Algoritmo de borrado: Organizaci n y gesti n de archivos o o 68 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Reorganizaci n multinivel con arboles B y B+ o

1. Si se elimina una clave de un nodo hoja que tiene m s de n/2 1 claves, no a hay que hacer nada m s (Ver la gura 7.6). a 2. Si se borra una clave de un nodo intermedio (no hoja) se sustituye dicha clave por su sucesor en el arbol (Ver la gura 7.7). 3. Si alg n nodo queda con menos claves de las permitidas (insuciencia): u a) Se toma una clave prestada de un nodo hermano (redistribuci n). En realidad, o se sustituye la clave eliminada por la del padre y la del padre se sustituye por la del hermano del nodo en el que se elimin la primera clave (un nodo siempre o tiene un hermano excepto la raz) (Ver la gura 7.8). b) Si el nodo en el que se va a borrar la clave no tiene nig n hermano con m s u a de n/2 1 claves, entonces el pr stamo lo toma del padre realiz ndose e a una consolidaci n o concatenaci n de nodos teniendo como resutado un nodo o o lleno (Ver la gura 7.9). c) Si el nodo padre no puede prestar ninguna clave a sus hijos, deber pedir una a clave a alg n hermano. u d) Si el nodo que presta la clave es la raz y esta s lo tiene una clave, se produce o un descenso en la altura del arbol. Debemos tener en cuenta que las operaciones de inserci n y borrado est n dise adas o a n de tal manera que se preserva en todo momento la estructura balanceada del arbol.

7.6.3.

Organizaci n del ndice en arbol-B o

La estructura del ndice en arbol-B es un arbol equilibrado en el que cualquier camino desde la raz hasta una hoja tiene la misma longitud. El n mero de claves que almacena u cada nodo (factor de bloqueo) es una unidad menor que el n mero de punteros a otros u nodos del arbol. Adem s existir n otros punteros a los datos (zona maestra). a a Una propuesta de implementaci n de los arboles-B en lenguaje C puede ser la siguieno te: typedef struct { long posicionRegistro; char clave[80]; long punteroBloqueNivelAnterior; } elementoB; typedef struct { long punteroBloqueNivelAnterior; Organizaci n y gesti n de archivos o o 69 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Reorganizaci n multinivel con arboles B y B+ o

Figura 7.6: Arboles-B (eliminaci n simple en una hoja) o

Figura 7.7: Arboles-B (eliminaci n simple en un nodo intermedio) o elementoB bloque[FactorDeBloqueo]; } NodoB;

Organizaci n y gesti n de archivos o o

70

Antonio Aliaga Munoz

2o I.T.I.G./UAL

Reorganizaci n multinivel con arboles B y B+ o

Figura 7.8: Arboles-B (eliminaci n: redistribuci n) o o

Figura 7.9: Arboles-B (eliminaci n: concatenaci n) o o

7.6.4.

Variantes de arboles-B: arboles-B*

Uno de los inconvenientes que se pueden encontrar en los arboles-B es que sera de seable un mayor nivel de aprovechamiento del espacio que se reserva con respecto al que Organizaci n y gesti n de archivos o o 71 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Reorganizaci n multinivel con arboles B y B+ o

realmente est ocupado por las claves. Es evidente que en el peor de los casos podramos a tener un arbol-B con m s del 50 % del espacio sin utilizar debido a la propiedad que dice a que un nodo tiene al menos n/2 1 claves. B sicamente un arbol-B* es un arbol-B con alguna de sus propiedades modicadas a para que el nivel de aprovechamiento sea al menos del 66 % (2/3). Propiedades: 1. Cada nodo tiene como m ximo n descendientes. a 2. Cada nodo tiene al menos (2n 1)/3 descendientes, excepto la raz y las hojas. 3. La raz tiene al menos 2 descendientes, salvo que sea una hoja. 4. Todas las hojas se encuentran al mismo nivel. 5. Un nodo (no hoja) con k descendientes tiene k-1 claves. 6. Un nodo hoja tiene al menos (2n 1)/3 claves y no m s de n-1. a Sin embargo, este tipo de denici n de las propiedades de los arboles-B* trae apareo jado el problema de la divisi n del nodo raz, ya que siempre se toman dos nodos para o obtener a partir de ellos tres nodos nuevos con las claves redistribuidas, y resulta que la raz no tiene ning n hermano para poder realizar esta operaci n. u o Existen varias alternativas para solucionar este inconveniente: Hacer que el nodo raz sea m s grande que el resto de nodos con respecto al n mero a u de claves que almacena. De esta forma, podr dividirse en nodos que tendr n sus a a 2/3 partes llenas, cumpliendo todas las propiedades de los arboles-B*. Tiene el inconveniente de tener que manejar nodos de diferente tama o, lo cual diculta el n desarrollo de los algoritmos. Otra soluci n consiste en realizar una divisi n sencilla del nodo raz en dos partes o o iguales (como si ed un arbol-B se tratase) y tener en cuenta en los procedimientos de inserci n y borrado las caractersticas especiales de estos nodos que descienden o directamente de la raz.

7.7.

Arboles-B+

Los arboles-B son una estructra que da un excelente acceso para recuperar un registro individual a partir de una clave. Pero si deseamos recuperar una secuencia ordenada de registros y el archivo de datos no est ordenado, este proceso deberemos hacerlo a partir a Organizaci n y gesti n de archivos o o 72 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Reorganizaci n multinivel con arboles B y B+ o

del ndice lo cual es muy costoso, sobre todo si el ndice est gestionado en disco. Por otra a parte, no conviene tener el archivo de datos ordenado por la baja eciencia que presenta en las operaciones de inserci n y borrado. o Los arboles-B+ resuelven este inconveniente incorporando un puntero en cada hoja a la siguiente. typedef struct { char clave[80]; long punteroBloqueNivelAnterior; } elementoNodoB+; typedef struct { long punteroBloqueNivelAnterior; elementoNodoB+ bloque[FactorDeBloqueo]; } NodoB+; typedef struct { long posicionRegistro; char clave[80]; } elementoHojaB+; typedef struct { ElementoHojaB+ bloque[FactorDeBloqueo]; long punteroSiguienteHoja; } NodoHojaB+; Como puede observarse, en el primer nivel (hojas) existir n tantos nodos como sean a necesarios para almacenar las claves de todos los registros del archivo de datos. Cada hoja contendr adem s de un puntero a cada registro de datos un puntero adicional a a a la siguiente hoja, lo cual permitir acceder secuencialmente de forma r pida a todos los a a registros del archivo de datos ordenadamente. Como puede observarse, los nodos intermedios ya no contienen punteros al archivo de datos, estando estos presentes s lo en las hojas del primer nivel. En esta estructura del o ndice existe redundancia de informaci n ya que en los nodos intermedios se almacenan o entradas del ndice que ya se encuentran en las hojas. Al primer nivel del ndice (hojas) se le llama conjunto secuencial ya que permite realizar un recorrido secuencial r pido y ordenado por la clave. a

7.7.1.

Variantes de arboles-B+: arboles-B+ de prejo simple

Uno de los inconvenientes de los arboles-B+ tal como se han descrito en este captulo es el alto nivel de redundancia existente debido a la necesidad de tener que duplicar todas Organizaci n y gesti n de archivos o o 73 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Reorganizaci n multinivel con arboles B y B+ o

las claves de los nodos intermedios en el nivel de las hojas. Los arboles-B+ de prejo simple eliminan esta redundancia e incluso reducen el n mero total de nodos del conjunto del ndice empleando trozos o prejos de las claves en u lugar de la clave completa, y direccionando bloques de registros en lugar de direccionar registros individuales. Por tanto, el archivo de datos (zona maestra) estar gestionado por bloques de rea gistros manteniendo una secuencia ordenada a trav s de apuntadores de cada bloque al e siguiente, todos ellos en el dispositivo de almacenamiento secundario. Se tratar , por tana to, de una organizaci n encadenada de bloques de registros que constituir en s misma o a el conjunto secuencial del ndice. Por otra parte, el conjunto del ndice (es decir, los nodos intermedios) estar basdo a en un arbol-B donde las claves son sustituidas por el prejo de entrada al bloque y el correspondiente apuntador al bloque de datos en el area maestra. Mantenimiento del ndice Mientras realicemos inserciones o borrados de registros en el conjunto secuencial que no impliquen una reorganizaci n de los bloques de datos, entonces el conjunto del ndice o permanece invariable. Si por el contrario los cambios requieren reorganizar m ltiples bloques en el conjunto u secuencial, entonces el conjunto del ndice debe reorganizarse conforme a las reglas de los arboles-B. El tamano de bloque El conjunto secuencial debe tener un tama o de bloque adecuado con respecto al n dispositivo de almacenamiento secundario empleado (tama o de sector, de cluster, etc.) y n tambi n respecto de la RAM disponible y de las caractersticas intrnsecas de los registros e que gestionemos. El conjunto del ndice debe regirse por los mismos par metros descritos para el con a junto secuencial. Normalmente, ambos suelen tener el mismo tama o de bloque. n

7.8.

Arboles-B frente a arboles-B+

Las estructuras basadas en arboles-B y B+ son las m s utilizadas en la organizaci n a o de los ndices en la mayoria de sistemas actuales. Caractersticas comunes: Producen arboles equilibrados lo que permite acceder r pidamente a cualquier nodo a y por tanto al registro de datos.

Organizaci n y gesti n de archivos o o

74

Antonio Aliaga Munoz

2o I.T.I.G./UAL

Reorganizaci n multinivel con arboles B y B+ o

Las operaciones de inserci n y borrado son bastante simples suponiendo un gran o ahorro computacional. Diferencias: Los arboles-B no contienen ning n tipo de redundancia y no precisan alcanzar el u primer nivel del ndice para acceder a los registros de datos; son m s r pidos. a a Los arboles-B necesitan m s espacio para almacenar los niveles intermedios, ocua pan m s, no obstante al no tener redundancias el tama o total del ndice es menor a n (aunque no demasiado). Un recorrido secuencial en un arbol-B es m s costoso que en un arbol-B+. El cona junto secuencial de los arboles-B+ permite un recorrido secuencial de todo el archivo de datos muy eciente.

Organizaci n y gesti n de archivos o o

75

Antonio Aliaga Munoz

Captulo 8 Organizaci n directa. Hashing o


8.1. Caractersticas de la organizaci n hashing o

Cuando se exige un alto rendimiento en la lectura directa de registros, los ndices basados en arboles no son todo lo buenos que desearamos, ya que poseen un orden de eciencia O(logFB+1 r). Tienen por tanto las siguientes deciencias: Las inserciones y borrados requieren m s de una operaci n. a o Las lecturas requieren al menos dos operaciones, en el ndice y en los datos. La organizaci n hashing mejora el rendimiento consiguiendo extraer la informaci n o o con una unica operaci n de acceso O(1), de tal forma que s lo se realizar un acceso a o o a disco realizando toda la carga computacional en la RAM. La organizaci n hash se basa en la aplicaci n de una funci n o algoritmo (funci n o o o o hash) a la clave de los registros, proporcionando el valor de la direcci n de almacenao miento del registro en un bloque de datos llamado cubo. De una manera ideal no debera haber dos registros que fueran direccionados por la funci n hash al mismo cubo, o bien, o que en cada cubo hubiera espacio suciente para almacenar todos los registros que son direccionados al mismo cubo. Dependiendo del n mero de cubos disponibles para almacenar los registros, y de la u funci n hash existen varios tipos de hashing: o Est tico. Se necesita conocer a priori el n mero de cubos disponibles. a u Cerrado. S lo existe un cubo. La funci n hash determina la posici n del reo o o gistro en el cubo. Abierto. Existe m s de un cubo, cada uno de ellos almacenando m s de un a a registro. 76

2o I.T.I.G./UAL

Organizaci n directa. Hashing o

Din mico. No se requiere conocer el n mero de cubos, y este va variando en tiempo a u de ejecuci n, adapt ndose a las necesidades del problema. o a

8.2.

Elementos que intervienen en la organizaci n haso hing


El tama o de los cubos. n La densidad de empaquetamiento de los cubos (). La funci n hash. o La existencia de colisiones.

8.2.1.

Los cubos o unidades de direccionamiento

Todos los cubos se encontrar n almacenados en unos cuantos cubos o unidades de a almacenamiento. El tamano del cubo determina la bondad del m todo hashing, de tal e manera que aumentando el tama o, tambi n aumenta la probabilidad de que un registro n e se pueda alojar en ese cubo, pudiendo llegar a ser igual a 1 (la probabilidad) si existe un unico cubo de tama o mayor o igual al n mero de registros. n u Una colisi n se produce cuando un registro es direccionado a un cubo que est como a a pleto, ocasionando un desbordamiento (overow), para lo cual ser necesario disponer de una zona de desbordamiento o derrama. Cuando existan colisiones ser necesario m s de a a un acceso para recuperar la informaci n solicitada. o Un tama o de cubo demasiado grande ralentizar las operaciones de recuperaci n y n a o almacenamiento, siendo necesario analizar todos los registros del cubo antes de realizar dicha operaci n; adem s requerir mucha RAM para su procesamiento. Se necesita, por o a a tanto, un compromiso entre el valor de este par metro y el n mero de colisiones que se a u producen. El tama o de cubo suele ser un m ltiplo del tama o de bloque o cluster del n u n sistema operativo: tpicamente 512, 1024, 2048 o 4096 bytes. Dependiendo del tama o de los cubos que hayamos denido en nuestro sistema, el n n mero de cubos de que disponemos puede calcularse como: u Fc = C/R y c = r/Fc Donde: Fc Factor de blocaje o factor de cubo; C Tama o de cubo n R Tama o de registro; c N mero de cubos; r N mero de registros. n u u

Organizaci n y gesti n de archivos o o

77

Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaci n directa. Hashing o

8.2.2.

La densidad de empaquetamiento()

La densidad de empaquetamiento es la raz n entre el n mero de registros y el tama o o u n del espacio de direccionamiento. = r/(c Fc ) Puede observarse claramente que cuando disminuye, tambi n disminuye la probabie lidad de que se produzcan colisiones, pero aumenta el desperdicio de espacio de almacenamiento, y viceversa. Podemos rednir el n mero de cubos en funci n de la densidad de empaquetamiento u o de la siguiente forma: c = ( r/Fc ) 1/

8.2.3.

La funci n hash o

La funci n hash determina la homogeneidad de la distribuci n de los registros en o o el espacio de almacenamiento. Esta funci n devuelve la direcci n del cubo donde debe o o ubicarse un registro dado. Un algoritmo que realice una distribuci n uniforme de los registros en los cubos proo ducir menos colisiones que otro que no realice dicha distribuci n uniforme. Esto tambi n a o e depender de que las claves de los registros correspondan, a su vez, con una distribuci n a o uniforme. Las operaciones b sicas que realiza la funci n hash son: a o 1. Si la clave no es num rica, debe transformarla sin p rdida de informaci n, debiendo e e o ser un proceso reversible. 2. A partir del valor num rico de la clave, se obtendr un valor dentro del orden de e a magnitud del n mero de cubos disponibles. Por ejemplo, si se dispone de 2970 u cubos, el orden de magnitud es 10000; para 75690 cubos, ser 100000. a 3. Mediante un proceso de translaci n se convierte el valor anteriormente calculado o en un n mero de cubo entre 0 y c-1. u

8.2.4.

Tratamiento de las colisiones

Una colisi n o desbordamiento se produce cuando la funci n hash direcciona un cubo o o que est totalmente ocupado, por lo que ser necesario almacenar el registro en otra zona a a distinta llamada zona de derrama o de desbordamiento. Las posibles soluciones a este problema son: Organizaci n y gesti n de archivos o o 78 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaci n directa. Hashing o

Tomar como zona de derrama una zona independiente de la zona maestra, abierta, sin lmites de direccionamiento. El area de derrama se encuentra dentro de la zona maestra, utilizando unos cu bos especiales, o bien almacenando los desbordes en los mismos cubos de la zona maestra.

8.3.

Hashing est tico a

Se caracteriza fundamentalmente porque se necesita conocer a priori el n mero de u cubos disponibles, siendo este jo para el desarrollo del problema.

8.3.1.

Algoritmos hashing

Algoritmo de la divisi n o Este algoritmo garantiza una distribucion uniforme de los registros en los cubos siempre y cuando exista una distribuci n uniforme de los valores de las claves. o 1. Se elige un divisor d, primo y aproximadamente igual a c. 2. Ci = modulo(Vi , d); donde Vi = valor de la clave Ki . Caractersticas: Puede haber espacio desperdiciado debido a cubos que no llegan a utilizarse ya que d c. Los registros con claves consecutivas se almacenan en cubos consecutivos. Ejemplo: Sea: r = 100000 registros; R = 60 bytes/registro; C = 1024 bytes/cubo Por tanto: Fc = 17 registros/cubo y c = 5883 cubos. En consecuencia, tomaremos d = 5881. Algoritmo del centro de los cuadrados 1. Dado un registro Ri , su clave es Ki y su valor num rico es Vi entonces calculamos e Vi 2 . Se toman los digitos centrales de igual orden de magnitud que c. En el ejemplo anterior, como el orden de magnitud de c = 5883 es 10000, tomamos los cuatro digitos centrales de Vi 2 obteniendo Vi . Organizaci n y gesti n de archivos o o 79 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaci n directa. Hashing o

2. Se ajusta el n mero obtenido anteriormente al intervalo [0,c-1] multiplicando por u la fracci n de ajuste: ha = c/ < c >. Entonces: Ci = Vi ha . o En el ejemplo anterior, ha = 5883/10000 = 0,5883 Con este algoritmo, claves peque as van al mismo cubo y claves consecutivas no van n a cubos consecutivos.

8.3.2.

T nicas para evitar colisiones e

En los algoritmos descritos anteriormente se pretende distribuir las claves en los cubos de forma uniforme de modo que se eviten los desbordes o colisiones. Si se conocen las claves de los registros a priori y el n mero de estos es relativamente peque o (unos u n cientos), es relativamente sencillo encontrar un algoritmo que sea capaz de evitar las colisiones. A estos algoritmos se les conoce como hashing perfecto ya que los registros pueden localizarse con s lo una operaci n de lectura. o o Sin embargo, en la mayor parte de problemas aparecen colisiones de manera inevitable. Podemos dar como aceptable un algoritmo que garantice un m ximo del 10 % de a registros con colisiones, para el cual el n mero medio de accesos ser relativamente bajo. u a El an lisis de claves a El analisis de claves puede realizarse si las conocemos a priori, o bien conocemos el intervalo de valores en que estas pueden variar. El algoritmo tratara de encontrar grupos o patrones repetitivos de dgitos elimin ndolos, dando lugar as a una distribuci n m s a o a uniforme. Tambi n es posible que se produzcan menos colisiones incorporando un mayor e conjunto de atributos a la clave (por ejemplo, el nombre + apellidos + dni). Doble hashing En lugar de evitar las colisiones, lo que se persigue con este m todo es resolverlo lo e m s r pidamente posible aplicando una segunda funci n hash sobre la clave del registro a a o colisionado. Aumento del desperdicio Bien aumentando la capacidad de los cubos o disminuyendo la densidad de empaquetamiento se consigue un descenso en el n mero de colisiones. Por el contrario, tenemos u un aumento del espacio necesario para almacenar la informaci n y un aumento del tiempo o de transferencia de los cubos a memoria al tener mayor tama o. n

Organizaci n y gesti n de archivos o o

80

Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaci n directa. Hashing o

8.3.3.

T cnicas de resoluci n de colisiones. Operaciones e o

Cuando el algoritmo hashing direcciona un registro a un cubo que est lleno, este a se desborda y se produce una colisi n. Entonces deber ser almacenado en una nueva o a zona con sucientes garantias de que pueda ser recuperado en un tiempo razonablemente peque o. El tratamiento de los desbordamientos puede realizarse almacen ndolos en el n a propio area maestra, o bien en un area especca llamada zona de derrama. La elecci n o depender de los factores utilizados en la organizaci n hashing y de las caractersticas el a o dispositivo de almacenamiento. Tratamiento de los desbordes en el area maestra Todos los desbordes de registros colisionados se almacenan en la propia zona maestra o en alg n espacio reservado dentro de esta. u Almacenamiento de los desbordes en los cubos maestros. Cuando un registro provoca una colisi n, se almacena en otro cobo de la zona maestra que tenga espacio o libre. Se elige un cubo pr ximo al elegido en primer lugar (el que provoc el deso o borde). 1. Se elige el cubo siguiente. Sencillo de implementar. Presenta problemas de aglomeraci n cuando no existe una distribuci n o o homog nea de claves. e Para encontrar un registro, primero se busca en el cubo elegido y si no est all se sigue buscando en el siguiente hasta encontrarlo, o bien, hasta a encontrar un cubo incompleto (en este caso el registro no existira). 2. Se elige un cubo distante. La distancia se ja de antemano. Se evita el problema de los amontonamientos, pero funciona mal cuando el nivel de ocupaci n es alto. o Estos dos ejemplos presentan varios problemas: Presenta problemas en la recuperaci n, ya que si el registro no est en el o a cubo direccionado hay que seguir leyendo cubos hasta encortarlo o bien dar con un cubo incompleto. Problemas en la inserci n, ya que para poder insertar hay que leer y anao lizar el cubo completo para saber si tiene espacio disponible y en caso de estar lleno, debera procederse de igual manera con el cubo siguiente hasta encontrar un cubo que tuviera espacio disponible. El coste computacional que representa esta operaci n puede paliarse si en cada cubo se o Organizaci n y gesti n de archivos o o 81 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaci n directa. Hashing o

reserva un espacio para almacenar un indicador de ocupaci n o una lista o de espacio libre. Problemas con los borrados ya que despu s de localizar el cubo con el ree gistro a borrar, este puede eliminarse (teniendo que reestructurar todo el contenido del cubo) o bien debe marcarse como borrado con un car cter a especial. Esto ocasiona graves problemas a la funci n de recuperaci n ya o o que si antes de borrar el registro el cubo estaba lleno, ahora no lo estar y a el algoritmo de recuperaci n puede devolver un falso NO ENCONTRAo DOdebido a que ha encontrado un cubo incompleto, o de lo contrario, habra que analizar todos los cubos hasta el nal. Si se decide no liberar el espacio de los registros borrados se resuelven estos problemas pero se desperdiciar mucho espacio y se eleva el n mero de colisiones al haber a u menos espacio libre. 3. Se establece un ndice de cubos de ocupaci n. o La localizaci n de un cubo disponible cuando se produce una colisi n se o o realiza en el cat logo. a El cat logo se gestiona en memoria. a De esta manera se pretende que como m ximo sean necesarios dos accea sos para recuperar un registro. Cubos de desborde distribuidos en la zona maestra. Consiste en intercalar uniformemente una serie de cubos entre los cubos de la zona maestra con la condici n de o que no pueden ser direccionados por la funci n hash. Por ejemplo, si se inserta un o cubo de desborde cada tres cubos de la zona maestra, este almacenar las colisiones a de estos tres cubos. Tratamiento de los desbordes en un area independiente Se trata de un area independiente a la zona maestra, que puede tener cualquier estructura y puede estar organizada de cualquier forma, debiendo ser abierta. Generalmente se trata de una organizaci n encadenada. Bastara con reservar un espacio en cada cubo para o albergar un puntero al primer registro desbordado de primer cubo en la zona de derrama. Por tanto, en la zona de derrama existen tantas cadenas como cubos. Esta t cnica es e viable y f cil de implementar, pero tiene el inconveniente de los retrasos en las recupea raciones, ya que los registros en la zona de derrama pueden estar muy distantes entre s. Las inserciones con colisiones tambi n son costosas computacionalmente. Esta t cnica e e puede mejorarse utilizando una estructura encadenada de cubos en lugar de cadenas de registros. Mejora a la anterior ya que en la mayor parte de los casos solo se necesitar n a dos accesos. Por el contrario, desperdicia mucho espacio ya que aunque solo haya una colisi n se reservar espacio para un cubo completo. o a Organizaci n y gesti n de archivos o o 82 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaci n directa. Hashing o

8.4.

Hashing din mico a

La organizaci n hashing ha sido concebida para recuperar la informaci n con un s lo o o o acceso a los dispositivos de almacenamiento secundario, sin embargo, la existencia de una zona de derrama trunca todas las espectativas al respecto. Las colisiones suponen un coste computacional a adido a las operaciones de lectura, inserci n y borrado, complicando n o adem s los algoritmos correspondientes, provocando que esta organizaci n no satisfaga a o los requerimientos para los que fue concebida. El principal problema deriva de la necesidad de la existencia de la zona de derrama debido a que el n mero de cubos es constante y se ja a a priori, sin conocer exactamente u qu claves se van a gestionar dsde un principio, o bien a que la funci n hashno es perfecta. e o El hashing est tico estudiado hasta ahora permite construir una funci n hash que disa o tribuya uniformemente los registros en el espacio de direccionamiento aunque estos no se conozcan a priori, siempre y cuando su n mero no vare en el tiempo. Sin embargo, el u hashig est tico, desde hace d cadas s lo se emlea para gestionarse en memoria principal a e o y no para el almacenamiento en disco. Cuando no conocemos el n mero de registros a priori o la cantidad de estos es variau ble, el hashing est tico no garantiza la restricci n del n mero de accesos. a o u El hashing din mico surgi a principios de los a os ochenta como un conjunto de a o n m todos y organizaciones que garantizan el acceso a la informaci n ocn una s la operae o o ci n de transferencia. o

8.4.1.

Caractersticas

Las caractersticas comunes a todos los m todos de hashing din mico son: e a El n mero de cubos no se ja a priori en funci n del n mero de registros actual o u o u esperado, sino que los cubos se crean o destruyen seg n van siendo necesarios. u Suele existir en casi todos los m todos un cat logo o directorio que mantiene infore a maci n del n mero de cubos existentes y su ubicaci n en el dispositivo de almaceo u o namiento. En el cat logo se guardan los resultados de las salidas de la funci n hash sobre las a o posibles claves de los registros. Una vez aplicada la funci n hash sobre un registro, se localiza en el cat logo el o a cubo elegido obteniendo su direcci n fsica. o Los cubos tienen un tama o jo c, pudiendo almacenar un n mero determinado de n u registros Fc .

Organizaci n y gesti n de archivos o o

83

Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaci n directa. Hashing o

No existe una zona de derrama, aunque algunos m todos pueden mantener espacios e temporales de registros desbordados. Fundamentalmente, la diferencia principal entre el hashing est tico y el din mico es a a que en este ultimo el n mero de cubos que puede direccionar la funci n hash puede variar u o con el tiempo.

8.4.2.

Hashing extensible

Este tipo de organizaci n utiliza una funci n hash que aplicada a una clave de un reo o gistro obtiene un valor binario del tama o de la palabra de la computadora (generalmente n 32 bits), lo que signica que puede direccionar 232 cubos. Estos cubos se van generando a medida que van siendo necesarios. Por tanto, en cada momento s lo ser n necesarios c del o a total de c cubos posibles, tomando s lo los i bits menos signicativos (0 i b = 32) o de la cadena binaria devuelta por la funci n hash. o Todos los valores binarios para un determinado i se almacenan en el cat logo junto a a la direcci n fsica del cubo en el dispositivo de almacenamiento. Al n mero i se llama o u u profundidad total del cat logo pt , siendo 2pt el n mero de entradas existentes en cada a momento en el cat logo. a Las caractersticas del hashing extensible que lo diferencian de otros m todos son: e Dado un i en el cat logo exixten 2i entradas, de las cuales s lo hay presentes c a o i cubos, siendo c 2 . M s de una entradas del cat logo puede estar asociada a una salida, a un mismo a a cubo. El n mero de entradas que apuntan a un mismo cubo es 2pt pj . u La inserci n o 1. Inicialmente, la zona de direccionamiento est vaca y el cat logo no existe, debiena a do reservarse espacio en el dispositivo de almacenamiento para ambos. 2. Inserciones en profundidad 0. a) No es neceario aplicar la funci n hash al registro. o b) Se generan en el cat logo, que inicialmente est vaco, 20 entradas (o sea, una a a entrada). c) Se localiza espacio para un cubo y se almacena all el registro. d) Al cubo se le asigna el valor de profundidad pj = 0, ya que no es necesario ning n bit para direccionar el cubo correspondiente (ya que s lo hay uno). u o Organizaci n y gesti n de archivos o o 84 Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaci n directa. Hashing o

e) Se asigna a la entrada del cat logo el 0, y como salida, la direcci n del cubo a o seleccionado. f ) Se van realizando nuevas inserciones hasta que el cubo est lleno. e 3. Inserciones en profundidad 1. a) Se reserva espacio para un nuevo cubo b) Se inserta una nueva entrada en el cat logo y se actualiza con la direccci n de a o salida de cada cubo. c) A los cubos se les asigna el valor de profundidad pj = 1, ya que ahora es necesario un bit para direccionar el cubo correspondiente (ahora hay dos). d) Los registros almacenados en el primer cubo se redistribuyen entre los dos cubos en funci n del bit menos signicativo del valor devuelto por la funci n o o hash aplicada a cada clave. e) Se van realizando nuevas inserciones hasta que el cubo est lleno. e 4. Inserciones en profundidad 2. a) Cuando alguno de los cubos se llene, se reservar espacio para un nuevo cua bo y aumentar la profundidad del cat logo, siendo pt = 2, teniendo cuatro a a entradas (00, 01, 10, 11). b) Se reserva espacio para un nuevo cubo. c) El cubo en el que se ha experimentado la colisi n se divide en dos, (los regiso tros se redistribuyen en funci n de los dos bits menos signicativos). o d) A los dos cubos nuevos, se asigna el valor de profundidad pj = 2, mientras que el cubo que no produjo ning n colisi n mantiene pj = 1, y en el cat logo u o a hay dos entradas que apuntan a el. Observaciones: Las inserciones en profundidad superior a 2 se realizan de igual forma, desdoblando aquellos cubos que se desbordan por colisiones, y redistribuyendo los registros entre ambos. Cuando la colisi n se produce en un cubo ci cuyo nivel de profundidad pci sea igual o al nivel de profundidad total del cat logo pt , ser necesario aumentar la profundidad a a del cat logo en una unidad, originando nuevas entradas, y por tanto, haciendo que a varias de ellas apunten a un mismo cubo.

Organizaci n y gesti n de archivos o o

85

Antonio Aliaga Munoz

2o I.T.I.G./UAL

Organizaci n directa. Hashing o

La reorganizaci n de los cubos implica aplicar de nuevo la funci n hash a cada reo o gistro para saber a cual de los nuevos cubos ir destinado, lo cual no es demasiado a costoso por realizarse en memoria. Sin embargo, la reorganizaci n fsica de los reo goistros en dichos cubos s puede se costosa, tanto m s cuanto mayor sea el tama o a n de los cubos c. Suponiendo que el cat alogo no es demasiado grande, pordr gestionarse ntegramenn a te en memoria. La recuperaci n o La recuperaci n de un registro consistira simplemente en: o 1. Aplicar la funci n hash a la clave del registro. o 2. Tomar s lo los bits menos signicativos correspondientes a la profundidad del o cat logo pt . a 3. Acceder a la entrada del cat logo correspondiente y obtener la direcci n del cubo a o donde se debe encontrar. 4. Cargar el cubo en memoria y analizar la existencia all del registro. Si no se encuen tra en el cubo es que no est almacenado (ventajas de no tener zona de derrama). a El borrado Para borrar un registro, primero ha de localizarse el cubo correspondiente, y despu s e de transferirlo a memoria y reorganizarlo se vuelve a grabar. Si el proceso de borrado da lugar a que un cubo queda vaco, se libera el espacio de este y se reorganiza el cat logo. a Se proceder de igual forma si es posible reunir los registros de dos cubos en uno s lo. a o En caso de que el cubo quede vaco, se libera su espacio y en el cat logo se actualiza a su entrada para que apunte al cubo gemelo, que es aqu l en el que s lo vara el bit de e o signicancia pt . Si no existe ning n cubo gemelo, el nivel de profundidad del cat logo u a puede disminuir en una unidad. Tambi n puede disminuir el n mero de cubos sin que ninguno quede vaco, siempre e u que el n mero de registros total en los cubos gemelos sea menor que Fc ; en tal caso, se u reunicaran ambos cubos.

Organizaci n y gesti n de archivos o o

86

Antonio Aliaga Munoz

También podría gustarte