Los Sistemas de Almacenamiento de la Información - Irene-Frias/1DAM GitHub Wiki

1. Introducción

Las bases de datos están presentes en casi todos los aspectos de nuestra vida diaria. Desde ver la televisión digital, hacer una llamada con el móvil, operar en un cajero automático, hasta usar un GPS, inscribirse en cursos online o consultar información en Internet.

En sus inicios, las empresas gestionaban datos manualmente con archivos en papel, lo cual era suficiente mientras el volumen de información fuera reducido. Pero con el aumento de los datos y la complejidad de su gestión, fue necesario informatizar estos procesos. Así nacieron los ficheros digitales, que imitan elementos físicos tradicionales como carpetas o formularios.

El fichero permitió almacenar datos de forma estructurada y permanente en medios digitales, facilitando su consulta y procesamiento por parte de programas informáticos. Sin embargo, con el avance tecnológico surgieron nuevas necesidades, como:

  • Acceso concurrente a los datos.
  • Relación entre diferentes conjuntos de información.
  • Eliminación de datos duplicados para mantener la coherencia.

Estas necesidades impulsaron la creación de las bases de datos, sistemas más complejos y eficientes para almacenar y gestionar grandes volúmenes de información.

En definitiva, la informática puede definirse como la disciplina encargada del procesamiento automático de la información. Este tratamiento se basa principalmente en:

  • Procesamiento: combinar datos para generar nueva información.
  • Almacenamiento: conservar los datos para su uso futuro.

2. Almacenamiento de la información

La información se guarda en dispositivos llamados memorias, los cuales permiten su recuperación cuando se necesita. Elegir el tipo adecuado de memoria es una parte principal en el diseño de cualquier sistema de procesamiento de datos, ya que existen diversas tecnologías con diferentes ventajas e inconvenientes.

Las características comunes de los dispositivos de almacenamiento son las siguientes:

  • Unidad de almacenamiento: es la cantidad mínima de información que puede leerse o escribirse. Puede variar desde 1 byte hasta miles, dependiendo del dispositivo. Se puede comparar con el tamaño de un cajón en un archivador.

  • Tipo de acceso: encargado de indicar cómo se accede a una unidad específica dentro del dispositivo. Existen dos tipos:

    • Acceso aleatorio: permite acceder directamente a cualquier unidad si se conoce su dirección.
    • Acceso secuencial: se accede en orden, una unidad tras otra.

Además de disponer de diferentes niveles de almacenamiento en el sistema de memoria, en el que garantizan dos niveles principales:

  • Memoria primaria: rápida, pero limitada y volátil (por ejemplo, la RAM).
  • Memoria secundaria: más lenta, pero permanente y con mayor capacidad (como discos duros, SSD,...).

2.1 Almacenamiento primario

El almacenamiento primario está compuesto por dispositivos de memoria directamente accesibles por el procesador. En los que son incluidos:

  • Memoria RAM
  • Memoria ROM / FLASH
  • Memoria caché (una RAM más pequeña y rápida)

Sus características principales son:

  • Todo dato que necesite el procesador debe estar en la memoria primaria. Si no lo está, se transfiere desde otro dispositivo (como un disco duro) a la RAM.
  • El tamaño de la unidad de almacenamiento suele ser de 1 a 8 bytes, dependiendo de la arquitectura del procesador.
  • El acceso es aleatorio, es decir, el procesador puede acceder directamente a cualquier ubicación de memoria sin seguir un orden secuencial.

2.2 Almacenamiento secundario

El almacenamiento secundario incluye todos los dispositivos que no son accesibles directamente por el procesador. Suelen tener una gran capacidad de almacenamiento, aunque su velocidad de acceso es menor que la del almacenamiento primario, siendo varios órdenes de magnitud más lenta. Los principales dispositivos de almacenamiento secundario son:

  • Discos magnéticos (HDD)
  • Discos ópticos (CD, DVD, Blu-ray)
  • Cintas magnéticas
  • Discos de estado sólido (SSD)

3. Ficheros

El fichero es el elemento que permite almacenar datos de forma permanente en dispositivos de almacenamiento secundario. Está formado por registros lógicos, que contienen datos relacionados con un mismo elemento u objeto. Cada registro, a su vez, está dividido en campos, que representan las unidades de información elementales.

