Está en la página 1de 14

Tema 2.

Organizaciones de cheros y estructuras de acceso


Ficheros y Bases de Datos 10 de junio de 2002

1.

Introducci on

Este documento contiene preguntas del tema 2 recogidas por estudiantes de la asignatura (M.Carmen Vilar Blasco, Yolanda Biosca V azquez, Sergi Navarro Gal an, Claudio Sarrio Llopis, Oscar Masip Carceller, Antonio Ruben Vega Castilla, Joan Manuel Ferrer i Peris, Belen Bru Ubeda y Gemma Bermudez Jovani) y que han sido contestadas por el profesorado.

2.
2.1.

Preguntas y respuestas
Qu e es un ndice no denso?

Primero debemos saber qu e es un ndice denso: es un ndice que tiene una entrada por cada registro del chero de datos. Si el chero de datos tiene, por ejemplo, 10.000 registros, en el ndice hay 10.000 registros, es decir, una entrada por cada uno de ellos. Un ndice no denso es un ndice que no tiene una entrada por cada registro del chero de datos, sino que tiene menos entradas. Dependiendo del tipo de chero y del tipo de ndice, puede tener una entrada por cada valor distinto del campo de indexaci on o bien una entrada por cada bloque del chero de datos (en un bloque caben, normalmente, varios registros de datos).

2.2.

Qu e es un campo clave?

Es un campo cuyos valores no se repiten en el chero, es decir, no hay dos registros en el chero que tengan el mismo valor en ese campo.

2.3.

Cu antas entradas tiene el ndice?

Cada tipo de ndice tiene un n umero de entradas. Un ndice primario es un ndice no denso que tiene una entrada por cada bloque del chero de datos. Un ndice de agrupamiento es un ndice no denso que tiene una entrada por cada valor distinto del campo de indexaci on. En cuanto a los ndices secundarios, el n umero de entradas depende de c omo sea el campo de indexaci on. Si es un campo clave, el ndice es denso. Si es un campo no clave, hay varias alternativas: puede ser un ndice denso, puede ser un ndice no denso con entradas de longitud variable o puede ser un ndice no denso con entradas de longitud ja y un nivel extra de indirecci on.

2.4.

Por qu e en los ndices primarios es mejor poner en las entradas el valor del campo de indexaci on del u ltimo registro de cada bloque?

La bibliograf a dice que el algoritmo que realiza la b usqueda es ligeramente m as eciente si se hace de ese modo, aunque no muestra el algoritmo. Lo buscaremos.

2.5.

Sobre un chero desordenado qu e tipo de ndices puedo denir?

Se pueden denir ndices secundarios y cualquier tipo de ndice multinivel.

2.6.

Sobre un mismo chero puedo tener un ndice primario y uno de agrupamiento a la vez?

Imposible. Estos ndices son los que se construyen sobre el campo de ordenaci on de un chero ordenado. Cuando el campo de ordenaci on es un campo clave, al ndice se le llama primario; cuando el campo de ordenaci on es un campo no clave, al ndice se le llama de agrupamiento.

2.7.

Qu e signica que los ndices secundarios proporcionan un ordenamiento l ogico del chero?

Los ndices secundarios se denen sobre campos a trav es de los que el chero de datos no est a ordenado. Si en un chero queremos encontrar, por ejemplo, los registros cuyo valor del campo de indexaci on se encuentra entre x e y , y no disponemos de ning un ndice, debemos hacer una b usqueda lineal recorriendo todos los registros del chero para encontrar aquellos que cumplen la condici on. Esto se debe a que el chero no est a ordenado a trav es de ese campo.

Si sobre ese mismo chero y sobre ese campo de b usqueda se dene un ndice secundario, haciendo una b usqueda binaria en el ndice se pueden encontrar los punteros a los registros que cumplen la condici on de b usqueda e ir a por ellos directamente desde el ndice. El acceso es m as r apido porque el ndice funciona como si el chero estuviera ordenado a trav es de ese campo, aunque no lo est a. Por eso decimos que proporciona un ordenamiento l ogico, porque lo podemos manejar como si estuviera ordenado aunque f sicamente no lo est a.

2.8.

Puede haber ndices primarios y secundarios en un mismo chero? E ndices de agrupamiento y secundarios?

