Saltar a contenido

UT1. Sistemas de Almacenamiento de la Información

Introducción

Seguro que has escuchado la frase "Los datos son el petróleo del siglo XXI". A día de hoy se generan datos de manera desorbitada, y estos son muy importantes para las empresas porque se puede extraer mucha información. Pero, ¿sabemos qué diferencia hay entre un dato e información? ¿Cuál es más importante? Un dato es un hecho, un evento, una transacción, que ha sido registrado. En cambio, consideramos información a los datos que han sido procesados y comunicados de tal manera que pueden ser entendidos e interpretados.

Ejemplo

Si decimos que hace 22ºC ¿Es un dato o es información? Y si decimos que hace 22ºC en Sevilla el 15 de Julio, ¿tenemos información?

Los datos necesitan de un contexto para poder obtener información. Muchas veces, dicho contexto, son más datos que nos permiten relacionar unos con otros. Una vez que se asimila la información, se transforma en conocimiento.

Evolución de los datos.
Evolución de los datos.

Así pues, lo importante es la información, pero necesitamos de datos para obtenerla. Si nos centramos en el mundo empresarial, todas las empresas tienen un sistema de información, entendido como un conjunto de elementos destinados al tratamiento y administración de datos e información, organizados y listos para su posterior uso, y generados para cubrir una necesidad (objetivo). Estos sistemas de información pueden (o no) estar informatizados. ¿Y qué tienen que ver el sistema de información con las bases de datos? Pues como toda empresa tiene una forma de trabajar, es necesario que almacene sus datos para poder extraer información, y saber si por ejemplo, deben reponer un producto, hacer algún tipo de oferta, o contratar a un nuevo empleado porque está perdiendo ventas por no poder atender a los clientes.

Ficheros

En los inicios del desarrollo de las aplicaciones, el almacenamiento de la información que gestiona cualquier aplicación informática era mediante el uso de archivos o ficheros (files en inglés). Esto provocaba que las aplicaciones estuvieran "acopladas" a los ficheros (dependencia físico-lógica), y dificultaba compartir datos entre diferentes aplicaciones, así como el acceso concurrente a los mismos.

Respecto a los ficheros, conviene conocer que existen ficheros con diferente estructura y formato, como pueden ser de tipo texto (o plano) o binario y con un determinado formato, como puede ser CSV, JSON, XML, etc.. Los ficheros normalmente contienen un nombre y una extensión, la cual indica el formato. Así pues, clientes.csv sería un fichero en formato CSV que almacena datos sobre clientes.

Formalmente, podemos definir un fichero como una secuencia de números binarios que organiza información relacionada a un mismo aspecto.

Cuando los ficheros almacenan datos, se dice que constan de registros, los cuales son una estructura lógica que agrupa los datos de un mismo elemento (u objeto).

Ejemplo

Un fichero de estudiantes, cada registro contiene datos de un único estudiante. Si el archivo contiene datos de 10.000 estudiantes, tendrá 10.000 registros.

Además, cada uno de los registros se divide en campos que contienen cada una de las informaciones elementales que forman un registro.

Ejemplo

El nombre del estudiante o su email.

Tipos de acceso

Dependiendo del acceso, tenemos diferentes tipos de ficheros:

Secuenciales: los registros se almacenan uno detrás de otro. Antiguamente se utilizaba cuando los ficheros se persistían mediante cintas magnéticas, y provocaba que para acceder a un registro, era necesario recorrer todos los anteriores.

De acceso directo o aleatorio: permite el acceso directo al registro que nos interesa, pudiendo saltar de uno a otro sin necesidad de recorrer los anteriores.

Tipos de acceso.
Tipos de acceso.

Comparación

  • Acceso secuencial → XML, JSON, HTML, archivos de texto plano.
  • Acceso directo → Bases de datos relacionales, archivos indexados, sistemas con estructuras que permiten saltar directamente a la posición del dato.

Respecto a los ficheros secuenciales destacamos dos tipos:

  • Encadenados: cada registro, además de sus datos, almacenan un puntero (dirección de memoria) con la dirección del siguiente registro.
  • Indexados: el fichero se divide en dos zonas, una primera con la información a modo de fichero secuencial con todos los registros uno detrás de otro, y una segunda donde se guardan los índice (a modo de tabla de contenidos o índice de un libro indicando donde se encuentra cada registro), los cuales tienen un campo clave y un campo dirección con la dirección del registro del fichero.