Debido al gran tamaño que tienen los ficheros no se cargan completos en la memoria principal, sino que la procesan por partes, a través de:

  • Bloque o registro físico: es la cantidad de información que se transfiere en una sola operación de lectura o escritura entre el dispositivo de almacenamiento y la memoria principal.
  • Registros lógicos en un bloque: estos normalmente, un bloque contiene varios registros lógicos del fichero.
  • Factor de blocaje: es el número de registros lógicos que caben en un bloque.
  • Bloqueo de registros: es el proceso de agrupar varios registros lógicos dentro de un bloque para su transferencia.

4. Tipos de ficheros

  • Ficheros permanentes: son los que contienen la información necesaria para el funcionamiento de una aplicación. Tienen una vida larga y, generalmente, no se pueden generar rápidamente a partir de otros ficheros. Son clasificados en:

    • Ficheros maestros: contienen información que refleja el estado actual de los datos. Se actualizan periódicamente para adaptarse a nuevas situaciones, pero su estructura permanece constante. Ejemplo: fichero con los datos de los usuarios de una plataforma educativa.
    • Ficheros constantes: contienen datos fijos que no se modifican con frecuencia. Se utilizan principalmente para consultas. Como por ejemplo: fichero con códigos postales.
    • Ficheros históricos: contienen datos que fueron actuales en un periodo pasado. Se usan para reconstruir situaciones anteriores. Como por ejemplo: fichero con usuarios que han causado baja en una plataforma educativa.

4.1 Según la longitud de los registros

Los registros dentro de un fichero pueden tener:

  • Longitud fija: todos los registros tienen la misma longitud, porque los campos que los forman tienen un tamaño constante.
  • Longitud variable: los registros pueden variar en tamaño debido a que contienen campos de longitud variable, o campos que se repiten un número variable de veces, o ambas causas.

4.1.1 Ficheros de longitud fija

Todos los registros son del mismo tipo y cada uno de los campos tiene una longitud fija. Por tanto, todos los registros ocupan el mismo espacio en almacenamiento.

Una de las ventajas que tiene es que son fáciles de manipular, ya que la posición de un registro en el disco se puede calcular directamente multiplicando el número del registro por su tamaño fijo.

Una de las desventajas es que llegan a ser poco flexibles. Además de que pueden desperdiciar espacio cuando algunos campos no utilizan toda la longitud asignada.

4.1.2 Ficheros de longitud variable

Los registros pueden ser de distintos tipos o del mismo tipo pero con campos de longitud variable. Por ello, el espacio que ocupa cada registro no es fijo y suele ser necesario almacenarlo junto con el propio registro.

Una de las ventajas que tiene es que permiten un uso más eficiente del espacio, ya que cada campo ocupa solo lo necesario.

Una de las desventajas es que son más difíciles de manipular. Por ello requieren cálculos más complejos o estructuras auxiliares (como los índices) para acceder a los registros de forma eficiente.

5. Organización de los ficheros

Las operaciones básicas que se pueden realizar sobre un fichero son:

  • Consulta: acceder a la información contenida en un registro.
  • Inserción: añadir un nuevo registro al fichero.
  • Modificación: cambiar el valor de uno o varios campos de un registro existente.
  • Borrado: eliminar un registro del fichero.

A partir de estas operaciones básicas se pueden realizar otras más complejas, como búsquedas, ordenaciones, filtrado,...

Acceso a ficheros El modo de acceso a un fichero depende directamente de su organización, es decir, de cómo están dispuestos los registros en el soporte de almacenamiento. Existen dos tipos principales de acceso:

  • Acceso secuencial: para acceder a un registro concreto (por ejemplo, el número N), es necesario recorrer uno a uno los registros anteriores (del 1 al N-1) en el mismo orden en que fueron almacenados.
  • Acceso directo (o aleatorio): permite acceder directamente a un registro utilizando una clave (también llamada llave), sin necesidad de leer los registros anteriores.

5.1 Organización secuencial de los ficheros

La organización secuencial es la forma más simple de estructurar un fichero. En este tipo de organización, los registros se almacenan uno a continuación del otro, en el mismo orden en que se insertan. Los nuevos registros se añaden siempre al final del fichero.

La ventaja principal es que la inserción es eficiente, por lo que añadir nuevos registros es sencillo, ya que solo se debe escribir en el último bloque disponible.

Y una de las desventajas es la búsqueda poco eficiente. Para localizar un registro específico, es necesario recorrer el fichero desde el principio, comparando uno a uno el valor del campo deseado hasta encontrar el registro buscado o llegar al final del fichero (marcado con EOF, End Of File).

