Hacia un almacén de datos moderno
11/05/2020 -
Pese a que tradicionalmente los dos tipos de almacenes de datos han estado claramente separados y sus funcionalidades muy claras, de un tiempo a esta parte han aparecido algunas herramientas de análisis que permiten que algunas de las aplicaciones claras de un Data Warehouse comiencen a realizarse en los Data Lakes. Pero, antes de nada, vamos a definir rápidamente qué son ambas cosas.
Data Warehouse
Un Data Warehouse es un almacén de datos destinado al análisis de los mismos. En los Data Warehouse se almacenan datos estructurados, que han sido tratados y seleccionados previamente. Para toda esa gestión se usan procesos ETL, ya sea con herramientas destinadas a ese fin, o bien de manera programática usando PL/SQL, Java, Python, etc.
Los Data Warehouse están destinados al análisis y se modelan pensando en ello. Seguro que muchos conocéis a Ralph Kimball, el autor de The Datawarehouse Toolkit, la biblia del modelado de datos.
Los principales problemas que nos encontramos con los Data Warehouse son los siguientes:
- Requieren una fase de análisis bastante profunda para desnormalizar los datos y crear los famosos “modelos de estrella”.
- Es necesario usar herramientas ETL que, en muchos casos, suponen crear complejos sistemas de extracción y transformación de datos.
- Las cargas deben estar muy bien diseñadas para evitar fallos y exceso de tiempo de ejecución.
- La modificación de estos modelos suele ser bastante compleja. La adición de nuevas columnas no suele ser excesivamente traumática, aunque sí laboriosa. Sin embargo, cambios en el modelo nos obligan a cambiar gran cantidad de procesos.
Data Lake
Su objetivo es el mismo que el del Data Warehouse, el almacenamiento de gran cantidad de información para su posterior análisis, pero desde una perspectiva diferente. Los Data Lakes almacenan información en formato nativo, sin transformaciones o transformaciones mínimas. Por lo tanto, aquí encontraremos datos en diferentes formatos: estructurados, semiestructurados y no estructurados.
Los Data Warehouse normalmente se construyen intentando dar una visión de una parte del negocio, se modelan pensando en procesos de negocio específicos. Por contra, los Data Lakes son mucho más abiertos y dejan en la fase posterior de análisis del dato esa orientación a negocio.
Ya hemos definido ambos conceptos, ambas metodologías a la hora de crear un almacén de datos para su posterior análisis. Los Data Warehouse se orientan a ofrecer a los usuarios de negocio entornos más sencillos y más enfocados al negocio, mientras que los Data Lakes habitualmente se crean para dotar a científicos de datos de toda la información necesaria para sus análisis.
La línea divisoria entre ambos parece clara, pero en los últimos años esa línea empieza a desdibujarse y los Data Lakes están ganándole terreno a los Data Warehouse en algunas ocasiones. Esto sucede principalmente por dos razones:
- Los Data Warehouses son tremendamente complejos de crear y mantener. Además, son mucho menos flexibles. Es cierto que entregan una visión del negocio muy dirigida a los usuarios de negocio, pero por el contrario requieren de muchísima codificación para poder dar respuesta a todas las áreas de negocio.
- Nuevas tecnologías. Los Data Lakes son los grandes beneficiados de las arquitecturas cloud. Han aparecido gran cantidad de herramientas que nos ayudan a su creación, gestión y explotación, haciendo que esa “capa” de complejidad que les recubría comience a difuminarse.
Vamos a pensar en un ejemplo de arquitectura Data Lake:
Presentamos un ejemplo de Data Lake con 4 tipos de almacenamiento diferente. No siempre los Data Lakes tendrán tantas opciones distintas, pero nos sirve para dar una visión más amplia. Como vemos, podemos almacenar cualquier tipo de información y en cualquier tipo de formato.
El problema que tienen los Data Lakes viene de su gran versatilidad. El hecho de poder tener tantas fuentes de datos diferentes y en tantos formatos diferentes hace que no sea fácil identificar y consultar los datos con los que deseamos trabajar. Es por esto por lo que tradicionalmente los Data Lakes han quedado relegados a esos perfiles avanzados, esos científicos de datos con altos conocimientos del negocio.
Como hemos comentado antes, las arquitecturas Cloud han facilitado y potenciado la aparición de nuevas herramientas que pueden ayudar a organizar nuestra información en estos entornos “desorganizados”.
En la arquitectura hemos pintado dos piezas más aparte de nuestro Data Lake:
- Oracle Data Catalog. Nos permite crear glosarios de información, estructurar nuestras entidades lógicas, de negocio y mapearlas a nuestros datos repartidos en diferentes fuentes y diferentes formatos.
- Oracle SQL Cloud. Una vez tenemos claro cómo se organiza nuestra información, Oracle nos provee de un acceso transversal a todas nuestras fuentes. No es necesario saber dónde está cada dato, será SQL Cloud quien hará “Query Federation” para ir a cada una las fuentes de datos y juntará toda la información, devolviéndonos un resultado único.
¿Cuáles serían los próximos pasos? Ahora llegaríamos a la capa de reporting a análisis. Accediendo vía ese acceso unificado podemos abstraernos de la complejidad de esos sistemas. Podríamos conectar cualquier herramienta de reporting y comenzar a analizar la información. Si nuestra empresa tiene la suerte de tener científicos de datos en sus filas, también podrán usar ese sistema, quizás saltándose esa capa de abstracción y acceder directamente a los datos en “bruto”.
Gracias a este tipo de herramientas, los Data Warehouses clásicos van quedando cada vez más y más relegados y este tipo de arquitecturas Data Lake dan más capacidad para cubrir más necesidades de las compañías.