You are on page 1of 19

Tema 1.

Diseo de bases de datos


1 Ficheros tradicionales vs bases de datos ___________________________________________ 2
1.1 1.2 Problemas de los ficheros __________________________________________________________2 Concepto de base de datos ________________________________________________________3

Los ficheros __________________________________________________________________ 5


2.1
2.1.1 2.1.2 2.1.3

Organizacin de archivos __________________________________________________________5


Ficheros de registros secuenciales _________________________________________________________ 5 Ficheros de registros de longitud fija _______________________________________________________ 6 Archivos con registros de longitud variable __________________________________________________ 6

2.2
2.2.1 2.2.2 2.2.3 2.2.4

ndices y clculo de direcciones _____________________________________________________8


Cmo se evalan las tcnicas de indexacin? ________________________________________________ 8 Archivos secuenciales indexados ___________________________________________________________ 8 Archivos indexados de rbol B+ ___________________________________________________________ 11 Direcciones dinmicas: clculo de direccin extensible (hashing) ________________________________ 15

Ejercicios ___________________________________________________________________ 19

Tema 1. Diseo de bases de Datos

Bases de Datos

1 Ficheros tradicionales vs bases de datos


En cualquier organizacin existe informacin que necesariamente ha de ser manejada por distintos departamentos o secciones. As, por ejemplo, en una empresa, los departamentos de contabilidad, compras y ventas necesitarn, para desarrollar su actividad, procesar datos referentes a clientes, ventas y materiales. En un sistema basado en archivos tradicionales, cada uno de estos departamentos tendr la informacin almacenada en ficheros de uso exclusivo, por lo que nos encontraremos un esquema parecido al de la figura, con tres archivos de materiales, dos de proveedores y dos ms de clientes

Ilustracin 1. Sistema de archivos tradicionales.

1.1 Problemas de los ficheros


El esquema de almacenamiento puede llegar a plantear una serie de problemas: Redundancia de datos. Es el primero y ms evidente de todos. Al estar los datos personales de los clientes, materiales y proveedores repetidos en dos o ms archivos, est claro que habr entradas duplicadas (incluso triplicadas) en todo el sistema. Actualmente este problema se soluciona colocando un disco con mayor capacidad (ya que la relacin almacenamiento costo hoy no es relevante), sin embargo, hasta hace unos aos, cuando aparecieron las primeras bases de datos (en la dcada de los sesenta) los sistemas de almacenamiento masivo tenan un costo ms elevado, por lo que haba que mirar muy bien por cada bit de ms que sobrara o faltara.

Tema 1. Diseo de bases de Datos

Bases de Datos

Inconsistencia de datos. Vamos a imaginar que un proveedor del sistema anterior cambia de direccin y se lo comunica slo al departamento de Compras y que a nadie de compras se le ocurre la feliz idea de comunicrselo al personal responsable de Ventas y Contabilidad. En este caso ya no slo tendremos los valores duplicados sino que para un mismo proveedor tendremos dos direcciones distintas en dos ficheros diferentes. Fiabilidad de datos. Muy relacionado con lo anterior, cuando no hay manera de saber si los datos que tenemos en un fichero son reales (al tener datos distintos del mismo cliente) no se puede saber cul de los datos es el ms fiable. Adems se deben introducir mecanismos para comprobar que los datos sean reales, por ejemplo que no existan clientes que realicen compras y que nacieron en 1855. Limitacin al acceso de los ficheros. La informacin contenida en los ficheros slo es accesible mediante las aplicaciones desarrolladas para los distintos departamentos. Estas cubren las necesidades de informacin de la organizacin en la mayora de las ocasiones, pero frecuentemente se requiere la emisin de un listado o la ejecucin de un proceso no contemplado en el anlisis del sistema de la informacin y, por tanto, no incluido en la aplicacin. De esta manera, el responsable Ventas puede tener necesidad de un listado de existencias ordenado por precios, cuando la aplicacin slo lo proporciona por cdigo de referencia. La nica opcin es la de pedir al departamento de desarrollo o a la empresa que desarroll el software que incluya esta opcin, con el consiguiente coste econmico y esperando que el listado no corriera prisa. Error con los accesos concurrentes. Almacn posee un terminal que decepciona las entradas de materiales recibidos y otro que controla la salida de los mismos. En un momento determinado, las existencias de cable coaxial de banda base son de 500 metros y se produce una entrada al almacn de 300 metros ms y una salida de 200 metros, al mismo tiempo. Estos dos accesos concurrentes al fichero podran ocasionar un error en la actualizacin, pudiendo perder el acceso relativo a la entrada de material (por lo que tendramos ms cable del computado) o en la salida de material (por lo que tendras computado ms material del que en realidad existe en el almacn) Problemas con la privacidad de datos. Algunos datos no deben ser accesibles por la totalidad de los usuarios del sistema. La informacin del departamento de Contabilidad, por contener datos sensibles (nmeros de cuentas de clientes y proveedores, valores de la empresa), no debe ser conocida por los usuarios de Ventas o de Compras. Seguridad en los datos. Est muy relacionada con la privacidad de los datos. En los archivos tradicionales, existen importantes dificultades para la modificacin y la eliminacin de registros. Integridad de los datos. La existencia de un fichero de clientes en Ventas y otro en Compras no significa que ambos tengan la misma descripcin de registro, ni la misma informacin cualitativa o cuantitativa. Ambos tendrn datos comunes (CIF, nombre, direccin, telfono) y datos no comunes que afectarn exclusivamente al departamento en que se encuentra. La informacin tiene que estar almacenada sujeta a unas restricciones de formato que facilite el desarrollo de aplicaciones sobre los ficheros existentes. As, se deberan de establecer mecanismos para evitar encontrarnos con datos numricos en campos como el nombre del cliente o valores negativos en el campo que indica las existencias de un determinado material.

