You are on page 1of 12

FICHEROS Y BASES DE DATOS (E44) 3 INGENIERA EN INFORMTICA

Tema 4. Tcnicas de Dispersin. Definicin y Manejo.


1.- Introduccin. 2.- Funciones de Dispersin. 3.- Saturacin Progresiva. 4.- Empaquetado de Registros. 5.- Otras Tcnicas de Dispersin. 6.- Dispersin Extensible. (Captulos 10 y 11 del Folk) (Captulos 4 y 5 del Elmasri) (Captulo 3 del Date)

INTRODUCCIN
Concepto de Dispersin
- Algunas aplicaciones requieren que el nmero de accesos a disco necesario para recuperar informacin se reduzca a uno. - Dado que el manejo de los ndices multinivel puede tener un coste mayor, se deben definir estructuras de ficheros alternativas. - La Dispersin permite definir la posicin que ocupar un registro en el fichero, mediante la aplicacin de una Funcin de Dispersin sobre la Clave de Acceso. - Esta posicin se utiliza en las operaciones de insercin y borrado, por lo que el nmero de accesos se reduce a uno. - Un registro puede almacenarse en cualquier posicin dentro del fichero, segn la funcin de dispersin que se utilice. - Por esta razn, esta opcin slo se puede utilizar en ficheros con registros de tamao fijo. - La dispersin no admite la utilizacin de claves repetidas, por lo que normalmente se aplica sobre la clave primaria. - La aplicacin de la funcin de dispersin genera un orden entre los registros, pero slo respecto de la clave utilizada. - Por lo tanto el acceso respecto de cualquier otra clave, requiere la utilizacin de otras estructuras de ficheros como los ndices.

INTRODUCCIN
Colisiones
- El problema se presenta cuando ms de un registro se asocia a la misma posicin, es decir, cuando aparecen las Colisiones. - Las claves que se asocian a la misma posicin se les denomina Sinnimos. - La aparicin de colisiones puede aumentar el nmero de accesos requerido para acceder a un registro determinado. - Para reducir el problema se puede, - Utilizar una Funcin de Dispersin Perfecta, que reduzca al mximo su nmero. - Definir variantes que reduzcan el nmero de colisiones que puedan aparecer. - La primera opcin es demasiado costosa, ya que existe una gran variedad de funciones, y adems se requiere conocer las claves. - Por lo tanto, el estudio se centra en la gestin de las colisiones, que dar lugar a diferentes variantes de esta tcnica. - Las opciones ms comunes son las siguientes, - Definir una funcin de dispersin que realice una distribucin adecuada de los registros. - Aumentar el tamao del fichero para reducir la posibilidad de aparicin de las colisiones. - Almacenar ms de un registro en la misma posicin, que referenciar a una pgina. 3

FUNCIONES DE DISPERSIN
Ejemplos
- Una funcin de dispersin se podra describir como sigue, - Se calcula el producto de la representacin en ASCII de los dos primeros carcteres de la clave. - La direccin del registro se obtiene a partir de los ltimos dgitos del resultado. - Esta funcin puede producir un alto grado de colisiones, y adems produce un bajo nivel de distribucin de los registros. - Una funcin que presenta mejores resultados es la siguiente, - Se obtiene la representacin numrica de la clave. - Dicha representacin se divide en partes, que deben de ser sumadas. - El valor acumulado no debe sobrepasar el mximo nmero entero representable. - El resultado se divide por un nmero que se relaciona con el tamao del fichero, siendo el resto la direccin del registro. - La principal cuestin es la eleccin del divisor, - Normalmente se utiliza un nmero primo o bien, un nmero con divisores mayores de 20. - Este nmero debe de ser mayor que el tamao del fichero, y redefinir dicho valor. 4