El borrado de datos en ficheros secuenciales también presenta ineficiencias. Al eliminar registros, quedan "huecos" en el fichero, lo que desperdicia espacio. Para mitigar este problema, algunos sistemas reutilizan estos huecos al insertar nuevos registros, siempre que estos sean de igual o menor tamaño. No obstante, este mecanismo complica el proceso de inserción y lo hace más lento.

Una alternativa es la compactación, una operación que se realiza periódicamente y que consiste en crear un nuevo fichero copiando solo los registros válidos (no borrados). Luego, se reemplaza el fichero original por el nuevo. Este proceso consume tiempo y, en muchos casos, requiere detener el sistema mientras se ejecuta, por lo que no es adecuado para sistemas que deben estar activos de forma continua. En cualquier caso, el borrado suele ser lógico, es decir, se marca el registro como inválido sin eliminar físicamente sus datos.

La modificación de registros puede ser sencilla si los registros son de longitud fija, ya que ocupan siempre el mismo espacio. En cambio, si tienen longitud variable, la modificación se complica. Si el nuevo tamaño supera al original, el registro ya no cabe en su espacio anterior. En ese caso, se elimina el registro antiguo y se inserta el nuevo al final del fichero, como si fuera una nueva entrada.

A pesar de sus limitaciones, la organización secuencial tiene una ventaja importante en la cuál es la única opción viable para dispositivos de almacenamiento no direccionables, como las cintas magnéticas. Sin embargo, también puede utilizarse en dispositivos de acceso directo.

Cuando los registros se identifican por un campo específico, este se denomina clave o llave. Si el fichero está ordenado por esta clave, las operaciones de lectura son más rápidas. La lectura en este tipo de organización siempre se realiza hacia adelante.


En resumen, la organización secuencial es fácil de implementar pero poco eficiente, especialmente cuando se requiere modificar o eliminar registros con frecuencia. Es adecuada para ficheros que se procesan de forma completa y rara vez se modifican o eliminan. Para mejorar su rendimiento, se han desarrollado variantes como la organización secuencial encadenada y la organización secuencial indexada.

5.2 Organización secuencial encadenada de los ficheros

En la organización secuencial encadenada, cada registro almacena no solo su información, sino también un puntero, es decir, una dirección de memoria que indica dónde se encuentra el siguiente registro en la secuencia lógica del fichero.

Aunque los registros están almacenados en posiciones físicas arbitrarias, los punteros permiten mantener un orden lógico determinado, normalmente basado en el valor de una clave.

  • Inserción de registros: para añadir un registro al final del fichero:

    • Se localiza el último registro (aquel cuyo puntero es nulo).
    • Se escribe el nuevo registro en una posición libre.
    • Se actualiza el puntero del registro anterior para que apunte al nuevo.
  • Para insertar un registro en una posición intermedia:

    • Se localizan los registros anterior y posterior a la posición deseada.
    • Se escribe el nuevo registro en una dirección libre, y su puntero apunta al registro siguiente.
    • Se actualiza el puntero del registro anterior para que apunte al nuevo.
  • Consulta de registros: la lectura o búsqueda se realiza de forma secuencial:

    • Se empieza por el primer registro y se compara su campo clave.
    • Si no coincide, se usa su puntero para acceder al siguiente, y así sucesivamente, hasta encontrar el registro deseado o llegar al final (puntero nulo).
  • Modificación de registros:

    • Si no cambia la longitud del registro ni su clave, se sobreescribe directamente en su posición.
    • Si cambia la clave o se incrementa su tamaño, se inserta un nuevo registro con la información actualizada y luego se elimina el anterior (ajustando los punteros correspondientes).
  • Borrado de registros: eliminar un registro consiste en:

    • Actualizar el puntero del registro anterior para que apunte al siguiente del que se desea eliminar.
    • De esta forma, el registro queda desvinculado de la secuencia lógica, aunque físicamente pueda seguir ocupando espacio.

5.3 Organización secuencial indexada de los ficheros

En la organización secuencial indexada, el fichero está dividido en dos zonas principales:

1. Zona de registros: contiene todos los registros del fichero, organizados secuencialmente según el valor de una llave (clave). En esta zona se divide en tramos lógicos (también llamados bloques o segmentos), cada uno de los cuales incluye varios registros consecutivos.

2. Zona de índices: es una estructura auxiliar que contiene un índice secuencial que permite localizar rápidamente el tramo donde se encuentra un registro específico. Cada entrada del índice contiene:

  • Un valor de la llave, correspondiente al último registro de un tramo.
  • Una dirección, que apunta al primer registro de ese tramo en la zona de registros.

