Estás viendo una versión antigua de esta página. Ve a la versión actual.
Comparar con el actual Ver el historial de la página
« Anterior Versión 11 Siguiente »
Estado | BORRADOR | ||||||||
|---|---|---|---|---|---|---|---|---|---|
Partes interesadas | |||||||||
TAGS | |||||||||
Tomada el |
| ||||||||
Responsable | |||||||||
Documentación Asociada | |||||||||
Solución Afectada | Trasversal | ||||||||
|
Asunto a Decidir | Objetivos La historificación de registros en bases de datos, es decir, la gestión y almacenamiento de datos fríos (menos consultados) y calientes (más consultados o recientes), es clave para mantener un rendimiento óptimo y gestionar de forma eficiente el almacenamiento y los costes. Se analizarán las diferentes alternativas tecnológicas asentadas en la industria, y se realiza una evaluación de las mismas en base a una selección de características no funcionales claves identificadas del estandard ISO25010 adecuado a soluciones software. Las características ISO/IEC 25010 evaluadas son las siguientes: ISO/IEC 25010 Es la capacidad del sistema para estar accesible y operativo para los usuarios cuando se necesite. En el contexto de historificación, la disponibilidad implica que tanto los datos calientes como los datos fríos deben estar accesibles de acuerdo con los niveles de servicio requeridos. Los datos calientes, que se consultan frecuentemente, deben estar disponibles de inmediato, mientras que los datos fríos pueden tener mayores tiempos de respuesta, siempre y cuando cumplan con las expectativas del usuario final. ISO/IEC 25010 Hace referencia a los tiempos de respuesta y la eficiencia temporal de las operaciones sobre los datos. En mecanismos de historificación, es fundamental optimizar el tiempo de acceso a datos calientes, asegurando tiempos de consulta rápidos. Para los datos fríos, los tiempos de respuesta pueden ser más relajados, pero es importante evitar que impacten el rendimiento general del sistema. ISO/IEC 25010 Es la capacidad del sistema para utilizar los recursos disponibles de manera eficiente. Esto incluye memoria, almacenamiento y capacidad de procesamiento. En la segregación de datos, la eficiencia en el uso de recursos se logra mediante el almacenamiento óptimo de datos fríos en medios de bajo costo o almacenamiento en la nube, evitando que estos datos consuman recursos en sistemas de alta disponibilidad que gestionan los datos calientes. ISO/IEC 25010 Es la habilidad del sistema para soportar grandes volúmenes de datos sin degradar su rendimiento. En un sistema con historificación, la capacidad implica asegurar que tanto los datos fríos como los calientes puedan ser gestionados en volúmenes crecientes, con una arquitectura que soporte la escalabilidad y expansión de las bases de datos sin comprometer el rendimiento. ISO/IEC 25010 La capacidad del sistema para continuar funcionando ante fallos. En la historificación, se requiere un diseño que garantice que, ante la pérdida o corrupción de datos fríos o calientes, el sistema mantenga su operatividad. Esto puede incluir replicación de datos, almacenamiento en capas, y respaldo, especialmente para los datos calientes, que tienen mayor demanda de disponibilidad. ISO/IEC 25010 La capacidad del sistema para restaurarse tras un fallo. En la gestión de datos fríos y calientes, es crucial contar con un sistema de recuperación rápida y eficaz, que permita restaurar tanto los datos fríos como los calientes en caso de fallo, especialmente en entornos que requieren alta disponibilidad y cumplimiento normativo en el almacenamiento de datos históricos. ISO/IEC 25010 Se refiere a la precisión y consistencia de los datos almacenados. En un sistema de historificación, la integridad es crítica para evitar inconsistencias entre datos fríos y calientes. La migración entre estos dos tipos de datos debe realizarse de forma segura para que los datos no pierdan su consistencia, lo que es especialmente importante en entornos regulados. ISO/IEC 25010 Garantiza que los datos sean genuinos y accesibles solo para usuarios autorizados. En el contexto de historificación, esto implica que tanto los datos fríos como los calientes deben estar protegidos contra accesos no autorizados, mediante controles de autenticación que aseguren la confidencialidad y la integridad de los datos en cada una de las capas de almacenamiento. ISO/IEC 25010 Es la capacidad del sistema para crecer en funcionalidad y carga sin afectar su rendimiento. En la historificación, se requiere que tanto los datos fríos como calientes puedan escalar en volumen sin afectar el rendimiento del sistema, utilizando tecnologías que permitan un escalado horizontal (agregando servidores) o vertical (aumentando capacidad) según sea necesario. ISO/IEC 25010 Se refiere a la facilidad de sustituir un componente del sistema por otro que cumpla la misma función. En sistemas con historificación, la reemplazabilidad permite migrar datos a nuevas tecnologías de almacenamiento (por ejemplo, cambiar un almacenamiento de datos fríos a otro más económico) sin afectar las aplicaciones que los consumen, garantizando así la adaptabilidad tecnológica. ISO/IEC 25010 Asegura que el sistema cumple los requisitos específicos de las tareas de historificación. Esto significa que las funcionalidades de segregación, acceso, migración, y recuperación de datos fríos y calientes están adecuadamente implementadas para cumplir con los objetivos y requerimientos de negocio, permitiendo una experiencia óptima al usuario en la consulta de los datos necesarios según su frecuencia y criticidad. |
|---|
Identificación de la decisión | Describe brevemente la decisión arquitectónica tomada. El presente ADR será especializado en cada solución en base a sus características arquitectónicas especificas. |
|---|
Contexto | Describe brevemente la decisión arquitectónica tomada. Consideraremos las siguientes estrategias de historificación:
Los criterios respecto a a los que se evaluarán dichos sistemas son valorando cada uno de ellos del 1 al 5:
|
|---|
Esta estrategia es dependiente de un motor de BBDD consiste en dividir una tabla en segmentos determinados por uno o varios campos. Al consultar información sobre la tabla y estás esta particionada por criterios relevantes para la historificación (por ejemplo: año/mes) puede realizar consultas de forma muy eficiente al tomar solo en consideración los datos relevantes.
Esta estrategia se basa en el uso coordinado de dos recursos OLTP, un sistema que se encarga de capturar y procesar las transacciones en tiempo real (por ejemplo una BBDD tradicional) y una BBDD OLAP (a menudo un data warehouse) que se ocupa del almacenamiento histórico. Periodicamente la información se extrae del OLTP se transforma mediante ETL y se almacena en el OLAP
Slowly Changing Dimensions o SCDs es una técnica que utiliza fechas de inicio y fin de vigencia para ir estableciendo un historial de cambios. Existen varias formas de implementar esta técnica por ejemplo separando los datos constantes (no susceptibles de cambio entre versiones) en una tabla, los datos susceptibles de cambio se meten en una tabla de versiones con una fecha de inicio y de fin de versión. Los datos operacionales serán los que no tienen fecha fin de vigencia y los históricos aquellos que si la tienen. Las fechas de inicio y fin de vigencia están indexadas o forman parte de indices para optimizar las consultas.
Esta técnica consiste en precalcular y guardar el resultado de una consulta en tabla separada, pero accesible desde el motor de la BBDD. Como tal no trata la historificación sino que ayuda a resolver el problema de consultas de alto coste sobre datos históricos ya que esos datos se consultan y extraen a la vista materializada de forma programada en tiempos de menos carga de la BBDD.
Una vez que hemos dado el contexto previo necesario planteemos los casos donde tiene sentido aplicar una vista materializada:
| Caso de Aplicación | Explicación / Ejemplo de uso |
|---|---|
| Vista Materializada de datos históricos | La vista materializada contiene los datos históricos precalculados. |
| Vista Materializada global | Similar al caso anterior pero no tratamos los datos históricos sino todos los datos. para que no perdamos integridad en la información la cantidad de cambios entre la creación de la vista y su refresco debe ser asumible |
Hay tantos casos de aplicación como queramos imaginar , pero todos tiene unas características comunes:
Esta técnica recuerda en ciertos aspectos al particionado de tabla. Consiste en la división de los datos en periodos de tiempo (Shards). Cada shard almacena un periodo de tiempo, esto permite que las consultas acudan sólo a los shards relevantes. Cada shard puede residir en un servidor diferente lo que permite no solo almacenar grandes volúmenes de datos sino que también podremos tratar cada shard independientemente
La historificación habitualmente ha consistido en la extracción de la información histórica a un sistema tercero muy masivo en cuanto a capacidad, el problema que presenta esa estrategia es que el acceso y el análisis de la información historificada es muy lento en comparación al acceso a la información operacional. Esta técnica busca compensar las carencias que tenía ese enfoque.
Cuando buscamos aplicar esta técnica lo que hacemos es en una primera instancia definir lo que es información pura de lo que se consideran metadatos. Los metadatos son aquellas informaciones que nos permiten identificar un registro concreto, por ejemplo, y dado que hablamos de historificación, metadatos serían los campos de auditoria. Una vez que tenemos claro en qué consisten los metadatos pasamos a la operativa en sí:
Cuando historificamos información lo que hacemos es enviar los registros a algún sistema de almacenamiento económico y de gran capacidad guardando los metadatos en una BBDD junto a una referencia que nos permita encontrar la información de forma eficiente (por ejemplo: fichero:AAAA-MM-DD.txt offset:XXXX).
Cuando lanzamos una consulta que incluye datos historificados lo que hacemos es acudir a la BBDD de metadatos y consultar allí obteniendo la ubicación de la información requerida y pudiendo acceder a esta de forma eficiente.
Aquí se plantean opciones que se plantean como habitualmente en el caso de historificación y que merecen una consideración de sus cualidades aunque no entremos en demasiado detalle.
El objetivo es mantiene una tabla donde cada cambio implica una nueva tupla reflejando el cambio, en ese sentido se podría considerar como un changelog en BBDD. Al considerar información se auditoria asociada a la tabla podríamos considerar que contiene un historial completo de un dato pero en realidad estos campos serian propios de otras técnicas quedando esta tabla como un changelog y no un estado o una versión de estado
Event sourcing por definición registra cambios/eventos por lo tanto no es aplicable a la historificación de hecho habitualmente podemos ver Event Sourcing para tratar información operativa, tratando esta como un changelog pero al historificar deja paso a alguna de las estrategias ya comentadas (es muy habitual el esquema kafka-Mongo, es decir Event sourcing - Sharding basado en tiempo)
A pesar de que son técnicas indudablemente relacionadas con las otras planteadas aquí e incluso aportan ventajas en combinación con estas, no tratan realmente la historificación y por lo tanto no aplicarían.
La evaluación de las siguientes características dependen enormemente de las soluciones concretas que se adopten por lo tanto lo que plantea no es tanto una una valoración frente a objetivo como entre las propias estrategias
| Nombre de la Estrategia | Disponibilidad | Comportamiento Temporal | Utilización de Recursos | Capacidad | Tolerancia a Fallos | Recuperabilidad | Integridad | Autenticidad | Escalabilidad | Reemplazabilidad | Idoneidad Funcional |
Particionado de tabla | |||||||||||
| OLTP + OLAP | |||||||||||
| SCDs | |||||||||||
| Sharding basado en tiempo | |||||||||||
| Archivo Automatizado con Segregación de Datos y Metadatos | |||||||||||
| Materialized Views |
() Hay tecnologías que proveen la máxima disponibilidad y replicación de la información con lo que maximiza tanto la disponibilidad como la tolerancia a fallos
Se trata de un ADR trasversal que requiere una especialización específica para cada solución a historificar en base a sus características arquitectónicas.
Describe brevemente la decisión arquitectónica tomada.
La evaluación de las siguientes características dependen enormemente de las soluciones concretas que se adopten por lo tanto lo que plantea no es tanto una una valoración frente a objetivo como entre las propias estrategias
| Nombre de la Estrategia | Disponibilidad | Comportamiento Temporal | Utilización de Recursos | Capacidad | Tolerancia a Fallos | Recuperabilidad | Integridad | Autenticidad | Escalabilidad | Reemplazabilidad | Idoneidad Funcional |
Particionado de tabla | |||||||||||
| OLTP + OLAP | |||||||||||
| SCDs | |||||||||||
| Sharding basado en tiempo | |||||||||||
| Archivo Automatizado con Segregación de Datos y Metadatos | |||||||||||
| Materialized Views |
() Hay tecnologías que proveen la máxima disponibilidad y replicación de la información con lo que maximiza tanto la disponibilidad como la tolerancia a fallos
Describe brevemente la decisión arquitectónica tomada.