Definición de base de datos y manejador de DBMS
Justificación y contexto de bases de datos
Para empezar, necesitaríamos entender cuál es la diferencia entre utilizar bases de datos y no utilizarlas. De hecho esto nos conducirá a saber qué es una base de datos.
Desde el inicio del uso de las computadoras hasta la década que inicia en 1960, los datos estaban supeditados a los programas de aplicación, esto es, se concebía un programa junto con los archivos de datos que este programa requería para operar, los archivos se diseñaban de acuerdo a las necesidades del programa y en general era ese programa el que recuperaba o actualizaba información de esos archivos.
En esta visión resultaba muy fácil que los mismos datos o hechos de la empresa estuvieran representados en muchos archivos distintos, y del mismo modo no resultaba difícil que se presentaran valores distintos en un mismo momento en las múltiples ocurrencias de los archivos, provocando en no pocas ocasiones que cuando un interesado en un dato lo preguntaba a sus subordinados que a su vez utilizaban programas distintos con archivos distintos, obtenía respuestas distintas y los sistemas o aún las computadoras perdían credibilidad ante los interesados en la información.
Todo esto que parece un relato del pasado, es asombrosamente actual: en muchas empresas no son ahora archivos de datos supeditados a programas pero sí son documentos de procesadores de texto, hojas de cálculo y hasta las peligrosamente llamadas bases de datos de escritorio, los que invitan a las múltiples ocurrencias de los hechos y datos de la empresa, generalmente debido al sentido de propiedad de la información de un individuo o grupo.
El enfoque de bases de datos surge en la década iniciada en 1960, ha evolucionado notablemente hasta nuestros días, y es contrario a lo que acabamos de describir. En este enfoque se busca diseñar los datos de una empresa para describirla en su totalidad. De hecho el nivel de totalidad que en realidad se instrumente determinará tanto la calidad de la base de datos como su complejidad y exigencia de recursos. A diferencia del enfoque anterior, las porciones de información que determinados usuarios, grupos de usuarios o aplicaciones requieren acceder o actualizar se definen como subconjuntos de la información contenida en la base de datos.
¿Qué es entonces una base de datos?
Podemos empezar por pensar en una base de datos como una colección de archivos interrelacionados, pero debemos tener cuidado con no caer en el enfoque de los archivos supeditados a programas o a individuos. Para esto es necesario que la base de datos sea cuidadosamente diseñada para que los archivos interrelacionados que la integran contengan la menor repetición posible de datos y hechos, y al mismo tiempo abarquen las necesidades de la empresa.
Los archivos que integran una base de datos tienen ciertas restricciones: son archivos en los que aparecen múltiples ocurrencias de un mismo tipo de registro. Como ejemplos, en una base de datos podríamos tener:
Un archivo que represente a los alumnos puede tener registros constituidos por la matrícula, el nombre, la dirección, y el teléfono de manera que cada registro represente a un alumno.
Un archivo que represente a los cursos, cuyos registros tengan un número de curso, la clave de la materia, el semestre, el salón, el nombre del profesor y un número de grupo.
Un archivo que represente la inscripción de un alumno a un curso, en el que cada registro tenga la matrícula del alumno y el número de curso.
Desde el punto de vista de la forma de almacenar los archivos, la definición anterior no nos proporciona una diferencia substancial entre una base de datos y un sistema de archivos en el que podríamos simplemente contar con uno o mas directorios y ahí almacenar nuestra colección de archivos interrelacionados. La diferencia la hace el uso de un sistema administrador de bases de datos.
¿En qué casos es conveniente usar bases
de datos?
De lo que hemos presentado hasta el momento, es visible que en todas las situaciones en las que la información que se maneja presenta varios archivos interrelacionados, y sobre todo es requerida por varios usuarios o aplicaciones, conviene diseñar e instrumentar una base de datos.
Como ejemplo de este tipo de requerimientos de información podemos considerar una base de datos para cualquier empresa de manufactura, incluyendo información de ventas, compras, almacenes, producción, calidad, mantenimiento y finanzas.
Otro factor decisivo es el volumen de datos: aunque se tratara de muy pocos archivos, si el número de registros es muy grande. Como ejemplos podemos considerar un padrón electoral o el directorio telefónico de una ciudad. En estos casos, el uso de bases de datos y DBMS es lo más conveniente.
Sistemas de gestión de base de datos
Un sistema de gestión de base de datos (DBMS database management system) consiste en una colección de datos interrelacionados y un conjunto de programas para acceder a esos datos. La colección de datos, normalmente denominada base de datos, contiene información acerca de una empresa determinada. El objetivo primordial de un DBMS es proporcionar un entorno que sea a la vez conveniente y eficiente para ser utilizado al extraer y almacenar información de la base de datos.
Los sistemas de bases de datos están diseñados para gestionar grandes bloques de información. La gestión de datos implica tanto la definición de estructuras para el almacenamiento de información como la provisión de mecanismos para la gestión de la información. Además, los sistemas de bases de datos deben mantener la seguridad de la información almacenada, pese a caídas del sistema o intentos de accesos no autorizados. Si los datos van a ser compartidos por varios usuarios, el sistema debe evitar posibles resultados anómalos.
La importancia de la información en la mayoría de las organizaciones, y por tanto el valor de la base de datos, ha llevado al desarrollo de una gran cantidad de conceptos y técnicas para la gestión eficiente de los datos. En este capítulo presentamos una breve introducción a los principios de los sistemas de bases de datos.
Objetivos de los sistemas de base de datos
Considérese parte de una empresa bancaria de ahorros que guarda la información sobre todos los clientes y cuentas de ahorro en archivos de sistemas permanentes en el banco. Además, el sistema tiene diversos programas de aplicación que permiten al usuario manejar los archivos, incluyendo:
Un programa para hacer cargos o abonos a una cuenta.
Un programa para añadir una nueva cuenta.
Un programa para obtener el saldo de una cuenta.
Un programa para generar estados mensuales.
Estos programas de aplicación los han escrito programadores de sistemas en respuesta a las necesidades de la organización bancaria.
Según surge la necesidad, se añaden nuevos programas de aplicación al sistema. Por ejemplo, supóngase que una nueva ley del Gobierno permite al banco de ahorros ofrecer cuentas de cheques. Como resultado, se crean nuevos archivos permanentes que contienen información acerca de todas la cuentas de cheques que mantiene el banco, y puede que sea necesario escribir nuevos programas de aplicación. Así, según pasa el tiempo, se añaden más archivos y programas de aplicación al sistema.
El típico sistema de procesamiento de archivos descrito arriba está apoyado por un sistema operativo convencional. Los registros permanentes se almacenan en varios archivos, y se escribe un número de diferentes programas de aplicación para extraer registros de y añadir registros a archivos apropiados. Este sistema tiene un número de desventajas importante.
Redundancia e inconsistencia de los datos. Puesto que los archivos y los programas de aplicación son creados por distintos programas durante un período largo de tiempo, es probable que los archivos tengan diferentes formatos y los programas pueden estar duplicados en varios sitios (archivos). Por ejemplo, la dirección y el número de teléfono de un cliente determinado pueden aparecer en un archivo que consta de registros de cuentas de ahorros y en un archivo que consta de registros de cuentas de cheques. Esta redundancia aumenta los costos de almacenamiento y acceso. Además, puede llevar a inconsistencia de los datos, esto es, las diversas copias de los mismos datos no concuerdan entre sí. Por ejemplo, una dirección cambiada de un cliente puede estar reflejada en los registros de cuentas de ahorros pero en ningún sitio más del sistema. Resultados de inconsistencia de los datos.
Dificultad para tener acceso a los datos. Supóngase que uno de los gerentes del banco necesita averiguar los nombres de todos los clientes que viven dentro del código postal de la ciudad 78733. El gerente pide al departamento de procesamiento de datos que genere la lista correspondiente.
Puesto que esta solicitud no fue prevista cuando se diseñó el sistema original, no hay ningún programa de aplicación a mano que la satisfaga. Existe, sin embargo, un programa de aplicación para generar la lista de todos los clientes. El gerente tiene ahora dos elecciones: O bien coger la lista de clientes y extraer la información necesaria manualmente, o pedir al departamento de procesamiento de datos que ponga a un programador de sistemas a escribir el programa de aplicación necesario. Obviamente, ninguna de las dos alternativas es satisfactoria.
Supóngase que se escribe un programa semejante y que, varios días después, el mismo gerente necesita arreglar esa lista para incluir sólo aquellos clientes con un saldo de 10000 dólares o más. Como se esperaba, no existe un programa que genere esa lista. De nuevo, el gerente tiene las dos opciones anteriores, ninguna de las cuales es satisfactoria.
Lo que se trata de probar aquí es que esos entornos convencionales de procesamiento de archivos no permiten recuperar los datos necesarios de una forma conveniente y eficiente. Deben desarrollarse sistemas de recuperación de datos para uso general.
Aislamiento de los datos. Puesto que los datos están repartidos en varios archivos, y éstos pueden tener diferentes formatos, es difícil escribir nuevos programas de aplicación para obtener los datos apropiados.
Anomalías del acceso concurrente. Para mejorar el funcionamiento global del sistema y obtener un tiempo de respuesta más rápido, muchos sistemas permiten que múltiples usuarios actualicen los datos simultáneamente. En un entorno así, la interacción de actualizaciones concurrentes puede dar por resultado datos in- consistentes. Considérese una cuenta bancaria A, con 500 dólares. Si dos clientes retiran fondos (digamos 50 y 100 dólares, respectivamente) de la cuenta A casi al mismo tiempo, el resultado de las ejecuciones concurrentes puede dejar la cuenta en un estado in- correcto (o inconsistente). En particular, la cuenta puede contener 450 o 400 dólares, en vez de 350 dólares. Para prevenir esta posibilidad, debe mantenerse alguna forma de supervisión en el sistema. Puesto que se puede acceder a los datos por medio de diversos programas de aplicación diferentes que no han sido previamente coordinados, esta supervisión es muy difícil de proporcionar.
Problemas de seguridad. No todos los usuarios del sistema de base de datos deben poder acceder a todos los datos. Por ejemplo, en un sistema bancario, el personal de las nóminas sólo necesita ver la parte de la base de datos que tiene información acerca de los distintos empleados del banco. No necesitan acceder a información sobre las cuentas de los clientes. Puesto que los programas de aplicación se añaden al sistema de una forma precisa, es difícil implantar tales restricciones de seguridad.
Problemas de integridad. Los valores de datos almacenados en la base de datos deben satisfacer ciertos tipos de restricciones de consistencia. Por ejemplo, el saldo de una cuenta bancaria nunca debe caer por debajo de una cantidad prescrita (digamos, 25 dólares).
Estas restricciones se hacen cumplir en el sistema añadiendo códigos apropiados en los diversos programas de aplicación. Sin embargo, cuando se añaden restricciones nuevas, es difícil cambiar los programas para hacerlos cumplir. El problema se complica aún más cuando las restricciones implican varios elementos de información de distintos archivos.
Estas dificultades, entre otras, han fomentado el desarrollo de sistemas de gestión de bases de datos. En lo que sigue, veremos los conceptos y algoritmos que se han desarrollado para sistemas de bases de datos para resolver los problemas anteriormente mencionados.
Administrador de base de datos (DBMS)
Generalmente, las bases de datos requieren una gran cantidad de espacio de almacenamiento. Las bases de datos de las empresas comúnmente se miden en términos de gigabytes o, para las bases de datos más grandes, terabytes de datos. Un gigabyte es 1024 megabytes (un billón de bytes), y un terabyte es un poco más de un millón de megabytes (más de un trillón de bytes). Puesto que la memoria principal de los computadores no puede almacenar esta información, se almacena en discos. Los datos se transfieren entre el almacenamiento en disco y la memoria principal según se necesiten. Ya que el movimiento de los datos y del disco es lento comparado con la velocidad de la unidad central de procesamiento, es imperativo que el sistema de la base de datos estructure los datos de forma que minimice la necesidad de mover los datos entre el disco y la memoria principal.
El objetivo de un sistema de bases de datos es simplificar y facilitar el acceso a los datos. Las vistas de alto nivel ayudan a lograrlo. No se debería cargar innecesariamente a los usuarios del sistema con los detalles físicos de la implementación del sistema. Sin embargo, un factor importante para la satisfacción o insatisfacción del usuario con un sistema de bases de datos es su funcionamiento. Si el tiempo de respuesta para una solicitud es demasiado largo, el valor del sistema se reduce. El funcionamiento de un sistema depende de la eficiencia de las estructuras de datos usadas para representar los datos en la base de datos y de la capacidad de eficiencia de operar sobre esas estructuras de datos que el sistema tiene.
Como es el caso de muchos otros aspectos de sistemas informáticos, se debe llegar a un compromiso no sólo entre espacio y tiempo sino también entre la eficiencia de un tipo de operación y la de otro. Un gestor de base de datos es un módulo de programa que proporciona el interfaz entre los datos de bajo nivel almacenados en la base de datos y los programas de aplicación y consultas hechos al sistema. El gestor de base de datos es responsable de las siguientes tareas: . Interacción con el gestor de archivos. Los datos sin procesar se almacenan en el disco usando el sistema de archivos que normalmente es proporcionado por un sistema operativo convencional.
El administrador o gestor de base de datos traduce las distintas sentencias DML a comandos del sistema de archivos de bajo nivel. Así, el gestor de base de datos es responsable del verdadero almacenamiento, recuperación y actualización de los datos en la base de datos.
Implantación de la integridad. Los valores de los datos que se almacenan en la base de datos deben satisfacer ciertos tipos de restricciones de consistencia. Por ejemplo, el número de horas que un empleado puede trabajar en una semana no puede exceder un límite específico (digamos 80 horas). El administrador de la base de datos debe especificar explícitamente estas restricciones (ver Sección 1.9). El gestor de la base de datos entonces puede determinar si las actualizaciones a la base de datos dan como resultado la violación de la restricción; si así es, se debe tomar la acción apropiada.
Implantación de la seguridad. Como se discutió anteriormente, no todos los usuarios de la base de datos necesitas tener acceso a todo su contenido. Es trabajo del gestor de la base de datos hacer que se cumplan estos requisitos de seguridad.
Copia de seguridad y recuperación. Un sistema informático, como cualquier otro dispositivo mecánico o eléctrico, está sujeto a fallos. Las causas de los fallos incluyen rotura de disco, problemas del suministro de energía y errores software. En cada uno de estos casos, se pierde la información referente a la base de datos. Es responsabilidad del gestor de la base de datos detectar tales fallos y restaurar la base de datos al estado que existía antes de ocurrir el fallo. Esto se lleva a cabo normalmente a través de la iniciación de varios procedimientos de copias de seguridad y recuperación.
Control de concurrencia. Cuando varios usuarios actualizan la base de datos concurrentemente, es posible que no se conserve la consistencia de los datos. Controlar la interacción entre los usuarios concurrentes es otra responsabilidad del gestor de la base de datos.
Referencia :
Korth Henry, Silverschatz
Fundamentos de bases de datos, Capitulo 1.