Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manejo de Memoria y Organizacion de Archivos
Manejo de Memoria y Organizacion de Archivos
INDICE
INDICE ______________________________________________________________ 3 INTRODUCCIN ______________________________________________________ 4 1. Estructura Interna de los SMBD_______________________________________ 5 1.1. Manejo de Memoria[1] __________________________________________ 5 1.1.1. Acceso a bases de datos: Panorama General ______________________ 5 1.1.2. Clustering [5] ______________________________________________ 7 1.1.3. Organizacin de Archivos [5]__________________________________ 7 1.1.3.1. Organizacin Secuencial__________________________________ 7 1.1.3.2. Organizacin Directa ____________________________________ 8 1.1.3.3. Organizacin Indexada ___________________________________ 9 1.1.3.3.1. Organizacin aleatoria indexada _________________________ 10 1.1.3.3.2. Organizacin indexada secuencial _______________________ 11 1.1.3.3.2.1. Manejador de archivos de datos con una organizacin indexada secuencial 12 1.1.4. Estructuras de Datos ________________________________________ 14 1.1.4.1. Listas Invertidas _______________________________________ 14 1.1.4.2. Listas Enlazadas _______________________________________ 15 1.1.4.3. rboles B ____________________________________________ 16 1.1.4.4. rboles B+ ___________________________________________ 17 1.2. Casos de Estudio [12, 13] _______________________________________ 18 1.2.1. Sybase ___________________________________________________ 18 1.2.2. Oracle ___________________________________________________ 18 7. REFERENCIAS BIBLIOGRAFICAS _________________________________ 21
INTRODUCCIN
Actualmente, la informacin es una de los recursos mas importantes que posee cualquier organizacin. Es por ello, que la tecnologa ha evolucionado a sistemas que almacenan y
recuperan la informacin de manera eficiente. El campo de base de datos ha sufrido muchos cambios hasta el da de hoy.
En un principio se tenan sistemas de procesamiento de archivos, los cuales eran limitados por la fuerte dependencia entre los formatos de los archivos y los programas. A raz de estos surgen los sistemas manejadores de bases de datos, los cuales poseen muchas ventajas como son: la minimizacin de redundancia, control de concurrencia, recuperacin en caso de falla, etc. Los primeros sistemas manejadores de bases de datos estaban basados en estructuras jerrquicas y de red, pero debido a su complicacin surgen los modelos relacionales, que son usados ampliamente en la actualidad.
Todo este gran volumen de datos que almacenan las bases de datos es administrador por un grupo de personas denominadas Administrador de Bases de Datos (ABD). Es labor del ABD: Definir los esquemas de la bases de datos, por lo cual es importante conocer las diversas estructuras de almacenamiento que permiten una recuperacin eficiente. La informacin de los esquemas es almacenada en el diccionario de la base de datos. Proveer mecanismos de backup/restore que permitan la recuperacin de la base de datos ante cualquier particularidad. Garantizar que el acceso concurrente de mltiples usuarios no comprometa la integridad de la base de datos. Garantizar un tiempo razonable de respuesta ante la ejecucin de cualquier consulta, por lo que es importante la optimizacin de consultas. Proveer mecanismos de seguridad que permitan el acceso a los datos solo a personas autorizadas. Proveer mecanismos de integridad que representen restricciones que deben cumplirse sobre los datos.
En este documento estudiaremos cada una de las funciones que efecta un ABD.
Figura 1 Manejador de disco: Es un componente del sistema operativo subyacente encargado de todas las operaciones fsicas de E/S. Como tal, es evidente que necesite conocer las direcciones fsicas en el disco. Por ejemplo, cuando el manejador de archivos solicita la lectura de una pgina p, el manejador de disco necesita saber con exactitud donde est situada esa pgina en el disco fsico. Para el manejador de archivos, el disco es una coleccin lgica de conjuntos de pginas, cada uno de los cuales se compone de un grupo de pginas de tamao fijo. Cada conjunto de pginas se identifica mediante un identificador de conjunto de pginas nico. Cada pgina a su vez, se identifica mediante un nmero de pgina que es nico dentro del disco; los diferentes conjuntos de pginas no se solapan, es decir, no tienen pginas en comn. El manejador de disco entiende y mantiene la correspondencia entre nmeros de pgina y direcciones fsicas en el disco. Uno de los conjuntos de pginas, el conjunto de pginas de espacio libre, sirve como reserva de pginas disponibles. El manejador de disco se encarga de la asignacin de pginas a los conjuntos y la liberacin de pginas de los mismos cuando se los solicita el manejador de archivos. Entre las operaciones que puede realizar el manejador de disco con los conjuntos de pginas (que son las operaciones que puede solicitar el manejador de archivos) se encuentran: - Leer la pgina p del conjunto C. - Reemplazar la pgina p dentro del conjunto de pgina C. - Aadir una pgina nueva al conjunto de pginas C (es decir, obtener una pgina vaca del conjunto de pginas del espacio libre y devolver el nuevo nmero de pgina p). - Eliminar la pgina p del conjunto de pginas C (es decir, volver la pgina p al conjunto de pginas del espacio libre). Manejador de archivos: Utiliza los recursos del manejador de disco de manera tal que su usuario (el SMBD) puede percibir al disco como un conjunto de archivos almacenados. Cada conjunto de pginas contendr uno o ms archivos almacenados. Cada archivo almacenado se identifica mediante un nombre de archivo o identificador de archivo nico por lo menos dentro del conjunto de pginas que lo contiene, y cada registro almacenado, a su vez, se identifica, mediante un nmero de registro o identificador de registro nico al menos dentro del archivo
almacenado que lo contiene (En la prctica, los identificadores de registro suelen ser nicos no slo dentro del archivo que los contiene sino dentro de todo el disco, ya que por lo general se componen de un valor de nmero de pgina y algn valor nico dentro de esa pgina). En alguno sistemas, el manejador de archivos es un componente del sistema operativo subyacente (que en muchos casos no resulta ideal para el SMBD), en otros casos est empacado con el SMBD [4]. Entre las operaciones que puede realizar el manejador de archivos con los archivos almacenados son: - Leer el registro almacenado r del archivo almacenado A. - Reemplazar el registro almacenado r dentro del archivo almacenado A. - Aadir al archivo almacenado A un nuevo registro y devolver el nuevo identificador del registro r. - Eliminar el registro almacenado r del archivo almacenado A. - Crear un nuevo archivo almacenado A. - Destruir el archivo almacenado A. Con estas operaciones primitivas de manejo de archivos, el SMBD es capaz de construir y manipular las estructuras de almacenamiento.
1.1.3.1.
Organizacin Secuencial
En este tipo de organizacin, los registros son almacenados en la secuencia fsica en la que ellos van a ser procesados. Existen dos tipos posibles de organizacin secuencial. Si los registros son almacenados sin ningn orden especfico sino slo por su orden cronolgico de llegada el archivo correspondiente es una pila. Los archivos journal, los backups, los archivos de transacciones batch son del tipo pila. El segundo tipo de organizacin secuencial es aplicable en un ambiente de procesamiento de archivos, donde un gran porcentaje de los registros necesitan ser accesados frecuentemente. Un archivo con este tipo de organizacin secuencial tiene todos sus registros almacenados segn el valor de una clave que es normalmente la clave primaria.
Con un archivo organizado secuencialmente slo se puede usar acceso secuencial. El acceso aleatorio no es posible. Si un registro especfico va a ser consultado desde el archivo, todos los registros que lo preceden fsicamente deben ser recuperados antes de obtenerlo a l. Por esto, la organizacin secuencial no es recomendable para un ambiente en lnea donde se requiere un acceso rpido. En un archivo con este tipo de organizacin, los registros pueden ser aadidos slo al final del archivo. Cuando se actualiza la informacin de un registro existente, puede ser actualizado y reescrito en el mismo lugar fsico en el que se encontraba. Pero si se debe insertar un nuevo registro que va en la mitad del archivo, el archivo completo debe ser recopiado a una nueva localizacin fsica donde se coloca adecuadamente el nuevo registro. El borrado fsico de un registro existente tambin requiere que el archivo sea recopiado a una nueva localizacin fsica donde no se encuentra el registro borrado. Comparada con la organizacin directa e indexada, la organizacin secuencial hace un uso ms econmico del disco ya que no se requieren almacenar estructuras fsicas adicionales para acceder los registros y el archivo se mantiene tan compacto como se puede.
1.1.3.2.
Organizacin Directa
La organizacin directa da un performance excepcional en un ambiente on-line, donde se requiere acceso aleatorio. En la organizacin directa, cada registro es almacenado y recuperado en una direccin de disco sobre la base de una frmula que es aplicada a un valor de un campo del registro. Son posibles dos tipos de organizacin directa, una usando tcnicas de direccionamiento en base a una clave y la otra usando tcnicas hashing. Tcnicas de direccionamiento por clave: Con estas tcnicas una frmula es aplicada al valor del campo que es la clave primaria del registro y se obtiene un nmero relativo de registro nico. Por ejemplo, se tienen las siguientes ocurrencias del tipo registro EMPLEADO donde la clave primaria es el nmero de empleado: Emp 5 Emp 7 Emp 9 Emp 11 Emp 13 Emp 15 Emp 17 Emp 19 Emp 21 La frmula a aplicar sobre cada valor de nmero de empleado es: (NUMEMP - 3) / 2. Por ejemplo para el empleado 19 el resultado de la frmula sera 8. Entonces, cada valor de clave primaria da como resultado un nmero relativo de registro nico a ser usado. Slo se necesita un acceso al archivo para almacenar o recuperar un registro especfico. La rapidez provista por esta tcnica constituye una ventaja con respecto a la organizacin secuencial. En la mayora de los casos donde se aplica esta tcnica, se observa una gran dispersin entre las direcciones relativas generadas y las posiciones de memoria deben ser reservadas aunque no sean usadas. Usualmente se debe hacer un estudio comparativo entre velocidad de acceso y espacio de almacenamiento en disco necesario cuando se usa esta tcnica y a menos que se tenga una clave primaria que pueda ser convertida en un conjunto compacto de nmeros relativos, la tcnica de direccionamiento por clave no es una buena seleccin para una organizacin directa ya que aunque es un mtodo de acceso rpido, puede dejar muchos huecos, lo que desperdicia espacio en disco. Tcnicas Hashing: Son similares a las de direccionamiento por clave en que la frmula es aplicada a un campo del registro (usualmente la clave primaria) teniendo como resultado un valor usado como la direccin en disco para almacenar ese registro. La diferencia es que las tcnicas hashing no garantizan una direccin de almacenamiento nica. La frmula puede producir dos o ms registros con el mismo valor resultante. Esta tcnica permite utilizar el disco eficientemente mientras intenta retener la rapidez del acceso aleatorio (no ms de un acceso a disco para obtener un registro especfico) si se pueden minimizar los efectos de los resultados duplicados de la frmula. La funcin hashing es seleccionada de manera tal que los registros sean esparcidos lo ms uniformemente posible a lo
largo de todo el archivo, pero no quedan almacenados en una secuencia en particular. Cuando para dos o ms registros se obtiene como resultado el mismo valor de la funcin hashing se dice que se produce una colisin y los dos registros son llamados sinnimos. Dentro de las tcnicas hashing ms usadas se tienen: Tcnica hashing plegable (folding): Consiste en tomar el valor de la clave primaria, dividir sus dgitos en dos o ms grupos y sumar estos grupos de dgitos. El resultado de la suma es usado como la direccin en disco. La idea es tomar un valor de clave primaria que puede ser grande (C.I., por ejemplo) y transformarlo en nmeros pequeos que son direcciones en disco minimizando el nmero de colisiones a obtener. Tcnica hashing divisin-cociente: Consiste en dividir el valor de la clave primaria entre un nmero fijo, preseleccionado y el cociente de la divisin se usa como direccin en disco. Las investigaciones demuestran que el nmero seleccionado para hacer la divisin debe ser un nmero primo para disminuir el nmero de colisiones posibles. Manejo de colisiones: No importa lo bien seleccionado que est nuestra funcin hashing, siempre habr que enfrentar el problema de las colisiones y se debe buscar la mejor forma de manejarlo. Se sabe que el SMBD almacena registros en pginas que tienen capacidad para varios registros y que cada pgina tiene un nmero nico o direccin. Mas que usar un nmero relativo para almacenar y recuperar registros, la tcnica hashing usa el nmero de pgina para localizar los registros. Entre las formas de manejar las colisiones se tienen: Bsqueda lineal: Si la pgina en donde se debe almacenar un registro nuevo, segn la funcin hashing, no tiene espacio disponible, este se almacena en la prxima pgina que tenga espacio disponible. La ventaja de este mtodo es que los registros que tengan la misma pgina estarn almacenados en la misma pgina o en pginas cercanas pero si existen muchos registros que deben estar en una misma pgina y no caben all se necesitarn varios accesos a disco para obtenerlos y el problema puede empeorarse para archivos de gran tamao con altas densidades de ocupacin. reas de overflow: Este mtodo usa un rea de overflow separada para almacenar los registros que no pueden ser almacenados en la pgina especificada por la funcin hashing. Al momento de ubicar un registro que est en al rea de overflow, el sistema obtiene primero la pgina en donde debera estar almacenado. Al no ser encontrado all se comienza a obtener las pginas del rea de overflow hasta que el registro es encontrado. El mtodo de bsqueda lineal tiende a causar colisiones a futuros registros que tengan que ser ubicados en la pgina en la que ubico el registro sinnimo y si se mantienen el nmero de colisiones al mnimo, es ms rpido buscar en una rea de overflow pequea que buscar en el rea primaria. La eficiencia de ambos mtodos puede ser mejorada a travs del uso de una cadena de apuntadores (cadena de sinnimos o colisiones). Para esto cada pgina tiene un campo, llamado apuntador, que sirve como indicador de que una colisin ha ocurrido en esa pgina. En este campo se almacena el nmero de pgina en donde se encuentra almacenado el sinnimo. De este forma no es necesario hacer una bsqueda secuencial en el rea primaria para el mtodo de bsqueda lineal o no es necesario buscar en todas las pginas del rea de overflow para el mtodo de reas de overflow. En general, el rendimiento de una tcnica hashing especfica en una aplicacin dada depende de ciertos factores tales como: - Las caractersticas de la clave primaria usada como base de la funcin hashing. - La funcin hashing seleccionada - La tcnica de manejo de colisiones seleccionada. - El tamao de la pgina. Las pginas grandes tienden a disminuir el nmero de colisiones. - La densidad de ocupacin de la pgina. Si es muy alta (>80%) aumenta la probabilidad de colisiones. Si es muy baja (< 40%) se desperdicia espacio en disco.
1.1.3.3.
Organizacin Indexada
La organizacin indexada provee acceso eficiente a los registros de ambas formas, tanto secuencialmente como aleatoriamente; los registros lgicos son almacenados en un archivo llamado archivo de datos y existe un archivo separado llamado archivo ndice que contiene registros formados por el valor clave y la direccin del registro lgico que tiene ese valor de
clave. Se dice entonces que el archivo de datos est indexado por el archivo ndice. Muchos S.O. restringen el tipo de archivos ndices permitidos a aquellos definidos sobre valores nicos o claves primarias, estos son llamados ndices primarios, sin embargo tambin pueden permitir definir ndices sobre una clave secundaria no nica. Estos son llamados ndices secundarios. En general existen dos tipos de organizacin indexada posibles: Organizacin aleatoria indexada y organizacin secuencial indexada.
10
ha crecido hasta un punto tal que no cabe completo en memoria principal, se puede tratar como se trata al archivo de datos y se crea un ndice al ndice tenindose as un archivo ndice con varios niveles de indexacin o ndice multinivel. Un ejemplo de este caso se muestra en la siguiente figura: Nivel 2 del ndice Clave Direccin 124 2 256 1 311 1 315 3 405 1 412 3 522 3 567 2 611 2 Pgina Pgina 7 Archivo de Datos Registro Pgina Empleado 405 Empleado 256 Pgina 1 Empleado 311 Empleado 611 Empleado 124 Pgina 2 Empleado 567 Empleado 522 Empleado 412 Pgina 3 Empleado 315
Pgina 8
Pgina 9
El nivel 2 (ndice de bajo nivel) es igual al ndice original y el nivel 1 (ndice de alto nivel) es el nuevo ndice del ndice original. Los valores en el nivel 2 del ndice estn en secuencia y en el nivel 1 del ndice se tiene un registro para cada pgina del nivel 2 que contiene el mayor valor de clave almacenado en esa pgina y la pgina correspondiente (ndice no denso o sparse). El ndice de alto nivel se puede tener en memoria principal, buscar en l, devolver la pgina exacta del ndice de bajo nivel donde se encuentra almacenado ese registro, buscar en memoria principal el registro exacto en esa pgina de bajo nivel y finalmente devolver la pgina del archivo de datos que contiene el registro que se quiere acceder aleatoriamente. Solo dos accesos son necesarios para obtener de manera aleatoria un registro lgico. A medida que crezca el archivo de datos se pueden ir expandiendo los niveles de ndices tanto como sea necesario. Una ventaja adicional de este tipo de organizacin es que los registros en el archivo de datos no necesitan estar en secuencia. Esto simplifica en gran manera el hecho de insertar y borrar registros en el archivo de datos, ya que no se tienen que hacer reorganizaciones fsicas. Sin embargo, la programacin para realizar el manejo de ndices puede ser complicada. Afortunadamente la organizacin indexada es un estndar y el manejo de ndices es responsabilidad de las rutinas de acceso del S.O. o del SMBD.
11
El tener menos registros ndices implica tener archivos ndices de menor tamao, tiempos de bsqueda ms rpidos y pocos niveles de ndices a medida que crece el archivo de datos. Por otro lado, no se puede determinar la existencia de un registro con una clave especfica buscando slo en el archivo ndice ya que no es denso y para esto se debe acceder el archivo de datos, lo que implica un acceso a disco adicional en comparacin con la organizacin aleatoria indexada, pero al final, como existen menos pginas de ndices que en la organizacin aleatoria indexada y por esto se requieren menos accesos a disco, la organizacin secuencial indexada resulta ms eficiente. Con una organizacin indexada secuencial, si se quiere hacer un recorrido secuencial de los registros por su clave primaria no es necesario usar el ndice, ya que recorriendo el archivo de datos de forma secuencial se obtienen los registros en el orden deseado. El ndice se usa cuando se quiere realizar un acceso aleatorio. Si la organizacin indexada secuencial consume menos espacio y tiene un mejor rendimiento que la organizacin indexada aleatoria Por qu se usa esta ltima?. La organizacin aleatoria indexada permite ordenar el archivo de datos por los campos que sean necesarios, es decir, se pueden definir muchos ndices secundarios por diferentes claves usando esta organizacin. La organizacin indexada secuencial slo permite una nica secuencia, porque los registros en el archivo de datos slo pueden estar almacenados segn una sola secuencia (generalmente la de la clave primaria). As que todos los archivos secundarios tienen una organizacin aleatoria indexada o alguna otra estructura que permita relacionar el valor de una clave secundaria a los registros que contienen ese valor en el archivo de datos.
datos
con
una
Qu sucede cuando se quiere insertar un nuevo registro en un archivo de datos con una organizacin indexada secuencial cuando la pgina a utilizar ya est llena? Un mtodo para manejar inserciones en archivos bajo una organizacin indexada secuencial es el uso de un rea de overflow y una cadena de apuntadores. Si la pgina en donde se va a insertar el registro est llena, el registro se coloca en una pgina del rea de overflow y se establece una conexin con el rea de overflow mediante un apuntador para poder ubicarlo al momento de accederlo. En la siguiente figura se muestra un ejemplo: Archivo ndice Clave Direccin 311 1 412 2 611 3 Archivo de Datos Registro Pgina Apuntador de Localizacin Overflow Valor
Empleado 124 Empleado 256 Pgina 1 Empleado 311 Empleado 315 Empleado 405 Pgina 2 Empleado 412 Empleado 522 Empleado 567 Pgina 3 Empleado 611 Area de Overflow Registro Pgina
42
410
Valor
412
12
Como se ve en el ejemplo anterior se tiene un rea de overflow separada y dos nuevos campos en cada pgina de datos han sido aadidos. Uno de los nuevos campos es un apuntador de localizacin de overflow el cual enlaza la pgina del archivo de datos al prximo registro lgico en secuencia localizado en el rea de overflow. Este consiste de un nmero de pgina y un nmero de registro relativo dentro del rea de overflow. El otro nuevo campo representa el valor de la clave primaria que posee el registro apuntado en el rea de overflow. Los registros en el rea de overflow son almacenados segn la secuencia de llegada no segn la secuencia de la clave y por esto se requiere la cadena de apuntadores para el rea de overflow. Como es de suponerse, el rendimiento se degrada cada vez ms cuando se aaden ms registros al rea de overflow y comienza a crecer la cadena de apuntadores. Debido a esto, los archivos indexados secuenciales tienen que ser reorganizados peridicamente para que todos los registros sean colocados en el archivo de datos en la secuencia lgica correcta y en este momento se reconstruye el archivo ndice. El mtodo de acceso secuencial indexado de IBM (ISAM) usa la tcnica de rea de overflow sobre una base ms complicada, la cual toma en cuenta las caractersticas fsicas del disco. Un segundo mtodo para manejar las inserciones bajo una organizacin secuencial indexada es el uso de la tcnica de divisin de bloques. Con esta tcnica cuando se va a aadir un registro en una pgina que no tiene ms espacio disponible se usa la siguiente pgina disponible y los registros contenidos en la pgina llena ms el nuevo registro son divididos entre las dos pginas. Por ejemplo, dado el siguiente archivo de datos: Archivo de Datos Registro Pgina Empleado 124 Empleado 256 Pgina 1 Archivo ndice Empleado 311 Clave Direccin Empleado 315 311 1 Empleado 405 Pgina 2 412 2 Empleado 412 611 3 Empleado 522 Empleado 567 Pgina 3 Empleado 611 Se quiere insertar el registro del Empleado 350. Este registro debera ir en la pgina 2, pero como no hay ms espacio disponible en esa pgina se usa la pgina 4, que es la prxima disponible, y se divide el contenido de la pgina 2 entre la pgina2 y la pgina 4 quedando de la siguiente manera: Archivo de Datos Registro Pgina Empleado 124 Empleado 256 Pgina 1 Empleado 311 Empleado 315 Empleado 350 Pgina 2 Empleado 522 Empleado 567 Pgina 3 Empleado 611 Empleado 405 Empleado 412 Pgina 4 El archivo ndice tiene que cambiar para reflejar la pgina aadida en la secuencia apropiada y ste puede ser usado para acceder en forma secuencial el contenido del archivo de datos ya que ahora, segn esta tcnica, los registros lgicos no estn en secuencia por nmero
13
de pgina. Para poder recorrer el archivo de datos directamente cuando se quiere hacer un barrido secuencial del archivo de datos se puede aadir un campo adicional a cada pgina de datos que sirva como apuntador a la prxima pgina segn la secuencia lgica a seguir segn la clave primaria. El mtodo de acceso de almacenamiento virtual de IBM (VSAM) usa esta tcnica para manejar la organizacin secuencial indexada.
1.1.4.1.
Listas Invertidas
Anteriormente se dijo que una estructura de archivo que puede ser usada para representar claves secundarias es una organizacin aleatoria indexada y estos archivos son llamados ndices secundarios. Cuando se usa un ndice sobre un campo secundario se dice que se tiene una lista invertida o archivo invertido ya que se ha invertido el rol normal de un campo en el registro porque se encuentra el registro basndose en el valor del campo en vez de encontrar el valor del campo despus de haber localizado al registro. En el caso en que se definan listas invertidas sobre campos que pueden tener el mismo valor para diferentes registros en el archivo de datos la estructura de la lista consiste de un primer nivel de ndice que tiene una entrada por cada valor diferente del campo de ndice existente en el archivo de datos. Para cada una de estas entradas se tienen un apuntador al nivel 2 del ndice donde comienza la lista de nmeros de registros relativos con ese valor de campo ndice. Por ejemplo, para el siguiente archivo de datos se quiere construir una lista invertida por el campo PCCOST, entonces se tiene lo siguiente: Archivo Empleado NUMEMP COSTO 124 4500 256 0 311 2175 315 2175 405 0 412 0 522 567 611 0 4500 1429 # relativo de registro 1 2 3 4 5 6 7 8 9
La estructura de lista invertida sobre el campo COSTO sera: Nivel 2 del ndice # relativo de registro 2 5 6 7 9 3 4 1 8
14
Si se tienen listas invertidas para todos los campos del archivo se dice que se tiene un archivo invertido completamente. Si slo algunos campos tienen asociados listas invertidas se dice entonces que se tiene un archivo invertido parcialmente. Las listas invertidas pueden usarse para responder ciertas consultas sin tener que acceder el archivo de datos, como por ejemplo: - Cuntos empleados tienen costos 0? - Cuntos registros tienen costos mayores que 5000? ... Con la utilizacin de listas invertidas la recuperacin de registros es muy eficiente pero entre las desventajas que tienen se cuenta el espacio requerido para almacenar los ndices multinivel y el tiempo extra requerido para actualizar las listas invertidas por lo que las listas invertidas son creadas slo para los campos sobre los cuales se necesita tener un acceso rpido. El SMBD ADABAS utiliza este esquema de indexacin.
1.1.4.2.
Listas Enlazadas
Una lista enlazada consiste de un campo aadido al final de cada registro lgico en el archivo de datos que tiene un valor de localizacin del prximo registro lgico en la secuencia. Esta es otra estructura usada para representar claves secundarias. Por ejemplo, la lista enlazada asociada al archivo anterior sobre el campo COSTO sera de la siguiente forma: Head Pointer COSTO: 2 Archivo Empleado NUMEMP COSTO 124 4500 256 0 311 2175 315 2175 405 0 412 0 522 567 611 0 4500 1429 Apuntador sobre COSTO 8 5 4 1 6 7 9 3 # relativo de registro 1 2 3 4 5 6 7 8 9
Externo a los registros del archivo EMPLEADO se tiene un campo adicional que sirve como ancla o apuntador al comienzo de la lista que apunta al primer registro de la secuencia segn el campo COSTO. En el ejemplo anterior el ltimo registro de la cadena apunta a NILL, pero otro enfoque es que el ltimo registro apunte al primer registro de la cadena. Este refinamiento se llama lista enlazada circular o anillo. Se pueden tener tantas listas enlazadas como sean necesarias y cada una de ellas requiere espacio adicional y tiempo extra para actualizarlas. Una lista enlazada puede ser usada como una alternativa a las listas invertidas para representar claves secundarias a travs de una estructura llamada Multilista. Esta es un ndice similar al nivel 1 de ndices de la estructura de lista invertida. El ndice multilista tienen un registro por cada valor diferente de la clave secundaria y est ordenado por estos valores pero en vez de apuntar al nivel 2 de ndices, cada registro multilista tiene un apuntador ancla que comienza la cadena de registros que tienen un valor de la clave secundaria particular. Por ejemplo, una multilista sobre el campo COSTO para el archivo EMPLEADO quedara de la siguiente manera:
15
Archivo Empleado NUMEMP COSTO 124 4500 256 0 311 2175 315 2175 405 0 412 0 522 567 611 0 4500 1429
# relativo de registro 1 2 3 4 5 6 7 8 9
ndice Multilista sobre el campo COSTO Clave # relativo de reg. 0 2 1429 9 2175 3 4500 1
Si se tienen mltiples claves secundarias se pueden usar estructuras multilistas para cada una. Comparando las multilistas con las listas invertidas, los ndices multilistas son ms fciles de crear y mantener ya que el nivel 2 de ndices de las listas invertidas tiene un nmero variable de entradas. Por otro lado, los apuntadores de las multilistas deben ser mantenidos mientras que con las listas invertidas no hay apuntadores que mantener, pero el mantenimiento a nivel de multilistas en el archivo de datos no implica una reorganizacin fsica a nivel de pginas sino un mantenimiento a nivel de apuntadores, por los que son ms fciles de mantener que las listas invertidas. Una de las principales desventajas de las multilistas con respecto a las listas invertidas es que es ms difcil y toma ms tiempo responder ciertas consultas que se pueden hacer con las listas invertidas sin tener que acceder el archivo de datos.
1.1.4.3.
rboles B
Los rboles B [6] son una de las estructuras de datos ms ampliamente usadas en el procesamiento de base de datos hoy en da. Se usan principalmente para el almacenamiento y manipulacin de ndices. El rbol B es una forma especial de una estructura general de rbol. Un rbol est formado por nodos conectados por arcos. En el tope del rbol existe un nico nodo raz y sus descendientes lo siguen. Un nodo que no sea la raz junto con todos sus descendientes comprenden un subrbol del rbol original. Cada nodo tiene exactamente un padre excepto el nodo raz que no tiene padre. Los ancestros de un nodo son todos los nodos, incluyendo la raz, que conectan al nodo a la raz. Un nodo hoja no tiene hijos. Un nodo gemelo es un nodo relacionado con otros nodos por el hecho de que tienen el mismo padre. La raz se define como el nivel 0 del rbol, los hijos de la raz son el nivel 1 y as sucesivamente. La altura del rbol es el mximo nmero de niveles en el rbol. Un rbol balanceado es aquel en donde la profundidad de cada subrbol de nodos difiere a lo ms en uno. El orden o grado de un rbol es el nmero mximo de hijos que puede tener un nodo del rbol. Cuando se usa este tipo de estructura de datos para los archivos ndices, el objetivo es minimizar los accesos a disco cuando se quiere hacer un acceso aleatorio a un registro especfico. Si se usa una estructura de rbol y cada nodo es una pgina de disco lo que se quiere alcanzar para lograr el objetivo anterior es un rbol balanceado con la menor cantidad de niveles que sean posibles. Una estructura de rbol que satisface bien esta condicin es el rbol B. En el ambiente de base de datos un rbol B es un ndice multinivel donde cada uno de sus nodos es una pgina ndice y tienen el siguiente formato general: Apun 1 Clave 1 Apun 2 Clave 2 Apun 3..... Cada apuntador apunta a la pgina ndice en el nivel inferior siguiente, cada clave es el valor de la clave de un registro lgico en el archivo de datos. Cada valor de clave (combinacin de valor clave y direccin) que exista en el archivo de datos va a aparecer solo una vez en la estructura de rbol. El nmero mximo de apuntadores en la pgina es el orden del rbol B, de aqu que el nmero mximo de apuntadores determine el nmero mximo de hijos que puede tener el nodo. En cada nodo del rbol B los valores claves que contienen estn en secuencia Un rbol B de orden n tiene las siguientes propiedades:
16
La raz es una hoja o tiene al menos dos hijos. Cada nodo, excepto la raz y las hojas, tienen entre n/2 y n hijos. Todas las hojas aparecen al mismo nivel. Un nodo no hoja con k hijos tiene k-1 claves. Por ejemplo, vase el siguiente rbol de orden 5: * 425 * 0 - 0 - 0 -
* 140 * 325 * 0 - 0 -
* 405 * 412 * 0 - 0 -
* 450 * 522 * 0 - 0 -
Las ventajas de los rboles B son: Permiten un rpido acceso aleatorio a los registros de datos, el cual implica en el peor de los casos, tantos accesos a disco como niveles tenga el rbol B. Las inserciones y eliminaciones son razonablemente eficientes. La utilizacin del disco es aceptable ya que por cada nodo se va a tener ocupado mnimo el 50 % de su capacidad. El archivo de datos es mantenido en secuencia por la clave primaria por lo que el acceso secuencial es posible y eficiente.
1.1.4.4.
rboles B+
El rbol B+ [7] es una variacin del rbol B. La diferencia esta en que en un rbol B+, los apuntadores de datos se almacenan slo en los nodos hojas del rbol, por lo cual la estructura de los nodos hoja difiere de la de los nodos internos. Los nodos hoja del rbol B+ suelen estar enlazados para ofrecer un acceso ordenado a los registros segn el campo de bsqueda. Los nodos internos del rbol B+ corresponden a los dems niveles del ndice. Algunos valores del campo de bsqueda de los nodos hoja se repiten en los nodos internos del rbol B+ con el fin de guiar la bsqueda. La estructura de los nodos internos de un rbol B+ de orden p se define como sigue: 1. Todo nodo interno tiene la forma: <Apun 1, Clave 1, ..., Apun q-1 Clave q -1> donde q <= p, cada Apun i es un apuntador de rbol y cada Clave i es un valor de la clave. 2. Dentro de cada nodo interno, Clave 1 < Clave 2 < ... < Clave q - 1. 3. Para todos los valores X del campo de bsqueda del subrbol al que apunta Apun i, tenemos Clave i 1 < X <= Clave i, para 1 < i < q, X <= Clave i, para i = 1, y Clave i - 1 < X, para i = q 4. Cada nodo interno tiene cuando ms p apuntadores de rbol. 5. Cada nodo interno, con excepcin de la raz, tiene por lo menos (p/2) apuntadores de rbol. El nodo raz tiene por lo menos dos apuntadores de rbol si es un nodo interno.
17
6. Un nodo interno con q apuntadores, donde q <= p, tiene q 1 valores de campo de bsqueda. La estructura de los nodos hojas de un rbol B+ de orden p es como sigue: 1. Todo nodo interno tiene la forma: <Clave 1, Apun 1, ..., Clave q -1, Apun q-1, Apun siguiente> donde q <= p, cada Apun i es un apuntador de datos, cada Clave i es un valor de la clave y Apun siguiente apunta al siguiente nodo hoja del rbol B+. 2. Dentro de cada nodo hoja, Clave 1 < Clave 2 < ... < Clave q 1, donde q <= p. 3. Cada Apun i es un apuntador de datos que apunta al registro cuyo valor de clave de bsqueda es Clave i, o a un bloque de archivo que contiene dicho registro (o a un bloque de apuntadores que apuntan a registros cuyo valor del campo de bsqueda es Clave i, si el campo de bsqueda no es clave). 4. Cada nodo hoja tiene por lo menos (p/2) valores. 5. Todos los nodos hoja estn en el mismo nivel.
1.2.2. Oracle
Oracle se conoce como un sistema de gestin de base de datos relacional, que adems admite estructuras O.O. (Orientadas a Objetos), como mtodos y tipos de datos abstractos. Tanto si se utiliza estructuras relacionales como estructuras OO la base de datos Oracle almacena los datos en archivos. Internamente, existen estructuras en la base de datos que realizan una asignacin lgica entre los datos y los archivos, lo que permite almacenar por separado diferentes tipos de datos. Estas divisiones lgicas se denominan espacios de tablas. Cada espacio de tablas consta de uno ms archivos, llamados archivos de datos, que se almacenan en un disco. Un archivo de datos solo puede pertenecer a un nico espacio de tablas.
18
Una instancia de base de datos (tambin conocida como servidor) es un conjunto de estructuras de memoria y procesos de segundo plano que acceden a un conjunto de archivos de la base de datos. Las estructuras de datos de la base de datos de Oracle pueden dividirse en 3 categoras: 1. Interna de la Base de Datos. 2. Interna a la rea de Memoria. 3. Los externos a la Base de Datos. Entre los internos a la base de datos podemos nombrar: tablas, columnas, restricciones, tipos de datos, ndices, agrupaciones, agrupaciones hash, procedimientos, funciones, vistas, etc. Un ndice es una estructura de base de datos que utiliza el servidor para localizar rpidamente una fila de una tabla. Existen 3 tipos de ndices: ndice de agrupacin. ndice de tabla. ndice de mapa de bits. Los elementos de los ndices de tabla y de agrupacin de una base de datos Oracle se almacena mediante un mecanismo de rbol binario. Las operaciones de E/S necesarias para localizar un valor clave son mnimas y, una vez encontrado, se utiliza el identificador de fila para acceder directamente a una fila. Las agrupaciones hash utilizan funciones hash sobre la clave de agrupacin de fila para determinar la ubicacin fsica en la que debe almacenarse una fila. Los internos a la rea de memoria constan de los siguientes elementos: rea Global del Sistema (SGA). Cach del buffer del bloque de datos. Cache del diccionario. Buffer del registro de rehacer. rea de SQL compartida. rea de contexto. rea global del sistema (PGA). Los externos a la Base de Datos constan de los siguientes elementos: Los registros de rehacer. Los archivos de control. Los archivos de traza. Los archivos de alertas. En Oracle versin 8 el manejo de memoria se hace por rboles Balanceados, las tablas organizadas mediante ndices almacenan las columnas de una tabla en los nodos de hoja de la estructura de ndice B-tree de Oracle8. De esta manera se reducen los requisitos globales de almacenamiento cuando la mayora de las columnas se indexan almacenndolas una sola vez, no en un ndice y en una tabla aparte. Las tablas organizadas mediante ndices tambin reducen el tiempo de acceso al recuperar todas las columnas desde una ubicacin, en lugar de hacerlo desde dos. El rendimiento de PL/SQL aumenta, al igual que el rendimiento al realizar llamadas a SQL desde PL/SQL, y viceversa. Para facilitar la administracin, mejorar la disponibilidad de los datos crticos y aumentar el rendimiento de consultas y DML, Oracle8 permite dividir las tablas y los ndices en particiones, o partes ms pequeas, en funcin de un rango de claves. La divisin en particiones es una estrategia del tipo divide y vencers que mejora la administracin y el rendimiento en sistemas de data warehouse y de procesamiento de transacciones on line. Puesto que las particiones funcionan independientemente las unas de las otras, los datos contenidos en una tabla dividida de esta manera estn disponibles aunque una o ms particiones no estn disponibles. Las particiones tambin facilitan la gestin de tablas grandes al desglosar las tareas administrativas en otras ms pequeas, que a su vez pueden realizarse en paralelo. Por ltimo, la divisin de una tabla o un ndice en particiones puede mejorar el rendimiento de las operaciones realizadas con los datos, al eliminar las particiones no utilizadas del plan de ejecucin de la operacin.
19
20
7. REFERENCIAS BIBLIOGRAFICAS
[1] Date C.J. An Introduction to Database Systems. 7th edition, Addison-Wesley, 2000. [2] Gio Wiederhold. Database Design. 2a edicin. Nueva York, N.Y.; McGraw-Hill (1983). [3] T.H. Merret. Relational Information Systems. Reston, Va: Reston Publishing Company Inc. (1984). [4] Michael Stonebraker. Operating System Support for Database Management. CACM 24, nm 7. Julio 1981. [5] Pratt P. and Adamski J. Database Systems Management and Design. Third Edition. Boyd & Fraser publishing company. 1994. [6] R. Bayer y C. McCreight. Organization and maintenance of Large Ordered Indexes. Acta Informtica 1, nm 3 (1972). [7] Elmasri / Navathe. Sistemas de Bases de Datos. Conceptos fundamentales. Addison Wesley. Segunda Edicin 1997. [8] szu, Tamar and Valduriez, P. Principles of Distributed Database Systems. 2nd Ed. Prentice Hall, 1998. [9] Korth H., Silberschatz A, Sudarshan, S. Fundamentos de bases de datos. Tercera edicin. McGraw-Hill. 1998. ISBN 84-481-2021-3 [10] Leon-Hong B., Plagman B., Data Dictionary Directory Systems. J. Wiley, 1982. [11] Fernandez E., Summers R., Wood C. Database Security and Integrity. Addison Wesley, 1981. [12] Loney, Kevin. ORACLE 8. Manual del administrador. McGrawHill. Primera Edicin 2000.
FUENTES ELECTRNICAS
[13] Sybase. Fast Track to Adaptive Server Enterprise 11.9.2. 2001. URL: www.sybase.com.
21