Las claves de la eficiencia de la tecnología columnar

Con la expresión «tecnología columnar» nos referimos a las técnicas de almacenamiento de los datos por columnas, incluida en las alternativas más actuales de base de datos como SAP HANA Database y SAP Sybase IQ, propuesta de base de datos para fines analíticos y de data warehouse de SAP.


Con la expresión «tecnología columnar» nos referimos a las técnicas de almacenamiento de los datos por columnas, característica incluida en las alternativas más actuales de base de datos como esel caso de SAP HANA Database y SAP Sybase IQ, propuesta de base de datos para fines analíticos y de data warehouse de SAP.

La mejor eficiencia que proporciona el almacenamiento por columnas en entornos analíticos, podríamos resumirlos en los siguientes aspectos:

  • Más rapidez. Las consultas analíticas se basan en el ordenamiento, agrupación, clasificación o elaboración de rankings de la información, para lo cual se accede a campos o columnas de datos. Las tablas basadas en el almacenamiento en columnas, además de contener los datos en esta estructura, cuentan con índices que señalan la ubicación de los valores en cada columna. Este hecho facilita la recuperación de los datos consultados, sin tener que acceder a toda las filas de datos de una tabla (tal como sucede en un esquema relacional). Finalmente, todo esto redunda en un menor consumo de CPU y en menores tiempos de respuesta.
  • Menor espacio. Con la tecnología columnar los valores similares en cada columna son sustituidos por claves más pequeñas que requieren menos espacio que el valor original.  Como resultado final, el almacenamiento de una tabla puede reducirse en una proporción entre 3x a 7x, aunque este ratio puede variar considerablemente dependiendo de los valores repetidos y del tipo de dato que se almacene.

La tecnología columnar no es mejor que la relacional, cada una tiene un mejor uso recomendable, ya sea en un entorno analítico o transaccional, respectivamente (aquí post relacionado)

Los motores de SAP HANA

SAP HANA trabaja con información en tablas con almacenamiento en filas o en tablas con almacenamiento en columnas. Para procesar esta información existe un componente específico según cómo y qué se esté solicitando para obtener los mejores tiempos de respuesta.


SAP HANA trabaja con información en tablas con almacenamiento en filas o en tablas con almacenamiento en columnas.  Para procesar esta información existe un componente específico según cómo y qué se esté solicitando para obtener los mejores tiempos de respuesta.

Vistas vs Motores de procesamiento SAP HANA

Estos componentes se denominan motores (Engine):

  • OLAP Engine.  Procesa consultas analíticas básicas.  Estas consultas se construyen a través de la definición de modelos físicos o lógicas (vistas analíticas) y se vinculan tablas construyendo una estructura denominada “esquema en estrella” (una o más tablas, que cumplen el papel de “dimensiones”, se vinculan a una o más tablas que cumplen el papel de “hechos”).
  • Calculation Engine. Procesa las consultas complejas o los modelos lógicos diseñados en las vistas calculadas.
  • Join Engine. Es el motor que procesa las sentencias SQL estándar como las que se pueden lograr construir a través de las vistas de atributos.
  • Row Engine. Procesa consultas SQL más complejas, las que acceden a tablas con almacenamiento en filas o con lógicas recursivas.

Cada motor es especializado para cada tipo de estructura de datos, los rendimientos de cada uno de estos motores es distinto, por lo que el rendimiento global será la suma de todos los motores que interviene en un proceso.   Por este motivo, es importante realizar el diseño más óptimo, tanto de las estructuras de datos como en las consultas o esquemas lógicos, para obtener los mejores tiempo de respuesta, SAP HANA, por sí sólo, no hace milagros.

¿Qué tienen en común un milhojas y SAP HANA?: Están compuestos por capas

Buscando una forma simple de explicar SAP HANA encontramos en la analogía de las capas, que puede conformar cualquier cosa, una alternativa por experimentar, por ejemplo, podríamos señalar lo siguiente:


Milhojas, además de los ingredientes o compuestos, como en todo, lo más importante es cómo se combinanBuscando una forma simple de explicar SAP HANA encontramos en la analogía de las capas, que puede conformar cualquier cosa, una alternativa por experimentar, por ejemplo, podríamos señalar lo siguiente: Un milhojas es un dulce compuesto por capas de hojaldre, cubiertas de crema y espolvoreado con azúcar glas. Luego podríamos agregar: Lo más importante son las capas de hojaldre porque de estas capas deriva el nombre de este dulce. Pero, ¿qué es más importante, las parte o cómo estas son combinadas, unidas o enlazadas?