1.2 Concepto de base de datos


Con el fin de alcanzar determinados objetivos, las empresas no escatiman a la hora de recoger, clasificar, procesar e intercambiar datos. En un mundo en el que la informacin es poder, las organizaciones consideran que una buena poltica de datos puede resultar vital a la hora de obtener ventajas competitivas. Hasta finales de los aos setenta la informacin se almacenaba sin ningn tipo de control, en ficheros secuenciales (si la empresa estaba informatizada) y/o en registros de papel (en otros casos). En esta poca, se empezaron a desarrollar tecnologas orientadas al manejo de datos, surgiendo, de esta manera, los primeros sistemas gestores de bases de datos o SGBD (o Data Base Management System, DBMS). Estos sistemas fueron concebidos como un conjunto de datos y un conjunto de programas de aplicacin utilizados para acceder a los datos y actualizarlos de forma segura. 3

Tema 1. Diseo de bases de Datos

Bases de Datos

Desde entonces, la tecnologa de bases no ha dejado de actualizarse. Los primeros sistemas estaban basados en una serie de ficheros relacionados a base de sndices o punteros y almacenados de forma secuencial, que era la forma de acceso ms fcil cuando se trabajaba con cintas magnticas. Surgen as ISAM (Indexed Sequential Access Method - Mtodo de Acceso Secuencial Indexado) y, posteriormente, VSAM (Virtual Storage Access Method Mtodo de Acceso a Almacenamiento Virtual) de IBM, con una tecnologa fcil y barata de implementar que an hoy se usa en sistemas gestores de bases de datos relacionales. Poco despus aparecen los primeros SGBD, que son sistemas centralizados o distribuidos que facilitan la definicin de bases de datos, la seleccin de las estructuras de datos y la bsqueda de datos, bien de forma interactiva bien mediante el empleo de un lenguaje de programacin (acceso a datos empotrado). Los primeros SGBD, como IMS de IBM, estaban basados en el modelo jerrquico. Les siguieron los modelos en red, como IDMS (Integrated Data Management System Sistema de Gestin de Datos Integrado) desarrollado para mainframes por B. F. Goodrich. Finalmente, la tecnologa sigui las ideas de Edgar Frank Ted Codd y sus bases de datos relacionales, que se han ido implantando paulatinamente gracias, sobre todo, a su sencillez conceptual. Una base de datos se puede definir como un conjunto de datos interrelacionados, almacenados con la mnima redundancia y fcilmente accesibles para aplicaciones y usuarios de la forma ms eficaz posible. Una base de datos es vista como un gran repositorio de informacin disponible para cualquier elemento de una organizacin que podr acceder a este almacn con independencia de dnde se encuentre almacenada y de cul vaya a ser su uso. La funcin de un SGBD es mantener la informacin de una base de datos y hacerla disponible para el usuario (o aplicaciones).

Ilustracin 2. El Sistema Gestor de Base de Datos.

Tema 1. Diseo de bases de Datos

Bases de Datos

2 Los ficheros
En un fichero, la informacin se organiza en registros y, en cada registro, a cada dato individual que compone un registro se denomina campo.
Si consideramos, por ejemplo, el da que viniste a completar tu matrcula tuviste que rellenar un formulario, pues ese formulario es un registro y, cada dato que escribiste en l, un campo.

Lo ms fcil, para tardar menos en encontrar un registro en un fichero, es realizar algn tipo de ordenacin. El campo que permite diferenciar un registro de otro (por el que sera ms fcil ordenar el archivo) se denomina clave primaria o principal. Al resto de campos que permiten una ordenacin se les llama clave secundaria.
Si pensamos en un archivador, las fichas de los empleados se pueden ordenar alfabticamente por el primer apellido, junto con el segundo y con el nombre. Este conjunto de campos no es una buena clave principal, sobre todo si se tiene en cuenta que dos empleados pueden tener el mismo nombre. Sin embargo, una buena clave principal puede ser el DNI o el nmero de la Segundad Social.

Para poder utilizar un archivo, sea de datos, ejecutable, librera, etc. tiene que estar en memoria principal, que, adems, ya est parcialmente ocupada por el sistema operativo. Cuando se trabaja con ficheros, el volumen de informacin contenida en un archivo puede excesivamente grande como para mantenerlo en memoria principal. Es normal, incluso suele ser funcin del sistema operativo (memoria virtual), que la informacin de un fichero que est en memoria principal es slo la que hace falta en un momento determinado. Si hiciera falta algn dato que no est cargado, habr que realizar un acceso al dispositivo en el que se encuentra alojado el fichero. A la cantidad mnima de informacin que transfiere de/hacia el dispositivo se denomina registro fsico o bloque. El registro fsico no tiene porqu coincidir con el registro lgico, de hecho lo ms normal es que no ocupen lo mismo y que en un bloque se alojen varios registros lgicos. A la cantidad de registros lgicos que caben en un bloque se denomina factor de blocaje, siendo el bloqueo de registros a la accin de agrupar en un bloque los registros lgicos que en l se pueden almacenar.