FUNCIONES DE DISPERSIN
Clasificacin y Anlisis
- Las funciones de dispersin se puede clasificar a partir de la probabilidad de asignacin de un registro en una direccin como, - Uniforme, en las que los registros aparecen uniformemente distribuidos en el fichero. - Aleatoria, si un determinado registro puede ser asignado a cualquier direccin. - La primera opcin suele ser muy costosa, mientras que no existe ningn tipo de control sobre la segunda. - Es por ello, que se estudian alternativas que permitan mejorar el comportamiento de estas ltimas, - Buscar un patrn en la clave. - Particionar la clave y luego sumar las partes. - Dividir la clave por un nmero. - Cuando estas alternativas no son tiles, se pueden analizar otras opciones, - Elevar la clave al cuadrado, y elegir como direccin los dgitos centrales. - Cambiar la base de la clave, y dividir el resultado por el tamao del fichero. - La primera opcin requiere la utilizacin de aritmtica especfica, aunque suele dar un resultado adecuado para ciertas claves.

SATURACIN PROGRESIVA
Definicin
- Una de las opciones ms simples para resolver la aparicin de una colisin en una direccin, es elegir el primer hueco no ocupado que se encuentre a continuacin de aqul. - Si se alcanza el final del fichero en este proceso, se debe continuar con la primera direccin del fichero. - Esta tcnica se denomina Verificacin Lineal o Saturacin Progresiva. - La bsqueda de informacin tambin se inicia en la direccin asociada a la clave. - Si el registro buscado aparece en el fichero, esta operacin finaliza cuando se encuentra el registro con la clave asociada. - En caso contrario, el proceso finaliza cuando se produce una de las siguientes situaciones, - Aparece un hueco no ocupado. - Se alcanza la direccin inicial. - Mediante esta tcnica, el nmero de accesos requeridos para acceder a un registro crece de modo ostensible al aumentar la densidad de registros en el fichero. - Por esta razn, esta tcnica slo se debe utilizar cuando la densidad de registros resulta suficientemente baja, alrededor del 40%.

SATURACIN PROGRESIVA
Eliminacin de Registros
- En la eliminacin de un registro del fichero se debe de considerar que, - El registro pueda ser reutilizado. - El borrado no impida la localizacin de un registro. - La primera condicin se puede conseguir de modo sencillo marcando el hueco asociado como vaco, es decir, borrando el registro. - Para impedir que un borrado interrumpa la bsqueda de un registro insertado, se debe de marcar de un modo especial. - Esta marca indicar al proceso de bsqueda de un registro que el hueco correspondiente estuvo ocupado y se ha borrado. - Por lo que respecta al proceso de insercin, lo identificar como un hueco til. - Este proceso puede eliminar la posibilidad de detectar la aparicin de duplicados, ya que es posible reutilizar un hueco situado en una posicin anterior. - Las eliminaciones pueden aumentar de modo innecesario el nmero de accesos necesarios para acceder a un registro, para resolverlo, - Recolocar los sinnimos tras el borrado. - Reorganizar el fichero peridicamente. - Utilizar otra metodologa

EMPAQUETADO DE REGISTROS
Frecuencia de Colisiones
- La Densidad de Registros en un fichero se define como el cociente entre el nmero de registros almacenados y el nmero de registros que caben en un fichero. - La conexin existente entre la densidad de registros y el nmero de colisiones que pueden aparecer resulta muy compleja. - nicamente cuando se utiliza una funcin de dispersin aleatoria se puede realizar un buen anlisis, mediante un estudio estadstico. - La probabilidad de aparicin de x registros asociados a una direccin en un fichero con una capacidad de N huecos y con r registros, se define por la funcin de Poisson, p(x ) =

(r N) x e r N
x!

- Siendo n la capacidad en registros del fichero, el nmero de colisiones se calcula como, num_colis = n(x 1)p(x )
x=2 n

- El anlisis de estas expresiones permite evaluar el alto nmero de colisiones que se pueden producir, y que crece al aumentar la densidad. - Es por ello, que resulta interesante evaluar alguna opcin que permita reducir el nmero de colisiones, y que permita aumentar la densidad del fichero.

EMPAQUETADO DE REGISTROS
Definicin
- Siendo b el nmero de registros en un hueco, la relacin entre el nmero de huecos y el nmero de registros almacenado se define, n = bN - Para un mismo valor de densidad, el nmero de colisiones disminuye cuando crece b, num_colis = n( x b)p ( x)
x =b+1 n

