¡Soy un programador perezoso! Ese fue un detalle importante que aprendí de Roelant Vos en su formación de la semana pasada. Pero hubo muchos otros temas interesantes. Un resumen personal de una clase de 3 días sobre Patrones de Diseño de Almacenes de Datos.
La semana pasada tuve la oportunidad de asistir a la clase Patrones de Diseño de Almacenes de Datos de Roelant Vos. He visto a Roelant en presentaciones en conferencias de modelado de datos, y aprecio su blog con mucha información útil sobre arquitectura de Data Warehouse e implementación de Data Vault. Así que, cuando recibí la información de mis colegas de Trivadis de que iba a dar una formación en Zúrich, aproveché la oportunidad de unirme a esta clase de 3 días.
No voy a escribir una revisión detallada de todo el curso en esta entrada del blog. Pero en las siguientes líneas encontrarás algunas notas sobre tres temas que fueron – desde mi punto de vista – importantes en esta formación: Diseño Basado en Patrones, Área de Preparación Persistente y Almacén de Datos Virtual.
Una arquitectura típica de almacén de datos consta de múltiples capas para cargar, integrar y presentar la información del negocio desde diferentes sistemas fuente. El número y los nombres de las capas pueden variar en cada sistema, pero en la mayoría de los entornos los datos se copian de una capa a otra con herramientas ETL o sentencias SQL puras. Con una buena arquitectura, los patrones para transformar y cargar los datos en una capa concreta son siempre similares. Esto facilita (y agiliza) el desarrollo de los procesos ETL, ya que los patrones repetibles pueden generarse con la herramienta de automatización del almacén de datos (DWA). En el blog de Roelant, se puede encontrar una visión general de su marco de integración de datos. Los ejemplos de código están disponibles en GitHub.
¿Por qué soy un programador perezoso? Como muchos otros desarrolladores, no me gusta escribir código repetitivo. Roelant también es un programador perezoso. Por eso dedicó mucho tiempo a desarrollar herramientas y métodos para acelerar las tareas de desarrollo generando el código SQL para construir y cargar almacenes de datos. Durante el curso, explicó muchos patrones de diseño con el generador de SQL VDW (Virtual Data Warehouse). Se puede descargar desde su página web de forma gratuita y es útil para realizar prototipos rápidos y pruebas de regresión de los cambios en los patrones.
Persistent Staging Area
Una capa importante en la arquitectura propuesta es la PSA (Persistant Staging Area). Aunque esta área de la capa de staging es opcional, es muy práctica y muy recomendable, especialmente cuando los requisitos de negocio aún no están claros al inicio del proyecto. La PSA es un archivo histórico de los datos de los sistemas de origen y sustituye a la clásica zona de puesta en escena volátil. La PSA se carga con mecanismos CDC (Change Data Capture) o con una detección delta entre el sistema fuente y la versión actual de la PSA. El Área de Puesta en Escena Persistente es la única fuente para cargar las tablas de la Bóveda de Datos (Hubs, Links y Satélites) en la Capa de Integración.
La ventaja de un Área de Puesta en Escena Persistente es que sólo hay que cargar en las tablas de la Bóveda de Datos las partes actualmente necesarias. No tenemos que preocuparnos por los requisitos futuros, porque los datos originales siguen estando disponibles en el PSA y se pueden volver a cargar cuando se necesiten. He visto y utilizado este enfoque en varios proyectos de clientes, y es un buen seguro contra los requisitos de negocio desconocidos.
Almacén de Datos Virtual
Cuando vi a Roelant Vos por primera vez en la conferencia Data Modeling Zone 2017 en Düsseldorf, quedé muy impresionado sobre un interesante enfoque de arquitectura que explicó: La única capa persistente de un almacén de datos es el APS, y todo lo demás se implementa sobre las tablas del APS con vistas. Esta es la implementación consistente de un Almacén de Datos Virtual que es soportado por el software VDW de Roelant. He visto esto en teoría y en algunas presentaciones, pero nunca en su forma completa en un proyecto real.
Este enfoque «NoETL» tiene varias ventajas: 1. Es muy fácil cambiar la lógica de transformación sin recargar todas las capas de su almacén de datos. 2. Tan pronto como se cargan los nuevos datos en la capa PSA, son inmediatamente visibles en todas las capas posteriores. 3. Se trata de una especie de almacén de datos de esquema en lectura en el que se puede decidir en el momento de la consulta cómo deben interpretarse los datos de origen. Todo esto suena muy bien, pero sigo viendo el reto de un buen rendimiento de las consultas. Creo que, en la mayoría de las situaciones, al menos los datos más utilizados deben persistir. Pero con el enfoque de las vistas, esto se puede hacer sin mucho esfuerzo, por ejemplo con las vistas materializadas.
El curso de 3 días ha cumplido con creces mis expectativas. Aunque ya utilizaba algunos de los conceptos por mí mismo (para ser honesto, la mayor parte de lo que Roelant explicó ya me era familiar), me gustó mucho la construcción paso a paso de una arquitectura de almacén de datos utilizando muchos ejemplos de código y demostraciones en vivo. O como dije como feedback espontáneo al final del curso: «Ha sido divertido».