La enorme competencia que viene apoyada por el auge de las nuevas tecnologías obliga a las empresas a tomar decisiones de manera casi inmediata. Hoy día, las empresas son mucho más ágiles que hace 5-10 años y esta agilidad implica compromiso en todas las áreas de las organizaciones: desde la definición y preparación de nuevos productos y servicios, pasando por el análisis de cómo utilizan los usuarios esos servicios hasta la definición de estrategias corporativas. Las decisiones se deben tomar con datos, y esos datos deben estar disponibles cuanto antes para tomar esas decisiones. En medio de ese círculo, se encuentran las bases de datos que, naturalmente, deben proporcionar los datos de formas ágiles y rápidas; probablemente, detrás de este argumento se encuentre el auge de los sistemas BigData que ayudan a tomar decisiones con las famosas 3 V (Volumen, Velocidad, y Variedad), éstos sistemas se apoyan en diferentes modelos de tratamiento de datos. No obstante, en este artículo nos centraremos en una pequeña parte de los modelos de tomas de decisiones, concretamente en sistemas OLAP que cubren un espectro suficientemente grande de los sistemas de ayuda a toma de decisiones del mercado mundial.
La consultora Gartner analiza cada año las tecnologías que utilizan las empresas del mundo por la necesidad que cubre y para el año 2017 reconoció a Microsoft SQL Server como líder del mercado en las soluciones de Data Management for Analytics.
Esto se debe principalmente a las mejoras llevadas a cabo por Microsoft en su gestor de base de datos ya que, entre otras funcionalidades, han sido capaces de mejorar considerablemente el rendimiento de SQL Server en análisis de datos. Esas mejoras podrían resumirse en los índices columnares ya que son el principal motivo de la ganancia en rendimiento. A modo de resumen, los índices columnares administran los datos en columnas añadiendo una división de las mismas en secciones y compresión de los datos.
En el siguiente recuadro se podrían resumir las mejoras implementadas por Microsoft en lo que a índices columnares se refiere:
SQL Server 2008 | Sin índices columnares |
SQL Server 2012 | Índice columnar no-clúster (sólo lectura) |
SQL Server 2014 | Índice columnar clúster (actualizable)
Índice columnar no-clúster (sólo lectura) |
SQL Server 2016 | Índice columnar clúster (actualizable)
Índice columnar no-clúster (actualizable) Índice columnar no-clúster + Índice líneal (en la misma tabla) |
Las mejoras de rendimiento entre distintas versiones del gestor son notables, sin embargo, uno de los grandes problemas a los que se enfrenta Microsoft es al de dar visibilidad de estas mejoras a las organizaciones ya que muchas se quedan en versiones más antiguas del gestor por no ser conscientes de la mejora en rendimiento/coste que experimentarían. No obstante, ya existen estudios que realizan comparaciones de rendimiento entre distintas versiones de SQL Server siguiendo el estándar TPCH.
TPCH como referencia para los sistemas de tomas de decisión
TPC es una organización sin ánimo de lucro que define pruebas de rendimiento para distintos gestores de bases de datos y con finalidades distintas, tiene el objetivo de mostrar las diferencias de rendimiento de los distintos motores de BBDD bajo las mismas circunstancias. TPCH es un benckmark definido por TPC que permite comparar el rendimiento de gestores de BBDD en el ámbito de bases de datos OLAP.
TPCH es un estándar de facto, esto quiere decir que no supone un estándar oficial pero es ampliamente reconocido y utilizado por la industria por lo que los resultados obtenidos por el benchmark pueden considerarse válidos y útiles. A continuación se puede observar el esquema de la base de datos OLAP referente al benchmark TPCH, la imagen pertenece directamente el documento técnico de TPCH ofrecido por la organización TPC:
OLAP vs OLTP
Hay que tener en cuenta que no todas las bases de datos presentan las mismas características por lo que los motores de BD deben estar preparados para los distintos tipos de cargas que pueden darse. Simplificándolo al máximo podemos distinguir entre bases de datos OLTP y OLAP.
Las bases de datos OLTP soportan carga transaccional principalmente: muchas conexiones pidiendo poca cantidad de datos; además, los datos aquí almacenados se encuentran actualizados. Cuando el motor lidia con una base de datos OLTP tiene que estar preparado para manejar múltiples conexiones simultáneas de lectura/escritura que manejan una cantidad de reducida de datos.
Las bases de datos OLAP siguen un principio casi contrario, suponen un gran almacén de datos históricos donde la cantidad de conexiones será mucho menor. En este caso, el motor de BD deberá lidiar con grandes cargas de lectura (principalmente) donde el cuello de botella se va a encontrar fundamentalmente en el disco. Es aquí donde Microsoft ha conseguido mejorar sobremanera SQL Server en lo que a análisis de datos se refiere gracias a los índices columnares ya que éstos permiten reducir considerablemente los accesos a disco para obtener los datos.
Resumiendo las diferencias entre ambos tipos:
OLTP |
OLAP |
Muchas conexiones simultáneas, los usuarios trabajan directamente sobre ella | Pocas conexiones y en ocasiones no son simultáneas |
Carga mixta lecturas/escrituras | Orientada principalmente a lecturas |
Mueven poca cantidad de datos (transacciones simples) | Recuperan grandes cantidades de información (transacciones más complejas) |
Datos actualizados | Datos no actualizados, requieren de procesos ETL para ello |
Pensado para operaciones diarias | Pensado como apoyo a la decisión |
Tamaño entre 100 MB-GB | Tamaño entre 100 GB-TB |
Tipos de OLAP
Las bases de datos OLAP pueden distinguirse en varios tipos:
ROLAP (Relational OLAP)
Las bases de datos ROLAP se apoyan sobre el motor transaccional (OLTP). Básicamente son bases de datos OLTP cuyo esquema se ha estructurado para que funcione como un Data Warehouse. Que estas BBDD funcionen bajo el motor relacional tiene sus ventajas e inconvenientes, aquí se comentarán algunos de ellos:
Ventajas:
- Gran cantidad de herramientas disponibles para carga de datos en sistemas transaccionales. Se consiguen reducir los tiempos de carga.
- Pueden hacer uso de las herramientas de “reporting” disponibles para el motor relacional estándar.
- Suelen ofrecer mejor rendimiento en los campos textuales en comparación con las Molap (se comentarán en el apartado siguiente).
Desventajas:
- Menor rendimiento de forma general con respecto a las Molap.
- Requiere de una mayor inversión de tiempo en desarrollo ya que requiere de código ETL personalizado (las herramientas Rolap no disponen de mecanismos automáticos para ello).
- Evita el uso de tablas agregadas por lo que se hacen más consultas a otras tablas.
El estándar TPCH se basa en una base de datos de tipo ROLAP.
MOLAP (Multidimensional OLAP)
Emplean tecnología multidimensional, los datos se almacenan en matrices y ahí son consultados directamente. Son más complejas ya que nos e basan en el estándar SQL pero obtienen por lo general mayor rendimiento que las Rolap, suelen ser el tipo idóneo en escenario de Data Warehouse. A continuación se comentarán algunas de sus ventajas e inconvenientes:
Ventajas:
- Mejor rendimiento debido a la implementación de diversas técnicas: indexación multidimensional, memoria caché…
- Ocupa menos tamaño en disco debido a técnicas de compresión no aplicadas en bases de datos relacionales.
- El procesamiento de los datos agregados presenta una automatización de mayor nivel.
- Indexación natural gracias al modelo de almacenamiento en vectores/matrices.
- Los datos agregados son pre-estructurados y esto ayuda a conseguir una eficaz extracción de los mismo.
Desventajas:
- La carga de datos (etapa de procesamiento) puede ser bastante extensa, sobre todo para grandes volúmenes de datos. Se hace muy necesario el uso de un procesamiento incremental.
- Las herramientas MOLAP suelen tener problemas para trabajar en modelos con dimensiones muy altas (del orden de millones de miembros).
- Algunas herramientas MOLAP pueden tener dificultades en la actualización y consulta de modelos con más de 10 dimensiones, aunque depende de más factores. Microsoft Análisis Services (herramienta MOLAP usada por SQL Server) es capaz de tratar cientos de dimensiones.
- El enfoque MOLAP introduce redundancia en los datos.
HOLAP (Hybrid OLAP)
Holap hace uso de ambas técnicas de almacenamiento descritas anteriormente. Supone un híbrido entre Rolap y Molap, tiene como objetivo aprovechar al máximo las ventajas de ambos métodos. Dependiendo del negocio, el analista deberá realizar el diseño apropiado para sacar el máximo provecho de las estructuras Rolap y Molap.
Tomemos pues esto como un punto de partida, de una serie de posts en los que vamos a dar un repaso completo al rendimiento de SQL Server como motor de BBDD para sistemas OLAP, estate atento 🙂