- Este es el fundamento para el Empaquetado de Registros. - Uno de los aspectos bsicos es su tamao, ya que el uso de dimensiones muy grandes puede aumentar el coste de acceso a disco. - Normalmente se elige un tamao intermedio como un cmulo. - Cuando el valor de b es mayor que 1, se debe introducir un contador que indique el nmero de registros ocupados en la pgina y marcar los registros que no han sido utilizados. - De este modo, el algoritmo de insercin puede detectar si caben registros en la pgina y cules son. - La eliminacin puede realizarse mediante la utilizacin de la saturacin progresiva, aunque la gestin puede complicarse. - El algoritmo de insercin debe diferenciar las marcas de registros no utilizado y de registros reutilizable.

OTRAS TCNICAS DE RESOLUCIN DE COLISIONES


Definicin
- Todas las tcnicas que se describen tienen como objetivo reducir los problemas relativos a la aparicin de colisiones. - En la Doble Dispersin, si aparece una colisin se aplica una segunda funcin de dispersin, da como resultado un nmero, c, que no tiene ningn divisor comn con N. - La nueva direccin se obtiene sumando el valor c a la direccin original, hasta encontrar un hueco vaco. - En este sistema los sinnimos pueden estar muy separados, aumentando su coste de acceso. - La Saturacin Progresiva Enlazada forma una lista con los sinnimos, reduciendo el coste de acceso a stos, pero con inconvenientes, - Cada registro debe de poseer un campo en el que se almacene una direccin, - Toda direccin debe contener un registro con esa direccin, no puede contener un sinnimo de otra direccin. - Para resolver los problemas, se puede enlazar con un rea de Saturacin Separada. - Por su parte las Tablas de Dispersin se aplican sobre ndices, lo que permite manejar registros de tamao variable.

10

DISPERSIN EXTENSIBLE
Planteamiento
- Las tcnicas de dispersin descritas fijan el tamao del fichero, adems deben de reducir el nmero de colisiones, limitando la densidad de registros en el fichero. - Cuando no se conoce el tamao del fichero, y se desea eliminar la influencia de las colisiones, es necesario utilizar otras tcnicas. - Como en el caso de los ndices, la solucin se basa en la utilizacin de un rbol binario, pero su implementacin difiere sustancialmente. - En este caso, las hojas del rbol aparecen en un vector, el Directorio, y referencian a una pgina. - El directorio se puede almacenar en memoria, reduciendo a uno el nmero de accesos. - La funcin de dispersin es similar a las que se han descritos, pero en este caso no se calcula la divisin por el tamao del fichero. - El valor obtenido en la particin y acumulacin de la clave es la Direccin del registro. - Los primeros bits de esta direccin indican la pgina que almacenar el registro. - El objetivo es limitar el nmero de pginas que ocupa el fichero, por lo que la misma pgina puede ser referenciada por varias hojas. - Por su parte, la altura del rbol vara de modo dinmico, en funcin del nmero de registros que se vayan insertando. 11

DISPERSIN EXTENSIBLE
Desarrollo
- El directorio se compone de un Registro de Cabecera en el que se almacena la Altura del rbol, ms una entrada para cada una de las hojas del rbol. - La altura indica el nmero de bits de la direccin que deben ser utilizados para localizar la pgina asociada a un registro. - Una pgina puede ser referenciada por ms de una hoja del rbol. - Por esta razn, en cada pgina aparece un registro de cabecera que indica el nmero de bits que son comunes a las direcciones de los registros que contiene la pgina. - Cuando una pgina se encuentra llena y se desea insertar un nuevo registro, - Se crean dos nuevas pginas, cuyo valor en el registro de cabecera se toma sumando uno al valor de la pgina original. - Los registros se distribuyen entre las dos pginas, tal que se cumpla que los primeros bits de sus direcciones coincidan. - Si el valor de cabecera en la pgina original coincide con el valor en el directorio, es necesario aumentar la altura del rbol. - El borrado de un registro puede producir la operacin inversa, en donde se combinen dos pginas en una nica pgina, y en algn caso se puede reducir la altura del rbol.

12