Respecto a las operaciones que se pueden realizar con ficheros podemos destacar la apertura o cierre de los archivos, la lectura o escritura, así como el posicionamiento en un determinado lugar (o registro). Otras operaciones asociadas a los ficheros son:

  • Fragmentación y compactación: cuando toda la información de un registro no se almacena de forma consecutiva, y mediante punteros se van enlazando las partes, se dice que la información está fragmentada. Para evitarlo, se compactan los ficheros para que toda la información se pueda leer más eficientemente.
Fragmentación y compactación.
Fragmentación y compactación.
  • Compresión: la información se codifica mediante algoritmos de compresión que reducen el tamaño de los ficheros.
  • Cifrado de datos: la información se cifra para hacer que el contenido sea ilegible.

Hoy en día, los ficheros se usan sobre todo para guardar datos propios de una aplicación, como archivos de configuración o información privada, especialmente cuando no hace falta que varios usuarios accedan a esos datos al mismo tiempo.

Bases de datos

Si bien los ficheros fueron una solución factible mientras sólo accedían a los archivos una única aplicación, con la aparición de las redes de ordenadores y la explosión de internet, la gestión de los sistemas de almacenamiento mediante ficheros se vio sustituida por las bases de datos, que sí permiten que diferentes aplicaciones y usuarios accedan de forma simultánea a los datos.

Formalmente, podemos definir una base de datos como un conjunto de datos interrelacionados, con características de integridad y redundancia mínima, accesibles por varios usuarios y aplicaciones.

Mediante esta definición estamos introduciendo dos términos que conviene tener muy presente:

  • Integridad: implica que los datos son correctos y completos
  • Redundancia mínima: cada dato sólo existe en un único lugar, evitando duplicidades.

Respecto a las características de las bases de datos:

Ventajas Inconvenientes
Independencia de los datos y los programas y procesos. Instalación costosa.
Menor redundancia. Personal cualificado.
Integridad de los datos. Implantación larga y costosa.
Mayor seguridad. Ausencia de estándares reales.
Datos más documentados → metadatos.
Acceso más eficiente.
Menor espacio de almacenamiento.
Acceso simultáneo → usuarios concurrentes.

Nota

Toda base de datos debe permitir insertar, modificar y borrar datos.

Una base de datos está compuesta por datos y metadatos. Los metadatos son datos que especifican la estructura de la base de datos, es decir, qué tipo de datos almacenan (texto, numérico,...), qué nombre tiene cada dato, cómo se agrupan, relacionan, etc... Estos metadatos se almacenan en el diccionario de datos.

Tipos de Bases de Datos

Dependiendo de la característica que evaluemos podemos clasificar las bases de datos por:

Clasificación Tipos
Contenido Información actual, directorios, documentales
Uso Individual, compartida, acceso público, propietarias
Variabilidad de la información Estáticas, dinámicas
Localización de los datos Centralizadas (anfitrión, cliente/servidor), distribuidas
Organismo productor Públicas o de la administración, sin ánimo de lucro, privadas o comerciales, cooperación en red
Acceso Local, CD/DVD, en línea (conexión privada o web)
Cobertura temática Científico-tecnológicas, económico-empresariales.

Conviene pararse en la clasificación por localización de los datos. Es importante tener claro las diferentes arquitecturas físicas existentes hoy en día. Por un lado, tenemos los sistemas centralizados donde se sigue un modelo cliente-servidor. En un servidor de internet, bien sea un VPS o un servicio gestionado por un proveedor cloud, la base de datos reside en una única máquina (se conoce como servidor) y las diferentes aplicaciones y servicios que consumen dichos datos son los clientes que acceden a la base de datos mediante conexiones remotas.

Si el sistema crece y la carga de usuario supera la capacidad del servidor, es necesario migrar a un modelo más potente (y normalmente más caro) como son las bases de datos distribuidas, donde los datos se reparten entre varias máquinas, particionando los datos o fragmentándolos dependiendo de las necesidades de las aplicaciones, incrementando la complejidad del sistema para dar soporte a la sincronización de los datos y la tolerancia a fallos.

Modelos de datos

Un modelo simboliza una parte del mundo real, de forma que se simplifique su manipulación.

Ejemplo

Un modelo de una ciudad sería un mapa a escala 1:100.

Un modelo de datos es un conjunto de herramientas conceptuales para describir los datos, sus relaciones, su semántica y sus restricciones.

Inicialmente, los modelos de datos primitivos se basaban en sistemas de ficheros, tal como hemos visto en el apartado anterior.

Posteriormente, se definieron los modelos clásicos, entre los que destacan los modelos:

  • Jerárquicos (finales de los 60): almacenan la información en forma de árbol y unidireccional, de arriba hacía abajo. La información se almacena en nodos, y los nodos se relacionan mediante punteros, permitiendo que un nodo padre puede tener muchos nodos hijos (relaciones de uno a muchos).