S , claro. Sobre un chero ordenado por campo clave podemos denir un ndice primario sobre el campo de ordenaci on e ndices secundarios sobre los otros campos. Sobre un chero ordenado por campo no clave podemos denir un ndice de agrupamiento sobre el campo de ordenaci on e ndices secundarios sobre los otros campos.

2.9.

En un ndice secundario se pueden realizar b usquedas binarias?

S , claro. Un ndice secundario es un ndice de un solo nivel. Estos ndices son cheros ordenados y sobre un chero ordenado podemos realizar b usquedas binarias.

2.10.

Qu e es un ndice de agrupamiento?

Es un ndice que est a denido sobre el campo de ordenaci on de un chero ordenado siendo este un campo no clave.

2.11.

En los ndices de un solo nivel por qu e se pueden realizar b usquedas binarias?

Porque un ndice de un solo nivel es un chero ordenado y sobre un chero ordenado la b usqueda binaria es, en general, m as r apida que la b usqueda lineal.

2.12.

Qu e ocurre cuando los ndices son demasiado grandes y cambian con frecuencia?

Un ndice de un s olo nivel es un chero ordenado, el ndice cambia si lo hace el chero de datos al que va asociado y m as concretamente si estos cambios afectan al campo de ordenaci on del ndice. En estos casos hay que reorganizar el ndice, lo cual supone un elevado coste y es un problema que se agrava si el ndice es grande. 3

Se puede solucionar utilizando zonas de desborde. De esta forma el ndice s olo se reorganiza cada cierto tiempo. Otra posibilidad consiste en dejar espacio libre a priori en los bloques del chero de ndice de forma que, mientras haya espacio en los bloques, se puedan hacer las inserciones sin tener que reorganizar todo el chero, obviamente esto supone el tener que utilizar m as espacio del necesario para almacenar el chero.

2.13.

Enumera ventajas/desventajas de realizar la b usqueda binaria sobre cheros ordenados.

No es cuesti on de ventajas o desventajas, es una cuesti on de costes de algoritmos. Si tenemos un chero ordenado con n registros y hacemos una b usqueda por un campo clave, en el caso medio recorreremos la mitad del chero hasta encontrarlo, por lo que el coste es n/2. Si el campo no es clave, habr a que seguir leyendo registros mientras cumplan la condici on de b usqueda. Esto no es muy costoso si tenemos en cuenta que estos registros est an uno a continuaci on del otro porque hablamos de un chero ordenado. Si sobre ese chero ordenado hacemos una b usqueda binaria y el campo de ordenaci on es un campo clave, en el caso medio nos cuesta log2 n. Si el campo de ordenaci on es no clave, seguiremos leyendo registros consecutivos como en el caso anterior. Si comparamos los costes de ambos algoritmos, vemos claramente que el de b usqueda binaria es m as r apido: log2 n << n/2.

2.14.

En qu e circunstancia es aconsejable utilizar el agrupamiento (clustering)?

Cuando se tienen varios cheros a los que se accede juntos con frecuencia a trav es de las relaciones l ogicas que guardan. Es m as f acil de entender si pensamos en un ejemplo: cuando se accede al chero de l neas de facturas se accede tambi en al chero de facturas para concatenar cada una con sus l neas. Si los registros de ambos cheros se almacenan agrupados en un solo chero, el acceso es m as r apido porque los registros que est an relacionados se almacenan f sicamente juntos: cada cabecera de factura va seguida en el chero por sus l neas de factura, de modo que si caben en un bloque, con un solo acceso nos traemos la factura completa.

2.15.

Qu e restricciones tienen los arboles B para tener mejores prestaciones que los arboles de b usqueda?

Los arboles B siempre est an equilibrados, es decir, tienen todas sus hojas al mismo nivel (eso evita que haya hojas muy profundas y otras poco profundas) y los nodos est an, al menos, al 50 % de su capacidad (si se aprovecha bien el espacio en cada nodo, el n umero de niveles del arbol es menor que si los nodos est an casi vac os). 4

2.16.

Qu e sucede si se a nade en un arbol B un registro repetido? As , en el ejemplo visto en clase qu e ocurrir a al a nadir otro 10?