2.1 Organizacin de archivos


Para la implementacin fsica de una base de datos, hay que tener en cuenta una serie de estructuras bsicas: Archivo de datos. Es donde se almacena la base de datos. Diccionario de datos. Almacena informacin acerca de la estructura de la base de datos, actualizaciones, usuarios, niveles de acceso, vistas, etc. ndices. Permiten el acceso rpido a la informacin. Bitcora. Almacena informacin acerca de los cambios producidos en la base de datos, con el fin de poder recuperarla con el menor ndice de prdida de datos (integridad).

El sistema operativo puede proporcionar al sistema algunos servicios bsicos que el SGBD puede aprovechar como base. Alguno de esos componentes son: Gestor de archivos. Se encarga de asignar el espacio en disco y la estructura de datos que se usa para representar la informacin almacenada en el disco. FAT, FAT32 y NTFS son los sistemas de gestores de archivos clsicos de Windows, mientras que los i-nodos se usan en sistemas basados en Unix. Gestor del buffer. Transfiere la informacin del disco a la memoria principal. Algunos SGBD poseen su propio gestor de archivos, como por ejemplo Oracle.

2.1.1 Ficheros de registros secuenciales


Los registros se encuentran almacenados de forma contigua (uno a continuacin del otro) sin dejar ningn espacio entre ellos y sin ningn ndice que apunte a las direcciones de cada registro. Esta es una organizacin tpica para gestionar volmenes de informacin en dispositivos no direccionables (como tarjetas magnticas), lo no implica que la organizacin secuencial sea tambin utilizada en soportes de acceso directo. La

Tema 1. Diseo de bases de Datos

Bases de Datos

secuencia que siguen los registros dentro del fichero puede estar determinada por el valor de algn campo del registro o simplemente por el momento en que este fue inscrito en el fichero. Las operaciones que se pueden realizar son: Aadir. La adicin de datos slo se puede realizar al final de fichero, justo detrs del ltimo registro, como si fuera una cola. Consulta / recuperacin. Se realiza de forma secuencial, es decir, para leer un registro que ocupa la posicin N es necesario leer previamente los N 1 registros anteriores. Operaciones de actualizacin del fichero (insercin, modificacin y eliminacin). Estas acciones no son fciles en un fichero secuencial. La actualizacin de un fichero secuencial obliga a escribirlo de nuevo totalmente, ya que no puede haber espacios entre los registros y la adicin siempre se hace al final del fichero. La actualizacin se realiza por medio del programa que usa el fichero, que usar como entrada el fichero que se va a actualizar y un fichero temporal intermedio denominado fichero de movimientos. El resultado final es un nuevo fichero con las actualizaciones. El fichero de movimientos es tambin secuencial y almacenar las modificaciones a realizar en el fichero.

2.1.2 Ficheros de registros de longitud fija


Los registros contenidos en los ficheros tienen una longitud fija, es decir, el mismo nmero de bytes. Tiene dos grandes problemas: 1) Si se quiere eliminar un registro (R2), se perder el espacio correspondiente a ese registro. Adems, es posible que no sepamos que el espacio liberado est disponible para ser reutilizado. Para solucionar este problema se podra dejar al principio del archivo una cabecera en la que se almacena un puntero con el primer registro borrado, en un registro borrado habr un puntero al siguiente registro liberado, encadenando, de esta manera, una lista de registros sin ocupar. Lo importante en esta configuracin es no confundir la marca de final de la cabecera con parte de los datos contenidos en el registro. Ahora si se quiere insertar un nuevo registro en el fichero, slo hay que ponerlo en el primer espacio libre y actualizar los punteros. En el caso de que no haya ningn espacio libre, el nuevo registro se insertar al final del archivo.

Ilustracin 3. Ficheros con registros de longitud fija.

2) Si el bloque est completamente ocupado y no cabe un nuevo registro, este habr que repartirlo en dos bloques, de manera que para acceder al registro deberemos llevar a memoria principal dos bloques, con la consiguiente prdida de tiempo.

2.1.3 Archivos con registros de longitud variable


Este tipo de ficheros surgen por varios motivos: 6

Tema 1. Diseo de bases de Datos

Bases de Datos

1) El tipo de registros contenidos en un fichero pueden ser distintos. Esto no ocurre en las bases de datos relacionales, pero es normal para las bases de datos jerrquicas y en red. 2) la longitud de los campos es variable (no ocupa el nombre de una persona que el nombre de otra). 3) Existen campos con valores repetidos (dos personas que vivan en el mismo domicilio). Para conseguir solucionar estos problemas podemos elegir entre varias alternativas: A) Cadena de bytes. Fsicamente se implementa de varias formas: a. La ms habitual es aadir a cada registro, al principio, un campo que indique el tamao del registro, de forma que primero se accede a este campo y, despus, para acceder a los datos, a los bytes indicados en el primer campo. Tiene el gran problema del espacio utilizado, ya que para aprovechar el espacio liberado por un registro se necesita otro de igual o menor tamao, provocando una gran fragmentacin de la informacin.