Modelo jerárquico.
Modelo jerárquico.
  • En red (principios de los 70): a partir de los modelos jerárquicos, los datos se relacionan en forma de red o grafo, permitiendo la relaciones de muchos a muchos, de manera que un nodo hijo puede tener varios nodos padre, y viceversa.
Modelo en red.
Modelo en red.
  • Relacionales (finales de los 70 hasta hoy en día): se basan en la relación entre los datos, mediante el uso de tablas bidimensionales (filas=ocurrencia, columnas=atributo) que contienen campos que se relacionan con campos de otras tablas.
Modelo relacional.
Modelo relacional.

Tras los clásicos, hubo un movimiento por el uso de modelos avanzados que no terminaron de cuajar, como fueron los modelos:

  • Orientados a objetos (década de los 80): soportan el paradigma de programación orientada a objetos, permitiendo la creación de tipos de datos compuestos y herencia entre los diferentes tipos.

Con la explosión de internet, y la necesidad de trabajar con grandes conjuntos de datos, aparecieron y se establecieron en el mercado los modelos:

  • Multidimensionales (década de los 90 y explosión en 2010 con el Big Data): se utilizan para desarrollar aplicaciones de Data Warehouse de procesamiento analítico en línea (OLAP). Las tablas se estructuran como cubos de información, mediante una tabla de hechos y varias tablas de dimensiones (tiempo, lugar, etc..).
Modelo Multidimensional.
Modelo Multidimensional.

Soluciones NoSQL (década del 2000 hasta hoy en día): como complemento a los modelos relacionales, ofrecen alternativas donde prima el rendimiento y escalabilidad de los datos. Destacan los modelos:

  • Clave-Valor: se almacenan datos a los cuales sólo se puede acceder mediante una clave.
  • Documental: utiliza estructuras de documentos JSON que contiene la información de varias entidades en un mismo documento
  • Grafos: Uso de nodos y vértices para navegar por los datos.
  • Basado en columnas: gira las tablas para almacenar los datos por columnas en vez de hacerlo por filas.

Sistemas Gestores de Bases de Datos

Un sistema gestor de base de datos (SGBD), también conocido como DataBase Management System (DBMS), es la herramienta de software que permite la creación, manipulación y administración de bases de datos. Así pues, tanto Oracle, MySQL, MariaDB, OpenOffice/LibreOffice Base, Access, MongoDB o PostgreSQL son sistemas gestores de bases de datos, y no bases de datos en sí. (con matices)

SGBD.
Sistemas Gestores de Bases de Datos.

Funciones

Las funciones de un SGBD son:

  • Asegurar la independencia de los datos respecto a las aplicaciones y los usuarios.
  • Ofrecer eficiencia y seguridad a la hora de extraer o almacenar información en una base de datos, protegiendo el acceso a usuarios sin los permisos adecuados.
  • Asegurar la integridad de los datos en todo momento, detectando las operaciones erróneas que introducen inconsistencia en los datos y permitiendo el uso de transacciones en las operaciones.
  • Permitir el acceso concurrente y recuperación en caso de fallo (tolerancia a fallos).
  • Facilitar la administración de los datos.

Componentes

Un SGBD se compone de:

  • Diccionario de datos: metadatos con las estructuras de las diferentes bases de datos, relaciones entre los datos, restricciones existentes así como información sobre las cuentas y permisos de los usuarios.
  • Espacio de datos: zona donde se almacenan los datos en sí. Se pueden organizar de diferentes maneras, dependiente del sistemas gestor. Por ejemplo, Oracle lo realiza mediante el uso de tablespaces y otros gestores con el concepto de base de datos.
  • Un conjunto de herramientas, las cuales suele gestionar la persona con el rol de DBA (Database Administrator) para:
    • Crear y especificar los datos (mediante el Data Definition Language - DDL), el control de datos (mediante el Data Control Language - DCL) y su manipulación (mediante el Data Manipulation Language – DML)
    • Recuperación (failover). Tras una caída del sistema, configurar los posibles mecanismos de recuperación y aceptación o revisión de las operaciones pendientes.
    • Copia de seguridad (backup), ya sea copias completas o incrementales.
    • Exportación/importación de datos, tanto en formatos binarios con los datos en sí, como un listado de las operaciones necesarias para su creación desde cero.
    • Distribución de los datos. En el caso de bases de datos distribuidas, decidiendo cómo se particionan o fragmentan los datos.

Arquitectura de 3 niveles