SAP HANA es un conjunto de capas de hardware y software organizadas para procesar los datos del negocio en tiempos sustancialmente mejores que cualquier otra alternativa. La base de datos, la tecnología in-memory computing, los bancos de memoria o los sockets de CPUs no son más que piezas de este puzle que posibilita el procesamiento de la información en tiempo real. No encontramos mejor término para referirnos a SAP HANA que el de “Plataforma”.

Principales capas de SAP HANA

Al señalar que SAP HANA es una base de datos, mencionamos sólo una parte de lo que representa este conjunto de componentes, y por consiguiente limitamos la visión a las posibilidades:

  • SAP HANA puede ser el data warehouse de una organización y/o los data marts de las áreas de negocio.
  • SAP HANA puede ser la plataforma para gestionar las transacciones diarias del negocio y/o para analizar la información actual e histórica.
  • SAP HANA puede ser la herramienta para comprender el pasado o para descubrir posibles escenarios futuros.
  • SAP HANA puede ser el framework para desarrollar, sin restricción, cualquier aplicación a medida con toda la tecnología in-memory computing.

Expectativas de los usuarios en la monitorización de un sistema

Una implementación de una solución informática no culmina con el denominado “pase a producción” y menos aún, todo lo hecho, será “para siempre”. No hay deseo más absurdo, tanto para las personas como para los sistemas, aquel que se repite sin meditar: “nunca cambies”. La maduración y evolución son indispensables en un sistema para que siempre cubra las expectativas y necesidades de los usuarios. Expectativas y necesidades que variarán en el tiempo porque los entornos evolucionan constantemente.


Una implementación de una solución informática no culmina con el denominado “pase a producción” y menos aún, todo lo hecho, será “para siempre”. La maduración y evolución son indispensables en un sistema para que siempre cubra las expectativas y necesidades de los usuarios.  Expectativas y necesidades que variarán en el tiempo porque los entornos evolucionan constantemente.

Expectativas de los usuarios en la monitorización de los sistemas informáticos

Para encaminar la maduración de un sistema se debe contar con un plan de monitorización y optimización, calendarizado por diferentes períodos de tiempo, plan que no tan sólo cubra el aspecto técnico, sino que también contemple los feedbacks funcionales.

El gran objetivo es cubrir, constantemente, las expectativas de los usuarios, las cuales podrían circunscribirse en las siguientes categorías:

  • Disponibilidad. Asegurar la accesibilidad cuando se lo necesite, garantizando la comunicación entre los componentes y controlando que las aplicaciones no produzca errores graves que impidan las entradas o consultas de datos.
  • Rendimiento. Se debe controlar tanto en la introducción de datos como la ejecución de los procesos en segundo plano. Cada uno de estos dos aspectos requiere un control por separado.
  • Integridad.  Asegurar la integridad de datos, la cual puede perderse por errores en la conexiones, fallos en el hardware o redes, software desactualizado, etc.  Así mismo se debe contemplar un plan de recuperación ante fallos y copias de seguridad.
  • Seguridad. Brindar garantías que las personas indicadas accedan a los datos de su responsabilidad para realizar las tareas que le corresponden. Informar y auditar.

Buenas prácticas en el diseño de gráficos (y IV): Histogramas

Un histograma es una representación gráfica que secciona un grupo de datos en función de los valores de un indicador o variable numérica (por ejemplo, edad, ingresos o gastos) y muestra el número de elementos (frecuencia) o el porcentaje (frecuencia relativa) que representa cada grupo de elementos. Los casos más usuales son para analizar atributos o características de grupos de poblaciones.


Un histograma es una representación gráfica que secciona un grupo de datos en función de los valores de un indicador o variable numérica (por ejemplo, edad, ingresos o gastos) y muestra el número de elementos (frecuencia) o el porcentaje (frecuencia relativa) que representa cada grupo de elementos. Los casos más usuales son para analizar atributos o características de grupos de poblaciones.

Histograma utilizando el componente Gráfico de Columnas de SAP Dashboards (Xcelsius)

Al diseñar un histograma ten presente los siguientes aspectos

  • Comprobar si las unidades del eje vertical indican frecuencias o frecuencias relativas. Si se trata de frecuencia relativa, es necesario conocer el tamaño de la muestra para hacer una adecuada interpretación.
  • Comprobar la escala utilizada en el eje horizontal (para los grupos de valores del indicador o variable numérica):
    • Si los intervalos de valores son pequeños, posiblemente la altura de las columnas sea muy variable y se dificulte su interpretación.
    • Si los intervalos son grandes la representación gráfica se podría ver más uniforme de lo que realmente es.