Y su funcionamiento es el siguiente:

  • Para localizar un registro, primero se consulta el índice, buscando secuencialmente hasta encontrar la entrada cuyo valor de llave sea igual o superior al deseado.
  • Luego, se accede directamente al tramo de registros indicado por la dirección almacenada en el índice.
  • Finalmente, se realiza una búsqueda secuencial dentro de ese tramo hasta encontrar el registro exacto.

Esta organización sólo es válida en dispositivos de almacenamiento direccionables, como discos duros o SSD, ya que requiere acceder directamente a ubicaciones específicas.

Sus ventajas son:

  • Mejora la velocidad de búsqueda respecto a la organización secuencial pura, ya que evita recorrer todo el fichero.
  • Facilita el acceso directo a bloques, permitiendo una combinación de eficiencia y orden.

Consideraciones siguientes:

  • Aunque es más eficiente que la organización secuencial básica, las inserciones y eliminaciones pueden requerir reorganizar los tramos o actualizar el índice, lo que puede ralentizar estas operaciones.

5.4 Organización directa (aleatoria) de los ficheros

En la organización directa, también conocida como organización aleatoria los registros se almacenan en posiciones físicas determinadas por una fórmula matemática, sin seguir un orden secuencial. La posición de cada registro dentro del fichero se calcula a partir de una clave, utilizando una función de direccionamiento.

Esta distribución no sigue un orden lógico aparente en el soporte de almacenamiento, ya que depende exclusivamente del resultado del cálculo aplicado sobre un campo del registro, usualmente la clave principal.

Cálculo de direcciones: la dirección física donde se almacenará un registro se obtiene mediante una función de transformación (también llamada función hash), aplicada sobre la clave del registro.

Problemas de colisión: cuando dos registros diferentes obtienen la misma dirección física tras aplicar la función, se produce una colisión. Para resolverlo, se pueden aplicar los siguientes métodos:

  • Reubicación lineal o búsqueda lineal: se busca secuencialmente la siguiente posición libre dentro del mismo espacio del fichero.
  • Zona de desbordamiento: se reserva un área específica del fichero para almacenar los sinónimos (registros con distintas llaves pero misma dirección resultante). A medida que ocurren colisiones, los registros se almacenan allí de forma consecutiva.

Los métodos de direccionamiento según el tipo de función de transformación utilizada, existen tres métodos principales:

  • Direccionamiento directo:

    • La dirección asignada a un registro es exactamente el valor de su clave lógica.
    • Es rápido y simple, pero solo viable cuando la clave puede mapearse directamente al espacio de almacenamiento sin ambigüedades.
  • Direccionamiento indexado:

    • Se usa una tabla de índices que asocia cada clave con una dirección lógica.
    • El método no genera colisiones, pero requiere espacio adicional y gestión de la tabla.
  • Direccionamiento calculado o hashing:

    • La dirección se obtiene mediante cálculos matemáticos aplicados sobre la clave (función hash).
    • Si la clave es alfanumérica, se transforma primero en un número.
    • Una buena función hash genera pocas colisiones y distribuye los registros de manera uniforme.

Ventajas

  • Acceso muy rápido a los registros cuando se conoce la clave.
  • Ideal para operaciones frecuentes de consulta o modificación puntual.

Desventajas

  • Mayor complejidad en la inserción y manejo de colisiones.
  • No es adecuado para procesamientos secuenciales o análisis masivos.

6. Sistemas de bases de datos

Inicialmente, las organizaciones usaban sistemas basados en ficheros: cada equipo gestionaba sus propios datos y programas. Aunque funcionó en un principio, el crecimiento de la información y de los usuarios generó problemas como duplicidad, falta de integridad, y poca seguridad. Esto llevó a adoptar un sistema más centralizado en las bases de datos.

Los principales problemas relacionados con el uso de ficheros como sistema de almacenamiento de información fueron los siguientes:

  • Separación y aislamiento de los datos: cuando los datos están separado en distintos ficheros y se quiere acceder a ellos, el programador es el encargado de coordinar el acceso a los distintos ficheros para extraer los datos correctos.
  • Duplicación de datos: pueden existir ficheros con copias de los mismos datos, lo que provoca problemas de consistencia de datos y desperdicio de espacio.
  • Dependencia de los datos: la estructura física está codificada en los programas, en la que cualquier cambio en ella es difícil de realizar. El programador identifica todos los programas afectados por el cambio, modificarlos y volverlos a probar, lo que implica mucho tiempo que se produzcan errores.
  • Formatos de ficheros incompatibles: según la estructura de los ficheros en los que define programas dependientes. Además la incompatibilidad entre los ficheros generados en distintos lenguajes, hacen que estos sean difíciles de procesar de modo conjunto.
  • Consultas fijas: es la que conoce la estructura de los ficheros, de forma que cualquier consulta que se quiera realizar en ellos será codificada en la aplicación. Por lo que no se realiza ninguna consulta que no esté codificada en la aplicación.
  • Control de concurrencia: el acceso de varias aplicaciones al mismo fichero es complicado ya que puede provocar inconsistencias al modificar una aplicación un fichero mientras lo lee.
  • Catálogo: según al número de aplicaciones y ficheros crece en una organización es complicado saber donde está almacenado un dato. La información pero no se sabe exactamente en qué fichero, ya no existe un esquema que muestre la información y el contenido que pueden gestionar los ficheros de forma separada.

