Almacenamiento de Datos Moderno
En el sector de la informática conforme avanza la tecnología hay soluciones que, como pasa en tantos otros aspectos de la vida, desaparecen o por lo menos disminuye su presencia, o aparecen de nuevas, o algunas de las existentes evolucionan; nada nuevo bajo el sol. Sin embargo, aun no siendo la única, hay una que lleva siendo puntera desde hace muchos años, y sigue en la brecha: estoy hablando del Almacenamiento de Datos Moderno.
He utilizado este término porque es el que utiliza en castellano Microsoft, y las soluciones que explicaré posteriormente son suyas basadas en Azure. Pero se puede encontrar como Modern Data Warehousing, o Modern Data Infrastructure, …simplificando es el análisis de datos de siempre, pero que como decía al inicio no para de evolucionar debido a muchas tecnologías nuevas tanto en la gestión de los datos como en su análisis en sí, y ya no es el Business Intelligence, o Business Analytics, o tantos nombres que ha habido y habrán, y que ahora se suelen resumir en dos opciones: los sistemas analíticos, sistemas de decisión basados en datos, y los sistemas operacionales, obviamente basados también en datos, pero de machine learning.
Introducción…
Al respecto hay un artículo muy interesante que un conocido de una empresa del sector compartió días atrás en una red social, y que os recomiendo. Como suele pasar con artículos de este tipo las soluciones que se explican son, especialmente para mercados para el español, excesivamente grandes para la mayoría de empresas que existen, pero tal como se explica en el mismo artículo se pueden adaptar al tamaño específico de cada una.
En este post voy a hablar de la plataforma Azure como infraestructura para una solución de este tipo, y los diferentes componentes que tenemos disponibles para una solución de Almacenamiento de Datos Moderno, que incluya datos relacionales (las bases de datos de nuestros sistemas ERP o CRM, por ejemplo) y no relacionales (archivos, redes sociales, e Internet de las cosas -Internet of Things, o IoT-). Hemos de tener en cuenta que hay datos que se han de tratar completamente actualizados (procesos de fabricación, bolsa,…) mientras que otros son históricos (ventas, compras,…).
Como he avanzado anteriormente, y como solemos abordar las soluciones de análisis de datos en Certia, hay dos apartados claros -con sus posibles subapartados- en una solución de este tipo: la preparación y gestión de los datos a analizar, y la creación de objetos para analizarlos. En nuestra experiencia nos hemos encontrado desde clientes que han requerido un trabajo pormenorizado en la preparación y gestión mientras que en el análisis se ha hecho con herramientas ofimáticas, hasta clientes en los que ha sido fácil preparar los datos pero han necesitado soluciones diversas y avanzadas en el análisis; y por en medio, pues un poco de todo. En este post me centraré en el primero: preparación y gestión de los datos.
Preparación de Datos
Cuando se trata de acceder y recuperar datos de una o más fuentes de datos y transformarlos tenemos un servicio de integración de datos en Azure, que es Azure Data Factory, una herramienta ETL-ELT. Podremos seleccionar los datos que nos interesen de cada fuente de datos, y transformarlos, convirtiéndolos en una sola estructura, para luego almacenarlos donde corresponda y poderlos procesar. Y todo ello lo podremos hacer a través de su interfaz gráfica, sin requerir codificación, aunque también tenemos esa posibilidad.
Almacenamiento de Datos
Un repositorio obvio de datos que podemos utilizar es Azure SQL Database: este servicio de base de datos relacional PaaS (Platform as a service) lo podemos utilizar tanto en el momento de recuperar datos en “crudo” como una vez tratados. No me extenderé en Azure SQL Database pues si queréis más información tenéis disponible un post que publiqué íntegramente sobre esta solución.
El almacenamiento en Azure Data Lake Store es otra de las opciones que tenemos cuando se trata de almacenar información. Un lago de datos -Data Lake- es un repositorio pensado para cargar y actualizar grandes cantidades de datos rápidamente, con datos sin procesar. Podemos considerar un Data Lake como un almacén provisional donde guardar datos antes de transformarlos para poder analizarlos, aunque también puede ser accedido directamente desde servicios de análisis como Apache Hadoop.
Procesamiento de Datos
Cuando se trata de analizar datos requerimos tecnologías que nos permitan procesar rápidamente muchos datos, como es el caso del motor analítico de Azure Synapse Analytics. Utilizando fuentes de datos como bases de datos, Azure Data Lake, o archivos planos, podremos obtener los datos necesarios para transformarlos y adecuarlos a un formato idóneo para el análisis, que podremos consultar con informes, gráficos, y grafos.
Ya que Azure Synapse Analytics puede llegar a utilizar cantidades de datos muy elevadas, se le ha dotado de una arquitectura de procesamiento paralelo masivo, y admite dos modelos de cálculo: Grupos de SQL, y Grupos de Spark. Incluye una tecnología llamada Polybase que permite utilizar no solo orígenes relacionales sino también no relacionales, como los servicios de almacenaje de Azure Blob Storage y Azure Data Lake Storage, o también ficheros de texto, y puede guardar todos sus datos en sus tablas SQL. Cuando el modelo de cálculo es un grupo Spark se utilizan lenguajes como C#, Python, Scala o Spark SQL (un dialecto diferente de SQL a partir de Transact-SQL) para escribir el código, y los datos se almacenan en Azure Storage o Azure Data Lake Storage.
Adicionalmente, los datos de Azure Synapse Analytics pueden usarse como base para, a través de Azure Analysis Services, disponer de un procesamiento analítico adicional.
Azure Analysis Services habilita disponer de consultas analíticas OLAP a través de sus modelos tabulares, ya sea de un solo origen de datos o de múltiples orígenes, como los propios de Azure (SQL Database, Synapse Analytics, Data Lake Store, o Cosmos DB), pero también otros externos. Además de las consultas que se pueden explotar directamente desde Azure Analysis Services, los datos disponibles también se pueden utilizar desde herramientas como Power BI.
Azure Analysis Services y Azure Synapse Analytics tienen funcionalidades solapadas, lo que implica que dependiendo de la casuística será mejor una opción o la otra, aunque también se pueden utilizar conjuntamente. Por ejemplo, aunque ambas soluciones permiten trabajar con muchos usuarios y volúmenes elevados de datos, suficientes para la mayoría de empresas, en general Analysis Services está recomendado para escenarios con simultaneidad de usuarios muy elevada, mientras que Synapse Analytics lo está para conjuntos de datos muy elevados y/o con consultas u operaciones ETL muy complejas.
Y sobre utilizarlos conjuntamente, con Synapse Analytics podemos procesar los datos y proporcionar un conjunto final agregado para consultarlo desde Analysis Services o incluso desde Power BI.
Adicionalmente a estos servicios, tenemos otros más específicos si trabajamos con entornos Apache:
Azure Databricks es un servicio que tenemos disponible en Azure como entorno Apache Spark, que a su vez es un motor de procesamiento de datos capaz de utilizar grandes cantidades de datos y procesarlos rápidamente. Con Azure Databricks podremos crear gráficamente scripts en cada paso de un proceso.
Azure HDInsight es otro servicio de procesamiento de macrodatos para Spark, o Apache Hadoop, u otras tecnologías de streaming como Apache Kafka.
En posteriores posts profundizaré en los apartados de ingestión de datos en Azure, su procesamiento y análisis, y su explotación desde Power BI.