Cuando el campo sobre el que se dene el ndice es no clave, lo que se suele utilizar es un nivel extra de indirecci on. Los punteros de las entradas del ndice no apuntan a un registro de datos sino que apuntan a un bloque en donde se encuentran todos los punteros a los registros de datos que tienen el mismo valor en el campo de indexaci on.

2.17.

En un arbol B+ de orden p, en el mejor de los casos a qu e puntero se llega? y en el peor?

En los arboles B+ los punteros a los registros de datos se encuentran s olo en las hojas, por lo que en todos los casos hay que llegar hasta ellas para encontrar el puntero al registro de datos, est e o no est e. El n umero de accesos a nodos del arbol es siempre igual al n umero de niveles que tiene el arbol.

2.18.

Por qu e en los arboles B se suman las entradas para saber el n umero total de entradas y en los arboles B+ no?

Pues porque en el arbol B hay punteros a registros de datos en todos los nodos, desde la ra z hasta las hojas. Para saber cu antas entradas hay en total, tenemos que sumar las entradas que hay en cada nivel. Sin embargo, en los arboles B+ los punteros a registros de datos s olo est an en las hojas, por lo que s olo hay que mirar el n umero de entradas del u ltimo nivel, el nivel m as bajo.

2.19.

Qu e tipo de accesos se pueden hacer en un arbol B? Y en un arbol B+?

Los arboles B y B+ los utilizamos como ndices, lo que nos permite acelerar el acceso a los datos frente a una b usqueda lineal. Si tenemos un ndice con estructura de arbol B, el acceso se hace siempre desde la ra z y se van bajando niveles hasta encontrar el puntero a los datos (o hasta llegar a no encontrarlo, claro). Si el ndice tiene estructura de arbol B+, podemos acceder a trav es de la ra z y bajar hasta las hojas hasta encontrar el puntero a los datos. O bien podemos acceder directamente a la primera de las hojas y recorrerlas todas ya que est an encadenadas seg un el orden del campo de indexaci on (este tipo de acceso se realiza cuando la condici on de b usqueda es una desigualdad: A < x, A x, A > x, A x). O bien podemos acceder desde la ra z a una de las hojas y despu es recorrer las hojas que est an encadenadas (este tipo de acceso se realiza cuando la condici on de b usqueda es un rango, por ejemplo x A y )

2.20.

De qu e modo se buscar a un registro en un chero utilizando una funci on de dispersi on como ndice?

Se aplica la funci on de dispersi on f (x) al campo de dispersi on A. El resultado f (A) indica una entrada en un tabla de dispersi on o directorio. En la entrada correspondiente del directorio encontramos un puntero al ndice; este ndice es un chero disperso. En el ndice ya encontramos una entrada (si existe) que apunta al registro de datos que cumple la condici on de b usqueda, que siempre es la igualdad, no hay que olvidarlo. En este caso, lo que es disperso es el ndice, no el chero de datos. Cuando se inserta un registro de datos (por ejemplo, si es un chero desordenado, se a nadir a al nal), la entrada que apunta a ese registro se sit ua en el ndice en la posici on que indique la funci on de dispersi on.

2.21.

Diferencia entre estructura de un chero, organizaci on de un chero y estructura de acceso.

En la asignatura son t erminos equivalentes los de estructura de un chero y organizaci on de un chero. Se trata de saber c omo est an organizados los registros dentro del chero, si son de longitud ja o variable, etc. Una estructura de acceso es un chero adicional que utilizamos para facilitar el acceso a los datos de otro chero. Si tenemos un libro de cuentos, su estructura u organizaci on es lo que describimos a continuaci on: los cuentos est an ordenados por temas: cuentos fant asticos, historias de animales, ogros y brujas, etc.; para cada cuento, hay una introducci on donde se relatan sus or genes y una indicaci on sobre la edad m nima para la que est a recomendado, su duraci on media en minutos, el lugar donde se desarrolla y sus principales personajes. Las estructuras de acceso que nos permiten encontrar un cuento m as r apidamente que si vamos recorriendo el libro p agina a p agina, ser an las siguientes: un ndice que sigue el orden de los cuentos tal y como aparecen en el libro, es decir, por tem aticas; un ndice de cuentos por personajes (cada entrada es un personaje y apunta a los cuentos en donde este sale); un ndice de cuentos por su duraci on (cada entrada es un n umero de minutos y apunta a los cuentos que tienen esa duraci on media); un ndice de cuentos por edades.