Una base de datos es un conjunto de datos relacionados entre sí, diseñados para satisfacer las necesidades de información de una organización.

Los datos se organizan en estructuras definidas una sola vez y pueden ser utilizados simultáneamente por varios usuarios o equipos. A diferencia de los ficheros independientes con información duplicada, los datos están centralizados, minimizando la redundancia y facilitando su gestión.

La base de datos no pertenece a un único equipo, sino que es compartida por toda la organización.

Además de los datos, una base de datos almacena su propia descripción, conocida como metadatos, que se guardan en una estructura llamada diccionario de datos o catálogo. Este catálogo, en muchos casos, está organizado como otra base de datos.

6.1 Arquitectura

El comité de ANSI (American National Standards Institute) propuso un estándar para la creación de sistemas de bases de datos basado en una arquitectura de tres capas o niveles.

El objetivo de esta arquitectura es separar los distintos niveles de abstracción desde los que se puede visualizar el esquema de la base de datos, permitiendo así una visión más estructurada y de alto nivel.

Los tres niveles o capas son los siguientes:

  • Nivel interno: describe la estructura física de la base de datos mediante un esquema interno. Este esquema incluye todos los detalles sobre el almacenamiento, como los métodos de acceso (ficheros, discos, índices, etc.).

  • Nivel medio: describe la estructura completa de la base de datos a través de un esquema conceptual. Oculta los detalles de almacenamiento y se centra en la descripción de los datos: entidades, atributos, relaciones y restricciones.

  • Nivel externo: describe las vistas de usuario mediante esquemas externos. Utiliza un modelo conceptual para mostrar únicamente la parte de la base de datos que interesa a un usuario o grupo de usuarios, ocultando el resto. Es el esquema que percibe el usuario final a través de las aplicaciones.

Estos tres niveles contienen descripciones de los mismos datos, pero en distintos niveles de abstracción. Los únicos datos almacenados físicamente están en el nivel interno, dentro del dispositivo de almacenamiento.

Esta arquitectura permite lograr la independencia de los datos, es decir, la capacidad de realizar cambios en un nivel sin afectar a los niveles superiores. Se distinguen dos tipos de independencia:

  • Independencia lógica: es la capacidad de modificar el esquema conceptual (nivel medio) sin alterar los esquemas externos ni los programas de aplicación. Esto permite ampliar o reducir la base de datos sin afectar a las aplicaciones existentes.

  • Independencia física: es la capacidad de modificar el esquema interno sin tener que modificar los demás esquemas. Esto incluye reorganizar ficheros, añadir o quitar índices, o realizar mejoras de rendimiento sin afectar al resto del sistema.

6.2 Modelos de datos

Una base de datos contendrá información correspondiente al mundo real, en la que se guardará información sobre "cosas".

La descripción simplificada de una parte del mundo real se denomina modelo, un concepto utilizado en muchos campos del conocimiento. El modelo consiste en una representación simplificada de una parte de la realidad.

Un modelo de base de datos funciona de forma similar. Representa una parte de la realidad, conteniendo solo la información relevante con el propósito de construir el modelo, dejando fuera la información irrelevante.

Nos permite manipular la información y comprobar si es correcta y consistente, sin necesidad de realizar complicaciones innecesarias.

Un modelo de base de datos es una colección de herramientas conceptuales que permiten describir los datos, las relaciones entre ellos y sus restricciones.

6.3 Tipos de modelos de datos

