Dentro de la arquitectura global de contexto se identifican un conjunto de orígenes de datos que los componentes software pueden necesitar para sus procesos de negocio o gestión de datos técnicos.
Bases de datos relacionales
Las bases de datos relacionales almacenan información relacionada entre sí. La información se almacena distribuida en tablas donde cada registro de la tabla tiene un identificador único llamado clave primaria. Este identificador permite identificar al registro de forma unívoca. Además, cada registro de la tabla puede tener una serie de identificadores llamados claves foráneas que indican con qué otras tablas y registros concretos tiene relación.
Las bases de datos relacionales se pueden emplear para cualquier aplicación de datos en la que los puntos de datos se relacionen entre sí y deban gestionarse de forma segura, conforme a normas y de un modo uniforme.
Características principales:
- Modelo basado en tablas, claves primarias y foráneas para organizar la información.
- SQL para la realización de consultas y acciones de interacción con la base de datos (inserción, modificación o eliminación).
- Transacciones ACID.
- Posibilidad de definir índices y vistas para agilizar el acceso a la información.
- Triggers o disparadores para desencadenar acciones al cambiar el estado de la base de datos.
- Seguridad y tolerancia a fallos.
Beneficios:
- Integridad de los datos: Las bases de datos relacionales utilizan claves primarias y foráneas para garantizar que los datos sean consistentes y válidos. Las restricciones de integridad ayudan a prevenir la duplicación de datos y a asegurar que las relaciones entre tablas se mantengan correctamente, lo cual es crucial para la precisión de la información.
- Escalabilidad y rendimiento: Las bases de datos relacionales modernas están diseñadas para manejar grandes volúmenes de datos y un gran número de usuarios simultáneos. Tecnologías avanzadas, como el particionamiento de tablas y el uso de índices, mejoran el rendimiento de las consultas y la escalabilidad del sistema.
- Normalización: El proceso de normalización organiza los datos en múltiples tablas relacionadas para minimizar la redundancia y la dependencia. Esto no solo ahorra espacio de almacenamiento, sino que también facilita la actualización y el mantenimiento de los datos.
- Seguridad: Las bases de datos relacionales ofrecen robustas características de seguridad, como controles de acceso basados en roles, encriptación de datos y auditoría de actividades. Esto ayuda a proteger los datos contra accesos no autorizados y a cumplir con regulaciones de privacidad y seguridad.
- Mantenimiento y Recuperación: Las bases de datos relacionales permiten realizar copias de seguridad y recuperación de datos de manera eficiente. Los sistemas de gestión de bases de datos (DBMS) proporcionan herramientas para realizar estas tareas de manera automatizada, lo que asegura la disponibilidad y la integridad de los datos en caso de fallos o desastres.
Principales casos de uso:
- Almacenamiento de datos maestros: Puede almacenarse en una base de datos relacional aquella información que es común a todo un sistema y quiera accederse a ella de forma rápida y sencilla. De esta forma, si cambia, solo hay que modificarla en un único sitio para que a través de las claves foráneas quede actualizada automáticamente en todos los sitios donde se utiliza.
Ejemplo: provincias, listado de procedimientos administrativos, códigos postales, importe de tributos... - Almacenamiento de información estructurada: Cuando la información está estructurada y puede definirse un esquema.
Ejemplo: ciudadanos, empleados, registro civil, censo…
Bases de datos no relacionales
Las bases de datos no relacionales están diseñadas para gestionar y almacenar información que no está estructurada. Por información no estructurada nos referimos información que no puede definirse en un esquema o que dicho esquema adquiere una complejidad muy elevada para poder trasladarlo a una base de datos relacional.
A diferencia de las bases de datos relacionales que utilizan tablas con filas y columnas, las bases de datos no relacionales almacenan la información en estructuras llamadas documentos bajo un formato JSON.
Características principales:
- No es necesario definir un esquema para los datos.
- Utiliza API para las consultas en vez de SQL.
- Optimizadas para lecturas y escrituras rápidas.
- Almacenamiento distribuido con capacidad de replicación y particionamiento para garantizar la alta disponibilidad.
- Seguridad y tolerancia a fallos.
- Sistemas de indexación personalizables.
Beneficios:
- Escalabilidad horizontal: Las bases de datos no relacionales están diseñadas específicamente para permitir un escalado horizontal. El escalado horizontal permite modificar de forma dinámica y en tiempo real el número de nodos disponibles para adaptarse a la demanda.
- Flexibilidad en los datos: Las bases de datos no relacionales no requieren de un esquema bien definido. Es posible almacenar información sin esquema lo que las hace muy interesante para almacenar datos cambiantes o muy poco estructurados.
- Manejo de datos en diferentes formatos: Las bases de datos no relacionales permiten gestionar datos de diversas fuentes y formatos como JSON, XML…
- Capacidad para procesar grandes volúmenes de información: Las bases de datos no relacionales están optimizadas para procesar grandes volúmenes de información como análisis de Big Data, procesamiento de datos en tiempo real y gestión de información procedente de IoT.
Casos de uso:
- Esquema único de datos con múltiples usos: Cuando el contenido de un elemento puede ser tan versátil y complejo que hace casi imposible definir un esquema y normalizarlo: Ejemplo: formularios, expedientes.
- Histórico de información: A menudo es necesario almacenar una gran cantidad de información histórica. Esta información habitualmente no se consulta en las aplicaciones de uso diario sino que se utiliza para nutrir sistemas Big Data y de análisis de información.
Datalake
Un Datalake es un repositorio de almacenamiento que contiene una gran cantidad de datos en bruto y que se mantienen allí hasta que sea necesario.
A cada elemento del Datalake se le asigna un identificador único y se etiqueta con un conjunto de etiquetas de metadatos extendidas. Cuando un proceso de negocio lo necesite, puede solicitarle esa información al Datalake que se la dará en bruto y un proceso transformador la analiza y transforma en información estructurada que pueda ser utilizada.
Características principales:
- Ingesta de datos en bruto.
- Capacidad para almacenar información de diversas fuentes y formatos.
- Implementan una arquitectura distribuida que permiten distribuir los datos y la carga de trabajo.
- Procesamiento en tiempo real.
- Securización y gobernanza de la información almacenada.
Beneficios:
- Almacenamiento de datos a gran escala: Un Datalake puede almacenar enormes volúmenes de datos en su forma cruda y original, sin necesidad de estructurarlos previamente. Esto permite guardar datos de diferentes tipos de una forma eficiente.
- Centralización de fuentes: Permite centralizar fuentes de contenido dispares como datos de transacciones, logs, redes sociales o sensores IoT. Estas fuentes, una vez reunidas pueden combinarse y procesarse usando mecanismos de Big Data.
- Fomenta la reutilización de contenido: La información puede normalizarse y centralizarse permitiendo así que el dato recolectado pueda servir de fuente a cualquier proyecto con permiso para consultarlo.
- Mejora la toma de decisiones: Al tener acceso a toda la información posible se pueden realizar análisis más profundos y precisos, mejorando la toma de decisiones.
Casos de uso:
- Generación de informes: Dado toda la información que almacena un Datalake, esta información una vez procesada puede utilizarse para generar informes.
- Generación de estadísticas y cuadros de mando: La información puede servir para generar estadísticas y cuadros de mandos en tiempo real.
Indexador
Un indexador es una herramienta que permite analizar, procesar y organizar datos con el objetivo de facilitar su búsqueda, recuperación y análisis eficientes. Su función principal es crear índices que representan la estructura y el contenido de los datos, permitiendo realizar consultas rápidas y precisas sobre ellos.
Características principales:
- Capacidad para analizar y estructuras datos de diferentes formatos para crear índices optimizados para búsquedas rápidas.
- Procesamiento de texto y procesamiento lingüístico.
- Capacidad para realizar búsquedas complejas y relevantes sobre los datos indexados (motor de búsqueda).
- Capacidad para indexar y buscar datos casi en tiempo real.
- Control de relevancia para ajustar y controlar la relevancia de los resultados de búsqueda, permitiendo personalizar el ranking y la presentación de resultados según las necesidades del usuario.
Beneficios:
- Búsqueda Eficiente: Permite encontrar información relevante rápidamente dentro de grandes conjuntos de datos, lo que mejora la productividad y la toma de decisiones basadas en datos.
- Análisis Avanzado: Facilita el análisis y la extracción de información útil de los datos mediante la aplicación de herramientas y técnicas de análisis de datos.
- Mejora de la Experiencia del Usuario: Proporciona una experiencia de búsqueda más intuitiva y personalizada, lo que aumenta la satisfacción del usuario y la adopción de la herramienta.
- Consolidación de Datos: Permite consolidar datos dispersos en diferentes fuentes y sistemas en un único repositorio de datos indexados, lo que simplifica la gestión y el acceso a la información.
Casos de uso:
- Almacenamiento de log distribuidos: En sistemas donde una petición pasa por varios productos software, un indexador permite almacenar estos logs en un sistema centralizado y consultar para una única petición todos los logs generados en los diferentes productos software por lo que ha transitado.
- Búsqueda avanzada de texto: Un indexador permite incluir en los portales y aplicaciones motores de búsqueda de texto que no se limiten a buscar explícitamente el texto solicitado en una base de datos, sino realizar un procesamiento que permita mostrar resultados variados y ordenados por relevancia.
Sistemas de ficheros
Un sistema de ficheros es un lugar donde organizar y almacenar archivos para que puedan ser consultado por las aplicaciones que lo necesiten.
Tradicionalmente, un sistema de ficheros era un directorio dentro de un servicio o sistema ubicado en una máquina física y al que todas las aplicaciones podían acceder utilizando protocolos como ssh o ftp. En los actuales sistemas basados en contenedores, los sistemas de ficheros son servicios centralizados y accesibles mediante una API.
Características principales:
- Organización jerárquica mediante carpetas o directorios.
- Información no estructurada y de diversos formatos.
- Acceso directo a datos mediante rutas de almacenamiento o el nombre del archivo.
- Manipulación de archivos.
Beneficios:
- Organización de datos: Un sistema de ficheros proporciona una estructura jerárquica para organizar y almacenar información. Los archivos pueden organizarse en directorios facilitando así su búsqueda y clasificación.
- Acceso rápido: Permite un acceso rápido a los datos almacenados. Los sistemas de ficheros están diseñados para proporcionar un acceso eficiente a los archivos permitiendo a los usuarios recuperar y manipular la información rápidamente.
- Compatibilidad: La mayoría de los sistemas operativos admiten sistemas de ficheros estándar, lo que garantiza la compatibilidad entre diferentes plataformas y aplicaciones. Los archivos creados en un sistema operativo pueden ser fácilmente transferidos y utilizados en otro sin problemas de compatibilidad.
- Seguridad: Los sistemas de ficheros ofrecen opciones para proteger los datos mediante permisos de acceso y encriptación. Esto ayuda a garantizar la confidencialidad, integridad y disponibilidad de la información almacenada.
- Copia de Seguridad y Recuperación: Facilitan la realización de copias de seguridad regulares de los datos almacenados y la recuperación de información en caso de pérdida o daño. Los usuarios pueden realizar fácilmente copias de seguridad de archivos importantes y restaurarlos en caso de fallo del sistema.
Casos de uso:
- Envío de datos de gran tamaño: Una problemática común es buscar una forma de mandar archivos de gran tamaño entre diferentes unidades o servicios. Una solución a este problema, cuando ambos servicios pueden acceder al sistema de ficheros centralizado, puede ser almacenar el fichero en el sistema de ficheros y mandar la ruta o un identificador.
- Gestor documental: Los gestores documentales son sistemas de ficheros que además de almacenar el fichero almacena metadatos e información que permiten llevar un seguimiento sobre la evolución de esos ficheros y quien ha tenido acceso a ellos.
Caché
Una caché es una memoria de acceso rápido que almacena copias de datos que se utilizan con frecuencia, para de esta forma, acelerar el acceso a estos datos y reduciendo la latencia con respecto al tiempo que tardaría en acceder a esa información desde la fuente principal.
Lo habitual es tener una caché centralizada que de servicio como mínimo a un sistema de información mínimo, de esta forma la información almacenada puede ser consultada por todos los productos software que componen el sistema.
Características principales:
- Almacenamiento temporal de la información.
- Tamaño limitado en comparación con otros orígenes de datos.
- Política de reemplazo que determina qué información se elimina cuando la caché está llena para almacenar nuevos datos.
Beneficios:
- Mejora del Rendimiento: Al reducir la latencia en el acceso a datos, una caché mejora significativamente el rendimiento del sistema, lo que se traduce en tiempos de respuesta más rápidos para las operaciones de lectura y escritura.
- Reducción del Tráfico de Red y Carga del Servidor: Al almacenar copias de datos utilizados con frecuencia en la memoria local, una caché reduce la necesidad de acceder a la fuente de datos principal a través de la red, lo que disminuye el tráfico de red y la carga en el servidor.
- Ahorro de Recursos: Al acelerar el acceso a datos, una caché reduce la necesidad de utilizar recursos del sistema, como el procesador y la memoria principal, de manera intensiva, lo que mejora la eficiencia del sistema en general.
- Mejora de la Experiencia del Usuario: Al proporcionar tiempos de respuesta más rápidos para las operaciones de lectura y escritura, una caché mejora la experiencia del usuario al hacer que las aplicaciones sean más receptivas y fluidas.
Casos de uso:
- Acceso a datos estáticos: Cuando un servicio o API consulta información procedente de otra de las fuentes de datos y esta información se mantenga estable y sin cambios en el tiempo, puede hacerse una copia de esta información en la caché para poder acceder a ella rápidamente.
- Almacenamiento de sesiones: Si se utiliza una caché centralizada, esta puede utilizarse para simular sesiones de usuario en entornos basados en contenedores donde este estado no es posible almacenarse en el propio pod.