Ilustracin 4. Campo que indica el tamao en ficheros de longitud variable.

b. Marca de final de de registro. Consiste en colocar una marca especial (un carcter o una sucesin de bits) que determina el final de cualquier registro del archivo.

Ilustracin 5. Marca de final de registro en ficheros de longitud variable.

Los principales problemas que presenta la tcnica de cadena de bytes es la dificultad de reutilizacin el especio libre dejado por un registro borrado y la falta de espacio que pueden tener los registros que no paran de crecer, provocando su continua reubicacin en disco. B) Utilizar registros de longitud fija para representar registros de longitud variable. En este caso podemos encontrar varias opciones: a. Espacio reservado. Hay que decidir de antemano cul va a ser la longitud mxima que va a tener cada registro (N) y se dispone la estructura de archivo con registros de longitud fija N. Si al registro le sobran bytes, se sitan al final del registro y se marcan como no usados. El sistema funciona si todos los registros tienen un tamao prximo a N. b. A base de punteros. Se utilizan punteros para cuando la informacin es superior al tamao del registro de longitud fija. Veamos dos posibilidades: i. Los registros de longitud fija tienen un campo adicional que sirve como puntero. Si algn registro necesita otro campo adicional, su puntero indicar cul es la posicin del siguiente registro de longitud fija que contiene datos adicionales. Este sistema supone que existen unos campos bsicos que se dan en todos los registros y campos que pueden aparecer repetidos, como se puede observar en la siguiente figura:

Ilustracin 6. Longitud variable con longitud fija a base de punteros (opcin 1).

Tema 1. Diseo de bases de Datos

Bases de Datos

Como se puede observar, existe un desperdicio claro de espacio y abre la posibilidad a la duplicidad innecesaria de informacin. ii. Bloque ancla y bloque de desborde. El bloque ancla tiene la primera secuencia de cada tipo de registro. Si hay algn registro con un campo de varios valores, el resto irn al bloque de desborde y se encadenarn, tanto el registro del bloque ancla con el correspondiente primero del bloque de desborde, como entre s los posibles registros del bloque de desborde correspondientes al mismo registro del bloque ancla. Esta estructura es ms difcil de gestionar, pero se desperdicia slo el espacio de los punteros.

Ilustracin 7. Longitud variable con longitud fija a base de punteros (opcin 2).

2.2 ndices y clculo de direcciones


Las bases de datos son grandes almacenes de informacin y, como ya hemos visto, lo ms normal es que eta se almacene en registros. En la mayora de las ocasiones, cuando se recupera la informacin de una base de datos no se recupera un archivo entero sino slo los elementos que sean necesarios. A esta pequea porcin de datos se le denomina consulta y lo ideal es que el sistema las resuelva de forma totalmente transparente, es decir, que el usuario no se entere de cmo se recupera la informacin. As, por ejemplo, para recuperar de la base de datos de un videoclub las pelculas alquiladas por un usuario entre dos fechas no ser necesario no slo recuperar todos los datos de todos los usuarios sino, ni siquiera, todos los datos del usuario en cuestin. Para posibilitar este tipo de acceso se disean unas estructuras adicionales asociadas a los archivos. Estas estructuras permiten acceder a los datos de forma similar a como se usa el ndice de un libro. En ocasiones nos interesa tener ms de un ndice para un archivo (un ndice por directores, otro por ttulos, etc.). Llamamos llave de bsqueda a uno o varios atributos que sirven para acceder a la informacin.

2.2.1 Cmo se evalan las tcnicas de indexacin?


Para evaluar la validez de una tcnica de indexacin se deben de tener en cuenta aspectos como: Tiempo de acceso. Tiempo que se tarda en encontrar un dato concreto. Tiempo de insercin. Tiempo que se emplea en insertar un dato nuevo en el archivo. Equivale al tiempo de bsqueda de un hueco ms el tiempo de escritura ms el tiempo de reorganizacin de los ndices correspondientes. Tiempo de eliminacin. Tiempo utilizado para borrar un dato. Es la suma del tiempo de localizacin del dato ms el tiempo de borrar ms el tiempo de reajuste de los ndices. Espacio extra. Es el espacio en disco que se necesita para almacenar los ndices.

2.2.2 Archivos secuenciales indexados


Este tipo de estructura se usa cuando se puede utilizar cualquier campo como llave de bsqueda. Cuando se montan varios ndices con diferentes llaves de bsqueda, llamamos ndice primario al campo que sirve para ordenar el archivo. Al resto de ndices se les denominan ndices secundarios. Por norma general (y aunque an sea demasiado pronto para entenderlo) el campo sobre el que se monta el ndice primario suele coincidir con la clave primaria del archivo (de la tabla en las bases de datos relacionales). Es el tipo de organizacin ms antigua de las usadas por los sistemas de datos y estn especialmente diseadas para aplicaciones que requieran tanto un procesamiento de la informacin como un acceso aleatorio a registros individuales.