En la arquitectura de bases de datos, que consta de tres niveles (externo, medio e interno), es necesario modelar la base de datos en cada uno de ellos. Existen tres tipos principales de modelos:

  • Modelos conceptuales: describen qué datos existen y qué relaciones hay entre ellos, sin preocuparse por cómo se almacenan. Se centran en la estructura lógica de la información relevante para el negocio.

  • Modelos lógicos: representan los datos con un mayor nivel de detalle técnico, respetando las reglas de un sistema de gestión de bases de datos específico (como el modelo relacional). Transforman el modelo conceptual en una estructura que puede ser implementada.

  • Modelos físicos: describen cómo se almacenan realmente los datos en el sistema. Incluyen detalles como estructuras de almacenamiento, índices, particiones, etc.

6.3.1 Modelos conceptuales

Se utilizan para describir los datos de forma que puedan ser entendidos y manipulados por personas. Aunque se formaliza su descripción para que sea precisa, son modelos flexibles y permiten expresar datos, relaciones y restricciones.

Existen muchos modelos conceptuales, pero el más extendido y eficaz es el Modelo Entidad-Relación (MER).

Este modelo representa las entidades, que son "cosas" que existen de forma independiente y se distinguen de otras similares por sus características.

A esas características se les llama atributos. Un atributo no es una entidad en sí, sino un dato que tienen todas las ocurrencias de una entidad.

Además, el modelo también describe las relaciones entre entidades. Estas relaciones representan los enlaces entre las instancias de dos o más entidades.

6.3.2 Modelos lógicos

Los modelos lógicos se utilizan para describir los datos de forma que se puedan realizar operaciones sobre ellos, con una perspectiva más técnica que los modelos conceptuales, pero aún cercana a la forma de trabajo de las personas.

Estos modelos han evolucionado con el tiempo conforme ha avanzado la tecnología y se han desarrollado bases de datos más grandes y complejas.

  • Modelo jerárquico: la información se estructura mediante un esquema en forma de árbol. Las relaciones entre entidades se organizan jerárquicamente, donde una entidad (padre) puede estar relacionada con una o más entidades (hijas). Es fácil de programar, pero muy rígido, ya que muchas relaciones no se ajustan a esta estructura.

  • Modelo en red: es una mejora del modelo jerárquico, ya que permite que una entidad tenga múltiples relaciones, eliminando la rigidez de la jerarquía. Aumenta la flexibilidad y mejora la consistencia en las relaciones entre nodos.

  • Modelo relacional: surgió después de los anteriores. Representa los datos y las relaciones entre ellos mediante una colección de tablas bidimensionales. Es el modelo más utilizado actualmente debido a su simplicidad y potencia.

  • Modelo orientado a objetos: busca superar las limitaciones del modelo relacional integrando características de los lenguajes de programación orientados a objetos. Este modelo permite almacenar no solo la información (datos) sino también el comportamiento (métodos) de las entidades.

Existen más modelos lógicos, como por ejemplo el modelo objeto-relacional, el modelo declarativo o el modelo NoSQL.

6.3.3 Modelos físicos

Los modelos físicos describen las estructuras de almacenamiento en el sistema de gestión de bases de datos. Indican qué se almacena, dónde y cómo.

El modelo físico depende del sistema de gestión de bases de datos (SGBD) empleado, y está basado en una descripción técnica del mismo. Esta información suele encontrarse en la documentación del SGBD específico que se haya elegido.

7. Sistemas Gestores de Bases de Datos

Un Sistema de Gestión de Bases de Datos (SGBD), también conocido por sus siglas en inglés DBMS (DataBase Management System), es una aplicación o conjunto de aplicaciones que permite a los usuarios definir, crear, mantener y acceder a las bases de datos. Actúa como intermediario entre los usuarios y los datos almacenados.

El funcionamiento de un sistema de información sigue esta estructura:

  • Usuarios: son los productores y consumidores finales de la información. No siempre son personas; también pueden ser otros sistemas que interactúan con el nuestro para consumir o generar datos.

  • Aplicaciones: son interfaces que ofrecen una vista coherente de los datos y facilitan su manejo, proporcionando una interacción más amigable para el usuario.

  • SGBD: gestionan las peticiones de las aplicaciones. Se encargan de recuperar, modificar o eliminar datos en la base de datos física, manteniendo la integridad y seguridad de la información.

  • Bases de datos físicas: es donde se almacenan los datos permanentemente. El SGBD accede a este nivel cuando se necesita recuperar o actualizar información.

7.1 Funciones