2.22.

Diferencia entre clusters y bloques. Cu antos bloques hay en un cluster?

Un cluster es un conjunto de bloques que est an contiguos f sicamente. Cuando se asigna espacio a un chero, se asigna una cantidad de clusters. Si hay que a nadir espacio a un chero, se a nade al menos un cluster, no es posible a nadir una cantidad m as peque na. Este concepto es importante porque resalta la importancia de que los bloques que forman un mismo chero es conveniente que est en pr oximos f sicamente para que el acceso a los mismos sea m as r apido. El gestor de cheros del sistema operativo ve al chero como un conjunto de clusters, dentro de cada cluster los bloques est an uno a continuaci on del otro. El n umero de bloques que hay en un cluster puede estar jado por el sistema operativo, lo puede escoger el administrador del sistema o incluso se puede jar para cada aplicaci on seg un sus propios requisitos.

2.23.

Los arboles B+ al guardar menos punteros y tener mayor capacidad que los arboles B qu e les ocurre?

Pues que se ponen muy contentos, porque en los nodos les caben m as punteros a nodos del arbol (se ahorran los punteros a datos, que s olo est an en las hojas) y por lo tanto son m as anchos (o regordetes) y, en consecuencia, tienen menos niveles. Adem as, permiten un modo de acceso adicional gracias a que las hojas est an enlazadas.

2.24.

Ventajas de los arboles B+ sobre los B

Ver pregunta 2.23.

2.25.

Qu e problemas presentan los arboles?