Tema 1. Diseo de bases de Datos

Bases de Datos

Ilustracin 8. Sistema de archivo secuencial tradicional.

El problema se plantea cuando se desea realizar la insercin de un nuevo registro, ya que hay que conservar el orden. Una solucin sera reorganizar el archivo, copiando en un archivo auxiliar la parte de fichero que queda por debajo del nuevo registro, insertar el nuevo registro y aadir, posteriormente, los registros del fichero auxiliar. Sin embargo, esta solucin es muy costosa, tanto en tiempo como en espacio de memoria principal. Otra solucin consiste en aprovechar el puntero para implementar una zona de desbordamiento que mantenga la secuencia lgica marcada por la llave. Esta estrategia de insercin se expone en la siguiente figura:

Ilustracin 9. Insercin en ficheros secuenciales indexados.

Para esta estructura, hay que intentar que los bloques de desdoble estn prximos al archivo secuencial en disco, para que las lecturas de datos sean ms eficientes, evitando, en la medida de lo posible, varios accesos a disco. Si se realizan muchas inserciones en un disco, es posible que la mayor parte del fichero se encuentre en la zona de desbordamiento, en cuyo caso se debe de incluir algn mecanismo para reestructurar el archivo. El archivo ndice sirve para acceder de forma directa a la informacin que interesa. Bsicamente existen dos tipos de ndices: 9

Tema 1. Diseo de bases de Datos -

Bases de Datos

ndice denso. En el archivo ndice va a existir un registro por cada valor diferente de la llave de bsqueda en el archivo de datos. Este registro ndice contiene el valor de la llave de bsqueda y un puntero al registro del archivo que la contiene. La bsqueda del valor de la clave en el fichero ndice se realiza de forma secuencial y ser especialmente costoso si el conjunto de valores de la llave es grande. De igual manera, una vez encontrada la llave, el acceso al valor concreto en el fichero de datos se hace de forma secuencial. ndice escaso. En el archivo ndice existen menos registros que valores distintos de la llave de bsqueda. Por tanto, no todos los valores de la llave de bsqueda estn en el archivo ndice. Para buscar un registro, localizamos secuencialmente el primer registro ndice con el valor de llave de bsqueda mayor o igual que el valor de la llave de bsqueda que estamos localizando. Se empieza por el registro al que apunta el registro ndice y se siguen los punteros secuencialmente del archivo de datos hasta encontrar el registro deseado.

Como se puede apreciar, el ndice denso es ms rpido pero ocupa ms espacio en disco y exige un mantenimiento adicional para inserciones y borrados.

Ilustracin 10. Archivo organizado con ndice denso.

Ilustracin 11. Archivo organizado con ndice escaso.

Para mejorar el rendimiento de la base de datos se pueden montar estructuras donde el archivo ndice (escaso) se construye de firma que existe un registro ndice por cada bloque de informacin, de esta forma, una vez que el bloque requerido est en memoria, el tiempo que se necesita para examinar el bloque completo es insignificante. Interesa mantener todo el ndice en memoria principal mientras se estn realizando las consultas sobre el archivo. Esto es slo posible para ndices que ocupen poco espacio, mientras que los vistos anteriormente crecen en la misma medida en que crezca el archivo que indexan. La solucin consiste en montar ndices escasos en ms de un nivel, es decir, se trata el ndice como si fuera otro archivo y se construye un ndice escaso sobre l, como se aprecia en la figura 12.

10

Tema 1. Diseo de bases de Datos

Bases de Datos

Ilustracin 12. ndice multinivel.

La forma de localizar un dato es repetir el proceso para ndices escasos pero para dos niveles. Si el archivo es muy grande, puede que el ndice exterior no quepa en memoria. En este caso se aade otro nivel ms a la estructura y as sucesivamente.

2.2.3 Archivos indexados de rbol B+


Es la estructura ms utilizada en los sistemas gestores de bases de datos, ya que mantiene organizados los datos eficientemente aunque el archivo crezca o se reduzca. El nombre de rbol B+ se debe a que, primero, tiene una estructura jerrquica en forma de rbol; segundo, el rbol est siempre equilibribado (Balanced B), es decir, cualquier camino de la raz del rbol a sus hojas es siempre la misma; y, por ltimo, su primera implementacin se realiz con el lenguaje de programacin C++.

Ilustracin 13. Estructura general de un rbol B+ de orden 2.

Un rbol B+ se define por su orden (N), que es el nmero mnimo de llaves referenciadas en cada nodo, es decir nmero ms pequeo de hijos que puede tener un nodo. En funcin del orden del rbol podemos decir que: Cada nodo puede contener entre n y 2n valores llave, siendo una excepcin el nodo raz que puede tener menos de n valores de llave. Cada nodo slo puede ser una hoja (nodo sin hijos) o es un nodo con m+1 hijos, donde m es el nmero de valores llave que contiene el nodo padre. Los valores de disco son referenciados slo por los nodos hoja.

11

Tema 1. Diseo de bases de Datos

Bases de Datos

Ilustracin 14. Ejemplo de rbol B+.

La estructura de un nodo hoja en un rbol B+, como se puede apreciar en la figura 14, es un vector como el siguiente:

Ilustracin 15. Estructura del nodo hoja de un rbol B+.

Los valores de la llave de bsqueda dentro de un nodo se guardan en un determinado orden, de modo que si i < j, entonces Ki < Kj. En un nodo hoja, Pi apunta a cualquier registro del archivo con un valor de llave de bsqueda Ki, o a una cubeta de punteros cada uno de los cuales apunta a un registro del archivo con valor de llave de bsquda Ki (aunque esto se utiliza si la llave de bsqueda no es la llave primaria del archivo y no est ordenado por el orden de la llave de bsqueda) o bien al primer registro de una lista (como en los ndices escasos). Los nodos del rbol B+ que no son hojas forman un ndice escaso de varios niveles para los nodos hoja. La estructura de los nodos que no son hoja es la misma que la de los nodos hoja, excepto que todos los punteros apuntan a nodos del rbol (en lugar de al registro correspondiente al archivo). Esta estructura de los nodos que no son hoja es:

Ilustracin 16. Estructura de un nodo que no es hoja de un rbol B+.

Cada Bi apunta a otro nodo que puede ser hoja o no hoja (entonces ser otro subndice). Si un nodo no hoja contiene m punteros y 1 < i < m, entonces el puntero Bi apunta a la estructura que contiene los valores de la llave de bsqueda menores que Ki y mayores o iguales que Ki-1. El puntero Bm apunta a la parte del subrbol que contiene aquellos valores de la llave de bsqueda mayores o iguales a Km-1. Finalmente, el puntero B1 apunta a la parte del subrbol que contiene aquellos valores de la llave de bsqueda menores que K1. Para realizar una consulta en los registros cuyo valor de llave es K se examen los nodos no hoja empezando por la raz del rbol B+: 12

Tema 1. Diseo de bases de Datos Si K < K1, se sigue la bsqueda por B1. Si K K2n, se sigue la bsqueda por B2n+1. Si Ki-1 K Ki, se sigue la bsqueda por Bi.

Bases de Datos

Busquemos en el rbol de la Ilustracin 14. Ejemplo de rbol B+. el registro cuya llave de bsqueda es 18:

Ilustracin 17. Ejemplo de bsqueda en un rbol B+.

Al llegar a un nodo hoja el puntero Pi no seala el registro buscado, donde Ki = K. Al procesar una consulta se atraviesa un camino en el rbol desde la raz hasta un nodo hoja. Si hay K valores de la llave de bsqueda en el archivo, el camino no es ms largo que logn(K). En la prctica, significa que slo se necesita tener acceso a unos pocos nodos aunque el archivo sea muy grande. En la mayora de los casos, un nodo se hace para que tenga el mismo tamao que un bloque de disco. As, aunque tengamos un milln de valores de la llave de bsqueda en el archivo, una bsqueda requerir el acceso a entre 3 y 6 nodos. Para la insercin y el borrado de registros son un poco ms cuidadosas porque no se puede olvidar que el rbol tiene que estar, en todo momento, balanceado, lo que significa que se tendr que reestructurar en el caso que se pierda el equilibrio. Para insertar un nuevo registro, suponiendo que la llave no existe, se sigue el siguiente algoritmo: Se determina el nodo hoja L en el que se debe hacer la insercin. Si cabe en el nodo (es decir ni hay como mximo 2n-1 registros), se inserta en el punto que corresponda. Si no cabe en el nodo (si en el nodo ya existen 2n registros): o Se crea un nuevo nodo a la derecha de L. o Se redistribuyen las 2n+1 llaves de bsqueda (incluida la que se va a insertar), de manera que las n primeras se dejan en el nodo L y las dems en el nuevo nodo que se acaba de crear. o El nuevo nodo se pone como hijo del mismo padre que el nodo L, insertando la primera llave de bsqueda del nuevo nodo en el nodo padre. Esta insercin puede ocasionar una nueva particin, en este caso del nodo padre, y seguir recursivamente hasta llegar hasta la raz.

Ejemplo. Vamos a construir un rbol B+ de orden 2 en el que se van a insertar el siguiente conjunto de valores de llave de bsqueda, respetando siempre el orden de entrada: 8, 18, 4, 14, 6, 16, 2, 12, 7, 9, 1, 19, 5, 21, 13, 3, 15, 17, 10, 20 y 11. Completamos el nodo raz con los primero cuatro valores (ordenados, claro est): El siguiente dato provoca la particin (insertamos 6, 16 y 2):

13

Tema 1. Diseo de bases de Datos

Bases de Datos

Al insertar la llave de bsqueda 12, provocamos otra particin (insertamos 12, 7 y 9)

Con la llave de bsqueda 1, volvemos a la carga (insertamos 1, 19 y 5)

Nueva particin al insertar la llave 21 (metemos 21, 13, 3, 15 y 17):

Las cosas se vuelven a complicar al insertar la llave 10 (introducimos 10, 20 y 11):