Las funciones principales de un SGBD son las siguientes:

  • Gestionar el diccionario de datos (catálogo): un diccionario de datos es una base de datos mantenida automáticamente por el SGBD que contiene información sobre los datos almacenados, es decir, una base de datos sobre los datos. Esta información, llamada metadatos, incluye:

    • Nombre, tipo y tamaño de cada dato.
    • Relaciones entre los datos.
    • Reglas de integridad.
    • Usuarios autorizados y los permisos asociados a cada uno.
    • Estadísticas de uso, como frecuencia de transacciones y número de accesos a los objetos de la base de datos.
  • Garantizar la integridad transaccional: se debe asegurar que todas las actualizaciones de una transacción se ejecuten por completo o que ninguna lo haga. Una transacción es un conjunto de acciones que modifican la base de datos. Existen varias técnicas para garantizar esta propiedad.

  • Gestionar el acceso concurrente a los datos: cuando múltiples usuarios acceden simultáneamente a los mismos datos, pueden surgir problemas de consistencia. Por ejemplo, si un usuario está escribiendo mientras otro está leyendo los mismos datos. El SGBD debe garantizar que cada usuario acceda a datos consistentes. Las técnicas más empleadas incluyen mecanismos de bloqueo (locks).

  • Recuperación de datos: en caso de fallo, el sistema debe ser capaz de restaurar la base de datos a un estado consistente lo más cercano posible al momento del fallo, minimizando la pérdida de datos.

  • Proporcionar interfaces de uso: el SGBD debe permitir el acceso desde el exterior mediante canales concretos (acceso local, red, memoria compartida, etc.).

  • Gestionar las restricciones sobre los datos: las restricciones deben cumplirse en todo momento. El sistema debe evitar modificaciones que violen las reglas de integridad.

  • Proporcionar herramientas de administración: el SGBD debe incluir utilidades para facilitar la administración y el uso del sistema, como herramientas de monitorización, copia de seguridad, recuperación, gestión de usuarios, etc.

7.2 Componentes

Cada sistema es distinto, pero de forma general todos los SGBD incluyen los siguientes componentes:

  • Lenguajes de datos: se utilizan para dar instrucciones al SGBD. Normalmente se distinguen tres tipos según su funcionalidad:

    • Lenguaje de Definición de Datos (Data Definition Language, DDL): se utiliza para definir la estructura de la base de datos, así como las relaciones y restricciones entre sus objetos.
    • Lenguaje de Control de Datos (Data Control Language, DCL): se emplea para gestionar la seguridad de los datos, como usuarios, grupos y privilegios.
    • Lenguaje de Manipulación de Datos (Data Manipulation Language, DML): permite consultar y manipular el contenido de la base de datos, incluyendo operaciones de inserción, modificación, eliminación y recuperación de datos.
  • Diccionario de datos: contiene metadatos sobre los objetos de la base de datos. Suele estar implementado como una base de datos adicional, aunque su manipulación se gestiona de manera especial por el sistema.

  • Objetos: elementos que forman parte de la base de datos. Su número y tipo dependen del SGBD. Algunos ejemplos comunes:

    • Tablas base y vistas (tablas derivadas).
    • Consultas predefinidas.
    • Dominios y tipos de datos definidos por el usuario.
    • Restricciones de integridad a nivel de tabla o dominio.
    • Funciones y procedimientos almacenados.
    • Disparadores (triggers) que responden a eventos.
  • Herramientas: utilidades para la administración del sistema, como la gestión de la seguridad, integridad, concurrencia o migraciones.

  • Optimizador de consultas: convierte las instrucciones DML en operaciones sobre el modelo físico (accesos a índices, búsquedas, etc.). Su objetivo es ejecutar las consultas de la forma más eficiente posible, sin que el usuario tenga que preocuparse por ello.

  • Gestor de transacciones: se encarga de gestionar las transacciones y el acceso concurrente para garantizar la consistencia y recuperación de la base de datos.

  • Planificador: en algunos SGBD permite programar tareas automáticas, útiles para operaciones periódicas o desencadenadas por ciertos eventos.

  • Gestión de replicación: algunos sistemas permiten crear réplicas de la base de datos, ya sea para sistemas de respaldo (backup) o como copias en servidores secundarios para garantizar disponibilidad o realizar análisis offline.

7.3 Usuarios