La tala indiscriminada y sin control :-( Bromas aparte, los arboles como estructuras de acceso adicional a cheros de datos, suponen una mejora frente a los ndices de un solo nivel, ya que mejoran el aprovechamiento del espacio utilizado, garantizando un acceso al bloque de datos que contiene el registro buscado de forma eciente. El precio que hay que pagar es que los algoritmos de inserci on, borrado y modicaci on son algo m as complejos.

2.26.

Qu e tipos de cheros son los m as r apidos y ecientes para realizar una b usqueda? Por qu e?

En realidad el chero no es m as o menos r apido o eciente. Lo que puede ser eciente es un m etodo de acceso: es m as eciente hacer una b usqueda binaria en un chero ordenado, que hacer una b usqueda lineal. Por otra parte, se puede mejorar tambi en el tiempo de acceso (que este sea m as r apido) o bien cambiando la organizaci on del chero, o bien construyendo estructuras de acceso adicionales ( ndices) que permitan encontrar los datos m as f acilmente ante determinados tipos de acceso. Por lo tanto, ante una determinada organizaci on de un chero, habr a un m etodo de acceso que sea el m as eciente para cada tipo de consulta. Por ejemplo, si se tiene un chero de personas, ordenadas por el DNI, cuando se quiere consultar los datos de una persona con un determinado DNI lo m as eciente es hacer una b usqueda binaria. Si la b usqueda se realiza sabiendo los apellidos de la persona y no su DNI, la b usqueda se har a mediante b usqueda lineal. Si el chero de personas es desordenado, no nos podemos beneciar del algoritmo de b usqueda binaria ante ning un tipo de consulta. Si el chero de personas es un chero disperso y se ha utilizado como campo de dispersi on el DNI, buscar una determinada persona por su DNI es m as eciente si se hace mediante la funci on de dispersi on. Pero si la b usqueda de la persona se hace a partir de sus apellidos, de nuevo se debe hacer una b usqueda lineal. Cada organizaci on de cheros favorece un tipo de consulta, o ninguno. Sin embargo, los usuarios van a querer acceder a los datos mediante distintos tipos de consulta. Aquellos accesos que vayan a ser lentos pueden hacerse m as r apidamente si se a naden al chero ndices sobre los campos de la consulta (los campos que aparecen en el WHERE de una consulta SQL, por ejemplo). Estos ndices se pueden implementar mediante distintas estructuras: cheros ordenados, varios niveles de cheros ordenados, arboles y cheros dispersos. Cada una de estas estructuras tiene sus ventajas y sus inconvenientes. Un u ltimo apunte respecto a todo esto es que no siempre el acceso a los datos a trav es de un ndice va a ser m as r apido frente a una b usqueda lineal. La bibliograf a dice que si en una consulta se accede a m as de un 15-20 % de los registros de un chero, ser a m as r apido acceder directamente al chero mediante una b usqueda lineal1 .

2.27.

Qu e ocurre si un chero completo no cabe en memoria principal?

Un chero normalmente no va a estar completamente en memoria principal. El programa que trabaja con un chero pedir a el sistema operativo bloques del mismo para trabajar con ellos. En el caso en que el n umero de bloques pedidos no cupiera en memoria principal del ordenador, el sistema operativo, utilizando la memoria virtual, realizar a el trasiego de p aginas
1

Esto es en el caso general en el que el chero y el ndice no est an ordenados por el mismo campo.

entre memoria principal y disco para que los datos con los que se necesite trabajar est en en memoria principal. Obviamente, esto va a suponer un aumento considerable en los tiempos de acceso a los datos, pero por problemas ajenos al sistema de cheros y a la forma en que los datos est an almacenados en el chero.

2.28.

Qu e tipos de cheros se suelen utilizar en los SGBD?

Los SGBD actuales suelen ser capaces de trabajar con muchos de los tipos de cheros de datos que hemos visto en clase (ordenados, desordenados, dispersos, . . . ) as como distintas estructuras de acceso ( ndices de un solo nivel, arboles, . . . ). El administrador de la base de datos puede indicarle al SGBD qu e tipo de chero ha de utilizar para almacenar las distintas tablas (en el modelo relacional) o los tipos de ndices de un solo nivel o arboles que ha de denir sobre los cheros de datos. Por este motivo es necesario conocerlos a fondo y saber cuales son sus ventajas e inconvenientes para, en funci on de las consultas que se vayan a realizar sobre la base de datos, denir los tipos de cheros y estructuras de acceso que optimicen (o al menos mejoren) dichas consultas.

2.29.

Qu e ocurre si los registros de un mismo chero son de diferentes tipos?

Esto ocurre cuando se decide realizar un agrupamiento (o clustering) de dos cheros de datos de distinto tipo de registros (o de dos tablas en el modelo relacional) en un solo chero. Con ello se obtienen una serie de ventajas (ver pregunta 2.14) como es la mejora del tiempo de acceso de determinadas consultas. Tambi en se tienen inconvenientes como es que empeora otros accesos (por ejemplo las b usquedas de ventas de un determinado art culo en el caso de haber realizado la agrupaci on comentada en el ejemplo de la pregunta 2.14). Otro inconveniente es que se trata de cheros (de alguna manera) ordenados con todos los inconvenientes que ello conlleva.

2.30.

Cita los objetivos a tener en cuenta a la hora del dise nar una buena estructura de cheros

El objetivo que se debe tener siempre presente es reducir los accesos a disco ya que estos son tremendamente costosos y suponen el cuello de botella a la hora de acceder a la informaci on. Debemos tratar de que la b usqueda de los datos que se piden, se realice con el menor n umero de accesos (uno, si es posible) a disco.

2.31.

Cu al es la cantidad m nima que se puede leer o escribir en disco?

Desde el punto de vista del sistema operativo: el cluster. Desde el punto de vista de los SGBD: el bloque. (Ver pregunta 2.22)

2.32.

Enumera los 4 tipos de estructuras seg un el orden de almacenamiento de los registros en los cheros

Ficheros desordenados: los registros no siguen ning un orden dentro del chero. Normalmente se escriben tal y como se van creando los datos. Ficheros ordenados: los registros se ordenan dentro del chero seg un uno de sus campos. Ficheros dispersos: Se utiliza una funci on que, aplicada sobre un campo del registro, indica el bloque del chero donde se debe almacenar dicho registro. Ficheros agrupados: Son cheros en los que se guardan registros de distintos tipos. Esto sirve para mejorar el acceso a los datos, en 2.14 y 2.29 se puede ampliar este concepto.

2.33.

Explica los cheros hashing, y sus tipos a nivel externo

Los Ficheros dispersos (o hashing) se caracterizan porque se puede averiguar el bloque que contiene un determinado dato aplicando una funci on de dispersi on a uno de sus campos (denominado campo de dispersi on). La principal ventaja de este tipo de cheros es que la direcci on del bloque de cada registro se obtiene directamente aplicando la funci on de dispersi on, por lo tanto, el acceso es r apido (un s olo acceso) si se busca por el campo de dispersi on. Aunque la t ecnica de dispersi on tambi en se puede utilizar a nivel interno (RAM) como una estructura de datos de un programa, su principal utilidad para nosotros es su uso a nivel externo, es decir, aplicada a cheros. Existes distintos tipos de dispersi on cuando se trabaja con cheros: Est atica: el chero tiene un tama no jo y predenido a priori. Todos los registros con un mismo valor valor para la funci on de dispersi on se almacenan en el mismo bloque. Si un bloque se llena se utilizan zonas (bloques) de desborde, en la pregunta 2.44 se explica su funcionamiento en su uso en memoria principal. Din amica: Se utiliza un directorio en forma de arbol que, mediante los bits m as signicativos del resultado de la funci on de dispersi on, permite acceder a los bloques del registro. El arbol, y por lo tanto el n umero de bloques que forman el chero, puede crecer y disminuir din amicamente. 10

Extensible: El chero, al igual que antes, puede cambiar de tama no, pero en este caso se utiliza un vector como directorio. Los bits m as signicativos del resultado de la funci on de dispersi on se utilizan para acceder a una posici on del vector donde est a almacenado el bloque del chero que contiene el registro buscado. Lineal: En este caso, a grandes rasgos, cuando hay que agrandar el chero se van a nadiendo bloques consecutivos. Se utilizan varias funciones de dispersi on para acceder a los bloques.

2.34.

Explica ventajas e inconvenientes del Agrupamiento (clustering)

Ver preguntas 2.14 y 2.29.

2.35.

Es aconsejable denir un ndice sobre todos y cada uno de los campos de los registros de un chero?

No, aunque se pueden denir tantos ndices como campos2 tengan los registros de un chero, el mantenimiento de los mismos (actualizaci on, reorganizaci o, . . . ), cuando se realizan modicaciones sobre el chero de datos, puede cargar en exceso dichas operaciones. De nuevo, el administrador de la base de datos, haciendo las pruebas oportunas, debe decidir qu e ndices se deben crear para mejorar el acceso a los datos.

2.36.

Por qu e los arboles-B se utilizan como ndices?

Porque garantizan que el tiempo de acceso a los datos a trav es del ndice es bastante uniforme sin penalizar demasiado la reorganizaci on del arbol cuando se a naden o modican datos en el chero de datos.

2.37.

Cita una ventaja de los arboles B+ frente a los arboles B

Hay varias, por ejemplo permiten el acceso directo a los datos y tambi en en el orden que marca el ndice, mientras que en el caso de los arboles B este u ltimo tipo de acceso es m as costoso. Tambi en permiten crear arboles m as anchos lo cual redunda en una mejora en el tiempo de acceso, ya que para una misma cantidad de datos el arbol B+ tendr a menos niveles (que el B) y por tanto se acceder a al chero de datos con menos accesos.
2

E incluso se pueden denir ndices sobre varios campos de un chero.

11

2.38.

Diferencia principal entre los ndices primarios e ndices de agrupamiento

Ambos son ndices que se crean sobre el campo de ordenaci on de un chero ordenado. Sin embargo, este chero ordenado puede estarlo a trav es de un campo clave (por ejemplo, el chero de clientes ordenado por su c odigo: no hay dos clientes que tengan el mismo c odigo) o puede estar ordenado por un campo no clave (por ejemplo, el chero de facturas ordenado por la fecha: hay varias facturas en una misma fecha). Cuando el chero est a ordenado por un campo clave, al ndice que se dene sobre este campo se le llama ndice primario. Cuando el chero est a ordenado por un campo no clave, al ndice que se dene sobre este campo se le llama ndice de agrupamiento.

2.39.

Podr amos tener un ndice primario de m ultiples niveles y que fuera no denso?

Aqu se han mezclado varios conceptos. En primer lugar, un ndice primario es, por denici on, un ndice de un solo nivel, por lo tanto no puede ser de m ultiples niveles. Por otra parte, un ndice primario (y un ndice de agrupamiento) ser a siempre un ndice no denso ya que no necesita una entrada por cada registro del chero de datos: aprovechando que el chero de datos est a ordenado y que el ndice va a seguir el mismo orden, con tener una entrada en el ndice por cada bloque de datos, se tiene informaci on suciente en el ndice para realizar accesos m as r apidos a trav es de el, frente a realizar estos accesos mediante b usqueda binaria sobre el chero de datos.

2.40.

Problemas que plantea la inserci on en ndices de agrupamiento

Al ser cheros ordenados f sicamente, tenemos problemas al insertar. Para evitarlos, la inserci on en los ndices de agrupamiento se puede hacer reservando un bloque completo por cada valor del campo de agrupamiento. Todos los registros con ese valor se colocan en el bloque. En el caso de que necesit aramos m as espacio para almacenar los registros con un valor determinado, se asignan y enlazan bloques adicionales. Como casi siempre, esta mejora se produce a costa de ocupar mayor espacio en disco del necesario.

12

2.41.

Explicar la t ecnica de stripping para resolver el problema del cuello de botella del disco

El stripping consiste en dividir un chero en varios discos (cuantos m as mejor). Al escribir o leer informaci on del chero, cada disco puede recibir o mandar la parte del chero que tiene almacenada. As se multiplica la velocidad de transferencia por el n umero de discos. Esta t ecnica es cara porque el coste de almacenamiento de datos tambi en se multiplica.

2.42.

C omo modicar un dato en un chero desordenado?

Los pasos a seguir son los siguientes: Hay que buscar el dato, que por estar el chero desordenado, ha de ser una b usqueda lineal, muy costosa, se lleva a memoria RAM todo el bloque y se modica el registro. Si el tama no es variable y no cabe en el espacio que antes ocupaba, se borra y se inserta al nal, se escribe el bloque en el disco ya modicado. Si el registro es de tama no variable se escribe el registro con el dato borrado y se inserta el nuevo registro al nal.

2.43.

C omo insertar en un chero ordenado?

Los pasos a seguir son los siguientes: 1. 2. Se busca en qu e posici on ha de ir el nuevo registro y se lleva el bloque a memoria principal, se hace hueco para almacenar el nuevo dato, esto seguramente supondr a leer y escribir todos los bloques por detr as del actual en el chero para desplazar todos los registros hacia atr as, se escribe el bloque en disco.

3.

Si se ha dejado previamente espacio en los bloques del chero, el segundo paso no tiene porque suponer el desplazamiento de todos los registros posteriores al que se est a haciendo la inserci on. El paso segundo tambi en se puede aliviar utilizando un chero de desbordamiento: Si al insertar un dato no cabe, se escribe en el chero de desbordamiento, que es un chero desordenado, y cada cierto tiempo se fusionan el chero ordenado y el de desborde. Por supuesto, esto introduce una p erdida de eciencia en las b usquedas . 13

2.44.

Describir el m etodo de encadenamiento para la resoluci on de colisiones en la dispersi on interna

Con el encadenamiento se enlazan los sin onimos, es decir, los registros que tienen un mismo valor para la funci on de dispersi on. Se a nade un puntero a cada registro. Ese puntero se nala la posici on en el vector en la que hay almacenado un sin onimo. Si un registro se ha de almacenar en la misma posici on que otro (el 3 por ejemplo), se pone en una posici on libre de la zona de desborde (K por ejemplo) y en el puntero del registro (el 3 en el ejemplo) se pone en qu e posici on se ha almacenado (K en el ejemplo). Si otro registro se ha de almacenar en esa misma posici on, se busca otra posici on libre y se guarda dicha posici on en el segundo puntero (el que estaba en K en el ejemplo). Si queremos acceder a los datos, la funci on de dispersi on nos indicar a en qu e posici on del vector deber a estar. Si no est a en esa posici on, pero el puntero de desborde contiene un valor, se accede a dicha posici on. Este proceso se repite hasta encontrar el dato buscado o haber recorrido toda la lista encadenada.

2.45.

Qu e es el Agrupamiento (Clustering)?

Las preguntas 2.14 y 2.29 contestan a esta pregunta.

14