Para borrar, suponiendo que la llave corresponde a un nico registro, se sigue el siguiente mtodo: Se localiza el nodo hoja L donde se encuentra la llave que se desea borrar y se elimina. Si el nodo L queda con menos de n llaves (el orden del rbol): o Consideramos el nodo hermano (hijo del mismo nodo padre) de la derecha, salvo si el nodo L es el hijo de la derecha del nodo padre, en cuyo caso se considera el nodo hermano de la izquierda (tambin se puede seguir la estrategia inversa, tratando, en este caso, los hechos de modo similar). o Si en el hermano cabe todas la llaves del nodo L, se almacenan en l y se elimina el nodo L y se ajustan las llaves de los subndices superiores. o Si en ese hermano no caben todas las llaves del nodo L, se redistribuyen las m llaves (las n-1 llaves del nodo L junto a las de su hermano), de forma que las m/2 primeras llaves se ponen a la izquierda y, las dems, en el nodo de la derecha. Por ltimo se arreglan los valores de las llaves de los nodos superiores. 14

Tema 1. Diseo de bases de Datos

Bases de Datos

Siguiendo con el ejemplo anterior, vamos a borrar las llaves de bsqueda 8, 2 y 3. Borramos la llave 8, provocando la fusin con el hermano de la izquierda (por la excepcin), y 2:

Borramos la llave 3, provocando un autntico cambio en el rbol:

2.2.4 Direcciones dinmicas: clculo de direccin extensible (hashing)


La desventaja fundamental de los ndices es que debemos acceder a una estructura adicional (el fichero de ndices) para localizar los datos. Con las funciones de clculo de direccin se evita el uso de estructuras de ndices, ya que la direccin de la cubeta 1que contiene un puntero al dato deseado se obtiene directamente calculando su direccin mediante una funcin sobre el valor de la clave de bsqueda del registro que se quiere localizar. Formalmente, K representa el conjunto de todos los valores de la clave bsqueda y, B, el conjunto de todas las direcciones de la cubeta. Un funcin de asociacin H (de Hash) es una funcin que va de K a B. Frente a las funciones de clculo de direcciones estticas, cuyo principal problema es que el rendimiento se va degradando conforme crece la base de datos, encontramos las funciones de clculo de direccin dinmicas, que permiten modificar, de manera dinmica la funcin de asociacin para compensar el crecimiento o reduccin de la base de datos. El clculo de direccin extensible (solucin intermedia entre el hashing y los ndices) maneja los cambios en el tamao de la base de datos dividiendo y fusionando cubetas conforme la base de datos crece y se reduce. Como resultado se mantiene la eficiencia de espacio y, como la reorganizacin se realiza nicamente a nivel de cubeta, el tiempo extra requerido es aceptablemente bajo. Los parmetros a tener en cuenta son: Se llama M al nmero mximo de bits que se consideran para direccionar las cubetas, por tanto se podrn disponer de 2M cubetas como mximo, ya que la expresin suele hacerse en binario. Este valor M, establecido a priori, ser determinado de acuerdo con el nmero mximo de registros que se vayan a almacenar. N es el nmero de registros que caben en cada cubeta. El nmero mximo de registros que pueden ser almacenados es, por tanto, N*2M.

Una cubeta es un conjunto de bloques que estn encadenados a base de una cabecera de bloque, con la particularidad de que cada bloque slo puede aparecer en una cubeta.

15

Tema 1. Diseo de bases de Datos

Bases de Datos

Ilustracin 18. Esquema general del clculo de direccin extensible.

Se va a disponer de una llave de acceso al archivo, a la que se le aplicar una funcin de direccionamiento y se transformar en una direccin de M bits. Estos M bits se irn utilizando de izquierda a derecha segn se necesite en cada momento. En el momento de creacin del archivo, slo se utilizar un bit. Cuando se crea el archivo se crea una tabla, llamada tabla de direcciones o directorio, que ser la forma de acceder al archivo. El esquema general de esta organizacin se expone en la Ilustracin 18. Esquema general del clculo de direccin extensible. La letra i indica que se requieren i bits de la asociacin H(K) para determinar la cubeta concreta para K. este nmero cambiar segn el archivo vaya creciendo o disminuyendo. Aunque se requieren i bits para encontrar la entrada correcta en el directorio, varias entradas consecutivas de la tabla pueden apuntar a la misma cubeta. Todas esas entradas tendrn un prefijo comn de asociacin, pero la longitud de este prefijo puede ser menor que i. Por tanto, a cada cubeta se le asocia un entero que indica la longitud del prefijo comn de asociacin. En la figura anterior, el entero asociado a la cubeta j se representa como ij. El nmero de entradas del directorio que apunta a la cubeta es 2i-ij. La forma de localizar la cubeta correspondiente al valor de la llave de bsqueda K es mirar en la entrada del directorio correspondiente a los i bits (empezando por la izquierda) de H(K) y seguir el puntero. Para insertar un nuevo registro con valor de la clave de bsqueda K, en primer lugar se sigue el proceso explicado anteriormente para localizar la cubeta j que le corresponde. Si la cubeta no est llena, entonces se puede insertar la informacin en esa cubeta. Si la cubeta est llena, habr que partirla y redistribuir los registros ya existentes ms el nuevo. Hay determinar si el directorio debe o no crecer, es decir, si se necesita o no aumentar el nmero de bits que se usan en la asociacin. Esto se va a determinar en funcin de los valores de i e ij: Si i = ij entonces slo una entrada en el directorio apunta a la cubeta j, por tanto es necesario aumentar el tamao del directorio, de forma que pueda incluir punteros a las dos cubetas que resulta de la particin de la cubeta j. Esto se hace considerando el siguiente bit de la funcin de asociacin, con lo que se incrementa en un el valor de i y, por tanto, se duplica el tamao del directorio. Cada entrada del directorio se divide en dos, manteniendo ambas el puntero de la entrada original. En este momento hay dos entradas apuntando a la cubeta j. Se crea una nueva cubeta z y se hace que la segunda entrada que apunta a j apunte ahora a z. Los valores de ij e iz pasan a valer i. se vuelve a insertar (reasociar) todos los registros de la cubera j (con el nuevo valor de i), que podrn ir tanto a j como a z y se intenta de nuevo insertar el registro de valor K. Generalmente este nuevo intento tendr xito, pero si todos los registros de la antigua j han ido a parar a la misma cubeta nueva y a esa precisamente va a parar tambin el nuevo registro (es decir, todos los registros tienen el mismo prefijo de asociacin), entonces no se podr insertar y habr que volver a partir la cubeta como se ha descrito. Si i > ij entonces hay ms de una entrada del directorio que apunta a j y, por tanto, no es necesario aumentar el tamao del directorio. Se asigna una nueva cubeta z y se actualizan los valores ij e iz al original ms uno. Es necesario reajustar las entradas del directorio que apuntaban antes a j, para ello se dejan la primera mitad apuntando a j y la segunda mitad se hace que apunten a z. se vuelven a insertar (reasociar) todos los registros de la antigua j y se intenta de nuevo la insercin del nuevo registro y, si falla, se vuelve a aplicar el caso anterior (i = ij) o este (i > j) de nuevo. 16