Generalmente se distinguen cuatro grupos de usuarios que utilizan las bases de datos. Estos son los siguientes:

  • Administradores: se encargan del mantenimiento del sistema completo (instalación, gestión de copias de seguridad, administración del almacenamiento, etc.). Son los usuarios con más privilegios dentro del sistema.

  • Diseñadores de la base de datos: realizan el diseño lógico de la base de datos, identificando los datos, las relaciones entre ellos, sus restricciones, etc. Para ello, deben conocer en profundidad los datos y procesos que se implantarán. Para obtener buenos resultados, el diseñador debe implicar en el proceso a todos los usuarios de la base de datos desde las fases iniciales.

  • Programadores de aplicaciones: desarrollan los programas que utilizan los usuarios finales. Estos programas permiten realizar operaciones sobre los datos como consultas, inserciones, actualizaciones o eliminaciones.

  • Usuarios finales: interactúan con la base de datos a través de vistas externas. Son los consumidores de la información, y no necesitan conocer la ubicación, estructura interna ni detalles técnicos del sistema.

7.4 Tipos de Sistemas Gestores de Base de Datos (SGBD)

Existen muchos SGBD en el mercado que pueden clasificarse según los siguientes criterios:

  • Número de usuarios:

    • Monousuario
    • Multiusuario
  • Modelo lógico en el que se basan:

    • Jerárquico
    • En red
    • Relacional
    • Objeto-relacional
    • Orientado a objetos
  • Número de sitios:

    • Centralizados: en un solo servidor o equipo.
    • Distribuidos: en varios equipos, que pueden ser homogéneos o heterogéneos.
  • Ámbitos de aplicación:

    • Propósito general: orientados a todo tipo de aplicaciones.
    • Propósito específico: centrados en un tipo particular de aplicación.
  • Tipos de datos:

    • Sistemas relacionales estándar: manejan tipos básicos (int, char, etc.).
    • XML: para bases de datos que trabajan con documentos XML.
    • Objeto-relacionales: para bases relacionales que incorporan tipos de datos complejos.
    • Orientados a objetos: para bases de datos que soportan tipos de objetos con datos y métodos asociados.
  • Lenguajes soportados:

    • SQL estándar
    • NoSQL u otros lenguajes de consulta no estructurados: orientados a bases documentales o de tipo clave-valor. Muy útiles para manejar grandes volúmenes de datos distribuidos en clústeres de servidores.

7.4.1 SGBD comerciales

SGBD Descripción
ORACLE Reconocido como uno de los mejores a nivel mundial. Es multiplataforma, confiable y seguro. Funciona bajo arquitectura cliente/servidor y está basado en el modelo relacional. Tiene gran potencia, aunque su elevado precio lo hace común en grandes empresas y multinacionales. Ofrece una versión gratuita: Oracle Database Express Edition 11g Release 2.
MySQL Sistema muy extendido que se ofrece bajo dos tipos de licencia: comercial y libre. Las empresas que deseen integrarlo en productos privativos deben adquirir una licencia específica. Es relacional, multihilo, multiusuario y multiplataforma. Su gran velocidad lo hace ideal para consultas y plataformas web.
DB2 Multiplataforma, desarrollado por IBM. Es un motor de base de datos relacional que integra XML de forma nativa, permitiendo almacenar documentos completos y realizar búsquedas jerárquicas dentro de estos, además de integrarlas con consultas relacionales.
Microsoft SQL Server Producido por Microsoft. Es un SGBD relacional que solo funciona en sistemas operativos Windows. Utiliza arquitectura cliente/servidor. Es una alternativa a otros SGBD potentes como Oracle, PostgreSQL o MySQL.
SYBASE Un SGBD con muchos años en el mercado. Ofrece tres versiones adaptadas a las necesidades de cada empresa. Es relacional, altamente escalable, con alto rendimiento, soporte para grandes volúmenes de datos, transacciones y usuarios, y de bajo costo.

7.4.2 SGBD libres

SGBD Descripción
MySQL Sistema relacional, multihilo y multiusuario con más de seis millones de instalaciones. Se distribuye bajo licencias comercial y libre. Multiplataforma, con varios motores de almacenamiento, accesible desde múltiples lenguajes de programación y muy usado en aplicaciones web.
PostgreSQL Sistema relacional orientado a objetos, considerado el sistema de base de datos open source más avanzado. Desarrollado por una comunidad altruista y apoyado por organizaciones comerciales. Multiplataforma y accesible desde varios lenguajes.
Firebird Relacional y multiplataforma, con bajo consumo de recursos, excelente gestión de concurrencia, alto rendimiento y soporte para varios lenguajes.
Apache Derby Gestor escrito en Java, pequeño, multiplataforma y multilenguaje. Puede funcionar embebido o en modo cliente/servidor.
SQLite Sistema relacional basado en una biblioteca en C que interactúa directamente con programas. Muy rápido, multiplataforma y soporta varios lenguajes.
MariaDB Fork de MySQL que incorpora mejoras y se ha popularizado en aplicaciones web recientes.