Antes ya habíamos comentado que un modelo de datos es un conjunto de herramientas conceptuales para describir los datos, sus relaciones, su semántica y sus restricciones.

Podemos definir un esquema como una descripción específica en términos de un modelo de datos.

El grupo ANSII/SPARC, a mediados de los años 70, definió una arquitectura en 3 niveles diferenciando tres esquemas. Su objetivo principal es separar la manera en que se guarda la información, cómo la manejan los administradores y cómo la ven los usuarios, garantizando independencia de datos.

Nivel Interno (físico)

Se refiere a cómo los datos están almacenados físicamente en el disco u otros medios. Define estructuras de almacenamiento, índices, punteros, compresión, organización de archivos, etc..

Nivel Conceptual (lógico global)

Representa la visión global de la base de datos para la organización. Define qué datos existen, qué relaciones tienen y qué restricciones se aplican.

Ejemplo

El diagrama entidad-relación que muestra tablas como Clientes, Pedidos, Productos, con sus relaciones y reglas de integridad.

Diagrama entidad-relación.
Diagrama entidad-relación.

Nivel Externo (vistas de usuario)

Es la forma en que los usuarios finales o aplicaciones ven los datos. Cada usuario puede tener su propia vista adaptada a sus necesidades (consultas, reportes, formularios).

Ejemplo

Un cajero solo ve nombre del cliente y saldo, mientras que un gerente ve estadísticas de ventas.

Resumen

Interno = cómo se guardan los datos.
Conceptual = qué datos existen y cómo se relacionan.
Externo = cómo los ve cada usuario o aplicación.

Perfiles de usuarios

A la hora de emplear un SGBD existen diferentes perfiles o usuarios:

  • Usuario final: interactúa con los datos pero a través de alguna aplicación o servicio.
  • Analista/Ingeniero de datos: perfiles de alto nivel encargados de diseñar las arquitecturas de datos (tanto a nivel lógico como físico).
  • Desarrollador: desarrolla aplicaciones que explotan los datos, creando consultas y operaciones de inserción, borrado o modificación de los datos existentes. Un desarrollador web o multiplataforma interactúa con una o más bases de datos en sus aplicaciones.
  • Administrador de la base de datos (DBA - Database Administrator): persona o grupo de personas responsables del control del sistema gestor de base de datos. Las principales tareas de un administrador son:
    • Codificación del esquema lógico y físico de la BD.
    • Codificación de las vistas de usuario.
    • Asignación y edición de permisos de todos los usuarios del sistema.
    • Mantenimiento y seguimiento de la seguridad.
    • Mantenimiento general del SGBD.

Actividades

A1.1 Errores de almacenamiento

A1.1 (RA1 | CE1a)

Nos han enviado un par de archivos de una aplicación legacy y aparentemente algunos datos están mal almacenados.

  • El fichero fabricantes.csv contiene los datos de fabricantes, en concreto el código del fabricante y su nombre.
  • El fichero productos.csv contiene datos de los productos: código, nombre del producto, precio en euros y una referencia a un código del fabricante del fichero anterior.

Se pide:

  • Enumera los errores detectados e indica cómo solucionarlos.
  • Indica el tipo de acceso que se realiza sobre los ficheros y los posibles errores que nos podríamos encontrar si una aplicación gestionase sus datos mediante estos dos ficheros.
  • Además de un documento con los apartados anteriores, adjunta una copia de los archivos con los problemas solucionados.

A1.2 Modelos de datos

Sobre la base de los ficheros del ejercicio anterior, se quiere desarrollar una aplicación que gestione los productos y fabricantes.

Se pide:

  • Proponer un modelo de datos para la aplicación, incluyendo las entidades, atributos y relaciones.
  • Justifica las decisiones tomadas en el diseño del modelo.

A1.3 Comparativa de SGBD

Se pide:

  • Realiza una comparativa entre dos sistemas gestores de bases de datos relacionales (por ejemplo, MySQL y PostgreSQL), indicando sus características principales, ventajas e inconvenientes.

A1.4 Infografías

  1. Realiza una infografía con de la legislación vigente en materia de protección de datos (por ejemplo, RGPD en Europa). Puedes usar cualquier herramienta que te permita crear infografías (por ejemplo, canva).

  2. Realiza una infografía sobre Big Data y su relación con las bases de datos. Puedes usar cualquier herramienta que te permita crear infografías (por ejemplo, canva).

A1.5 Mapa conceptual

Realiza un mapa conceptual con los conceptos más relevantes de la unidad. Puedes usar cualquier herramienta que te permita crear mapas conceptuales (por ejemplo, draw.io).