Tema 1. Diseo de bases de Datos

Bases de Datos

Ejemplo. Si H(x) = x mod 7 con M = 3 y el tamao de la cubeta es 4 (N = 4), inserta en el orden dato los siguientes valores de clave: 15, 30, 14, 32, 45, 8, 28, 7, 21, 72, 75 y 9. Tabla de asociacin (x mod 7)
X 15 30 14 32 45 8 28 7 21 72 75 9 H(X) 1 2 0 4 3 1 0 0 0 2 5 2 Binario 001 010 000 100 011 001 000 000 000 010 101 010

Insertamos los primeros 4 valores (hasta llegar a N), insertamos 15, 30, 14 y 32:

Insertamos el valor 45, aumentando el valor del directorio y los bits de prefijo usados en las cubetas:

Al insertar otro valor que empiece por 0 tenemos que crear una nueva cubeta (valores 8 y 28):

Insertamos el resto de valores (7, 21, 72, 75 y 9)

17

Tema 1. Diseo de bases de Datos

Bases de Datos

Para borrar se sigue un procedimiento similar, pero teniendo en cuenta que al eliminar el registro de la cubeta puede que esta se quede vaca, implicando la fusin de cubetas y la reduccin del directorio.
Por ejemplo, vamos a pensar que eliminamos el valor marcado con una flecha de la siguiente figura:

Veamos cmo se queda el hash:

18

Tema 1. Diseo de bases de Datos

Bases de Datos

El problema principal que presenta esta tcnica es que se debe realizar una estimacin previa del nmero N. Si una vez implementado el sistema, existen ms de N registros con el mismo valor de direccionamiento, habra que crear cubetas de desbordamiento, con la prdida de rendimiento que supone, o bien cambiar los valores de N y M y reorganizar la estructura. La ventaja principal de esta tcnica es que el rendimiento no disminuye conforme crece el archivo, adems, se requiere un espacio extra adicional mnimo, ya que la tabla de direcciones contiene punteros y las cubetas se van asignando de forma dinmica.

3 Ejercicios
1. Existen otras arquitecturas de ficheros, busca informacin acerca de estructuras como: a. Archivos de registros organizados en bloques. b. Tcnicas de almacenamiento para los SGBD relacionales. c. Estructura de la informacin en Oracle. 2. Explica la forma en que se borran registros en ficheros secuenciales indexados (no tengas en cuenta los ndices). 3. Busca estrategias de insercin y borrado para archivos secuenciales indexados con ndice denso. 4. Construye un ndice de rbol B+ para el siguiente conjunto de valores llave de bsqueda: 5, 10, 15, 20, 25, 30, 35, 40, 45 y 50, suponiendo que el orden del rbol es N = 2. 5. Inserta, en el rbol del ejercicio anterior, las llaves de bsqueda 22, 24 y 21. Borra, del rbol final, las llaves de bsqueda 40 y 35. 6. Inserta en un ndice de rbol B+ las llaves de bsqueda 99, 18, 10, 20, 5, 65, 12, 9, 25, 92, 52 y 68. Elimina las llaves de bsqueda 65, 20, 12 y 5. Considera que el rbol B+ es de orden 2. 7. Determina la estructura de clculo de direccin extensible para un archivo en el que se utiliza la funcin de clculo de direccin H(x) = x mod 9, el tamao de la cubeta es de 4 registros y los valores de bsqueda son: 15, 10, 11, 17, 6, 13, 2, 16, 14, 0, 9, 7, 4, 1, 12, 24, 20, 33 y 8.

19

You might also like