Top 3 errores en el diseño del modelo de datos de un Data Warehouse

 

El componente principal de una solución de Business Intelligence es el Data Warehouse, el almacén de datos donde guardamos toda la información que vamos a analizar. ¿Cómo saber si el diseño del modelo de datos de tu Data Warehouse, y por extensión de tu solución de Business Intelligence es de calidad o no? ¿Cómo puedes saber si el dinero que has invertido en esta tarea ha revertido en una solución de calidad?

En este artículo te presento los 3 errores más comunes en el diseño de modelos de datos de un Data Warehouse. Esta lista ha sido elaborada a partir de mi experiencia a lo largo de más de 17 años diseñando soluciones de Business intelligence. Es posible que haya otros errores de gran calado que se repitan en otras implementaciones de soluciones de Business Intelligence. Pero yo os hablaré de las que me he encontrado más a menudo a lo largo de mi carrera como consultor.

#1 Un elevado número de joins

Una solución de Business Intelligence tiene como objeto analizar un gran número de datos de manera eficiente. La operación más costosa en el acceso a las tablas donde se encuentran los datos es la join entre dos tablas (lo que se conoce como «cruzar» la información de dos tablas). Por tanto, minimizar el número de joins es vital para obtener un gran rendimiento en las consultas.

Para ello existe el modelo dimensional. Al utilizar esta técnica de diseño del modelo datos, minimizamos el número de joins aumentando así el rendimiento de las consultas respecto al diseño de datos transaccional. En contraposición, una solución de Business Intelligence que trabaje directamente sobre el modelo transaccional (con un elevado número de joins), implicará un alto coste en el acceso a los datos.

En varias ocasiones me he encontrado con aparentes diseños dimensionales basados en realidad en vistas y no en tablas. Es decir, sobre el papel el modelo era dimensional. Pero, sin embargo, en vez de tablas se estaban utilizando vistas. Por tanto, las consultas acababan accediendo a una gran cantidad de tablas, realizando a la vez una gran cantidad de operaciones de join. En este caso, el rendimiento de las consultas es, evidentemente, muy bajo.

#2 Diseñar las tablas a partir de los informes finales

Cuando diseñamos el modelo de datos es importante tener en cuenta las necesidades de acceso a la información de los usuarios. Al hacer esto, somos capaces de identificar las métricas e indicadores por una parte, y las dimensiones necesarias para el modelo de negocio que vamos a diseñar. Sin embargo, basar nuestro diseño únicamente en los informes, suele acarrear errores de diseño.

Por una parte nos alejamos de la metodología de diseño que nos proporcionará esas dimensiones y esas tablas de hechos sobre las cuales basamos el modelo dimensional. Por otra estaremos ligando nuestro modelo de datos a una visión particular de los datos (la de los usuarios). Y en el momento en que los usuarios quieran modificar esa visión de los datos, la tabla que habremos creado sobre unos informes específicos, deberá ser modificada para poder incluir la nueva información que el usuario quiera visualizar.

El mero hecho de añadir una columna a un informe puede conllevar la modificación de una tabla, y por tanto de la carga de datos. Y el coste de realizar ese cambio será muy elevado.

Cierto es que el hecho de disponer de tablas con toda la información necesaria para un informe nos permite acceder a esa información sin necesidad de hacer ninguna join. Sin embargo, diseñar un modelo de datos en base a este sistema de trabajo, no permite reaprovechar las distintas tablas del Data Warehouse, ya sean de dimensiones o de hechos. De esta manera, el modelo de negocio que vamos a diseñar en nuestras herramienta de Business Intelligence, estará ligado no a un modelo de datos genérico sino a los diferentes informes de usuario.

#3 No usar claves sinteticas (surrogate keys)

Es común que las diferentes tablas de nuestros sistemas transaccionales dispongan de claves primarias (claves que identifican unívocamente los diferentes registros de la tabla y que a la vez no pueden ser nulos).

Los diseñadores inexpertos suelen cometer un grave error confiando en estas claves primarias para ejercer como claves primarias del Data Warehouse. Sin embargo, hay varias razones por las cuales utilizar estas claves primarias de los sistemas transaccionales no está recomendado a la hora de diseñar un Data Warehouse.

Estas claves primarias transaccionales pueden variar con el tiempo. Situaciones como migraciones y cargas masivas de datos de otros sistemas informáticos, pueden modificar los valores de esas claves primarias o producir duplicados. Esto puede ser algo relativamente sencillo de corregir en las tablas dimensiones. Pero adaptar esos nuevos valores en las diferentes tablas de hechos (cabe recordar que son las tablas con más volumen de registros en un Data Warehouse), supone un gran esfuerzo, que a menudo resulta demasiado grande.

Además, esas claves primarias transaccionales pueden contener valores alfanuméricos. Este hecho penaliza el rendimiento del sistema ya que la longitud del registro de las tablas de hechos se ve incrementado y por tanto el throughput (número de registros por unidad de espacio en disco) de acceso a los datos disminuye.

El uso de claves sinteticas con valores numéricos (de tamaño mucho menor que las claves alfanuméricas) permite optimizar el acceso a las tablas de hechos mejorando así al rendimiento de las consultas.

Conclusión

El diseño del modelo de datos de un sistema analítico es esencial para obtener un buen rendimiento en las consultas. Un elevado número de joins, un diseño orientado a los informes finales, y el uso de las claves primarias del sistema transaccional son tres grandes errores evitar en nuestra solución de Business Intelligence.

Para evitar caer en estos errores es primordial contar con un equipo de expertos con una amplia experiencia en el diseño de soluciones de Business Intelligence. Si una solución existente no ofrece el rendimiento esperado y es difícil de mantener, es posible que contenga alguno de estos errores.

Si una solución de Business Intelligence incluye alguno de estos diseños erróneos, estos deberán estar debidamente justificados. De no ser así, sabremos que se trata de un error de diseño.

¿Realmente sabes cómo está diseñada tú solución de Business Intelligence por dentro? Si tu respuesta es «No», una auditoría puede ayudarte. Y si estás pensando en crear una nueva solución de Business Intelligence, te recomiendo que acudas a un experto que pueda verificar los diseños generados por tu proveedor de servicios. Una segunda opinión, una verificación de los diseños antes de que sea demasiado tarde, te puede salvar de males mayores en el futuro.

¿Porqué necesitas una estrategia de BI?

 

 

La gran mayoría de las empresas han oído hablar de Business Intelligence. Es un tema muy interesante y la vez atractivo, por el hecho de poder tomar decisiones basadas en información que a menudo puede escaparse de la percepción de quienes deben tomar esas decisiones.

Y eso hace que las empresas quieran innovar dentro de este campo.

 

Palos de ciego

Sin embargo, la mayoría de empresas carecen del personal y la experiencia necesaria para desarrollar proyectos de Business Intelligence. Y por tanto, su enfoque suele ser el de empezar con un proyecto piloto para ver los beneficios que un proyecto de estas características puede beneficiar a su organización. No es un mal enforque inicial. Lo malo es que después de este primer proyecto, aparecen nuevas necesidades abordadas directamente, sin una visión de futuro, sin un objetivo a medio o largo plazo en mente.

Esa visión a medio y largo plazo es la estrategia de Business Intelligence.

A menudo me encuentro en situaciones en las que tengo que exponer a mis clientes que esa manera de abordar proyectos de Business Intelligence no es la que les va a aportar más beneficios a medio y largo plazo.

Buscando un símil

En estos casos, siempre les planteo un par o tres de situaciones para que vean el sinsentido de su enfoque.

Por ejemplo, ¿qué sucede cuando queremos decorar nuestra sala de estar y no tenemos una idea clara del estilo a seguir?

El resultado puede ser que acabemos con una mezcla de estilos, siendo ésta más perjudicial que beneficiosa. Podemos acabar con una mesa de madera de teka, un mueble de estilo rococó, unas lámparas de estilo minimalista y un sofá digna de una película de los años 50. A la vista está que una sala de estar con esta decoración carece de sentido. Es posible que haya satisfecho esos deseos individuales por lo que se refiere a cada uno de los elementos decorativos. Sin embargo, el conjunto no nos proporcionará una experiencia consistente que realce sus cualidades y que aporte un alto valor visual.

Beneficios de tener una estrategia

Definir una estrategia de Business Intelligence que permita que todos los desarrollos realizados aporten un alto valor añadido a una parte y a todo el conjunto de la organización es esencial para el buen gobierno de la información de ésta

Una estrategia de Business Intelligence permite identificar las prioridades a nivel de análisis de información en una organización, organizar esos requerimientos en proyectos y finalmente priorizarloos en función de la necesidad y los recursos disponibles.

Las organizaciones que disponen de una estrategia de Business Intelligence consiguen una mayor eficiencia en el desarrollo de sus proyectos a la vez que minimizan los cambios en los diferentes componentes analíticos debido a su previa planificación.

Carecer de una estrategia de Business Intelligence suele implicar, en la mayoría de los casos, un sobrecoste en el desarrollo de soluciones. Además, supone un aumento del riesgo respecto a la eficacia de la solución como respuesta a los requerimientos analíticos de toda la organización.

Conclusión

La definición y adopción de una estrategia de Business Intelligence en las organizaciones no solamente responde al gusto por el seguimiento de un enfoque organizado y premeditado. Supone un beneficio para la organización en términos económicos y funcionales.

Optar por un enfoque sin una estrategia de Business Intelligence es claramente un error que puede tener graves consecuencias económicas.

Las pruebas de concepto y proyectos piloto son una muy buena opción para determinar la viabilidad de un proyecto y los beneficios aportados por éste. Sin embargo, continuar con el desarrollo de proyectos sobre prueba de concepto, y evolucionar una plataforma de manera no planificada, es una mala decisión estratégica.

La decisión de que pertenece a las organizaciones. Como consultor y asesor en el área del Business Intelligence, mi labor es el de comunicar a mis clientes los beneficios e inconvenientes de ambos enfoques. Y cuando se me pregunta por una recomendación, lo tengo claro. Es esencial tener una estrategia de Business Intelligence.

Big Data: Más que escalabilidad

 

Cuando un sistema informático puede llegar a procesar grandes cantidades de datos, es muy importante que éste sea escalable. Es decir, que pueda crecer para soportar cargas de trabajo mayores a las que originalmente soporta.

Una solución Big Data es un sistema escalable, puesto que un clúster puede aumentar el número de nodos existentes. Sin embargo, no todo sistema escalable requiere de una solución Big Data.

 

Escalabilidad horizontal

Un escenario candidato para escalabilidad es aquel necesita crecer para poder dar respuesta a una demanda creciente de recursos.

En un sistema donde el número de usuarios (y por tanto de recursos), puede crecer de manera dinámica, puede ser necesario en algún momento añadir capacidad computacional a ese sistema para poder garantizar el servicio a todos los usuarios.

Cuando un sistema informático llega a su capacidad máxima, si queremos escalabilidad horizontal, debemos añadir otra máquina para así poder mantener el servicio. En este caso hablamos de escalabilidad horizontal.

Otra opción es la de la escalabilidad vertical que vendría a ser el hecho de añadir recursos a esa máquina. Eso sucede cuando por ejemplo se amplía la memoria RAM, el número de procesadores o la capacidad de disco. Sin embargo, el problema de la escalabilidad vertical es que no es tan flexible como la horizontal. Por este motivo, no se ha tenido en cuenta en este artículo.

¿Dónde están los datos?

En el caso de la escalabilidad horizontal las nuevas máquinas se utilizan para dar servicio desde el punto de vista de proceso. Y para procesar las peticiones de servicio, es necesario tener datos. Pero, ¿dónde están los datos? Los datos se encuentran almacenados típicamente en un repositorio común: la base de datos.

En un escenario con escalabilidad horizontal, la base de datos puede ser centralizada o replicada.

En el caso de una base de datos centralizada, todos los procesos que dan servicio a las peticiones de usuarios deben conectarse a un recurso único, compitiendo por sus recursos para resolver las consultas. Este escenario puede provocar un cuello de botella en el acceso a la base de datos, ya que ésta no ha escalado (solamente ha escalado la parte de peticiones de proceso).

La solución, cuando la carga de la base de datos es muy grande, es la de replicar la base de datos en las máquinas que aparecen durante el aumento de la capacidad del sistema. En este caso, la máquina dispone de su propia copia de la base de datos.

Desde el punto de vista de la gestión y el acceso a los datos ambas situaciones son muy similares (no entramos a discutir aquí la complejidad de la replicación de datos). Pero no dejan de ser un escenario clásico, con una base de datos completa contenida en un único punto.

Computación distribuida

Con la computación distribuida cambiamos totalmente de paradigma, tal y como ya expliqué en el artículo ¿Qué es la computación distribuida de Big Data?.

En este escenario los datos no se hallan centralizados en una única base de datos o en réplicas de ésta que contienen todos los datos necesarios para dar servicio a las peticiones de proceso de información.

En la computacion distribuida los datos están esparcidos por los diferentes nodos de un cluster. Además, el proceso de análisis de la información se realiza en paralelo en diferentes nodos de dicho cluster.

Escalabilidad horizontal vs. Big Data

Este punto es sumamente importante a la hora de identificar los requerimientos técnicos de una solución. A menudo estos dos conceptos provocan confusión. Es frecuente encontrar a personas con un perfil técnico pero con serias dudas al respecto. Sobre todo si esa charla se incluye en el ámbito del Big Data. En estas situaciones la gente está predispuesta a utilizar una tecnología Big Data. Y por tanto, son propensos a adoptar una solución que implique la utilización de una arquitectura Big Data (aunque, como hemos visto, haya una solución alejada de este paradigma que pueda dar respuesta a su problema).

En estos casos siempre animo a los confundidos a dejar aparte y analizar los requerimientos técnicos a los que se enfrentan. Al identificar esos requerimientos y separarlos de ese interés concreto sobre Big Data es relativamente sencillo que esas personas se den cuenta de que Big Data no es la solución que necesitan.

Conclusión

Big Data utiliza computación distribuida (que no es lo mismo que escalabilidad horizontal), a pesar de que el crecimiento de un cluster de Big Data se basa precisamente en esa escalabilidad horizontal.

Para determinar la solución técnica más adecuada para un sistema informático, es necesario analizar los requerimientos funcionales y técnicos, y dejar de lado los intereses y predisposiciones existentes, ya que éstas pueden afectar a la decisión, restando objetividad al análisis.

Si finalmente decidimos usar una plataforma de Big Data, tendremos como beneficio la computación distribuida. Algo que nos permitirá ir más allá que una «simple» escalabilidad horizontal.

5G y Big Data

 

 

Esta semana se ha celebrado el Mobile World Congress en Barcelona. Según la prensa especializada, uno de los temas estrella de este año es el 5G.

¿Qué impacto tendrá el 5G en la toma de decisiones de las organizaciones?

 

5G

Por fin ya tenemos aquí la tecnología que nos permitirá trabajar con datos en tiempo real. La velocidad de transmisión del 5G puede llegar a ser hasta 100 veces superior a la del 4G. Esto supone un sinfín de oportunidades dentro del marco del Internet of Things (IoT) y por supuesto del análisis de los datos. Mejoras que tendrán un claro reflejo en la mejora en la toma de decisiones.

Dispositivos generadores de datos

En los últimos años hemos podido ver una gran incremento en el número de dispositivos que generan gran cantidad de datos. En algunos casos, como en los smartphones y los smartwatches, al estar dotados de conectividad ya sea mediante 4G o Wi-Fi, estos datos son transmitidos a un repositorio central desde donde pueden ser analizados.

Sin embargo, para la mayoría de estos dispositivos, al no estar éstos conectados online, no es posible enviar estos datos. La solución de compromiso por la cual han optado muchos fabricantes es la de permitir conectar estos dispositivos a un ordenador o a un móvil para así poder descargar esos datos y realizar análisis a partir de esos datos de carácter privado. Por ejemplo, un podómetro o un aparato para medir la presión arterial permiten el análisis de los datos pero solamente a nivel de dispositivo.

Internet of Things

El 5G permitirá la transmisión de datos de manera efectiva. La velocidad de transmisión de datos se incrementará de tal manera que permitirá que los datos generados por estos dispositivos puedan ser transmitidos directamente a un repositorio central.

Los beneficios son múltiples. Por ejemplo, no necesitaremos descargar los datos siempre a un mismo dispositivo para poder disponer de todo el historial de datos. Además, los análisis sobre esos datos podrán ser mucho más ricos y podrán proporcionar información muy valiosa que ahora está fuera del alcance de los usuarios. Un ejemplo es la opción de comparar esos datos con millones de otros usuarios, lo que permitiría comparar cada individuo con otros usuarios de perfil similar.

El 5G es prácticamente una realidad a nivel comercial. Los fabricantes de teléfonos móviles ya están presentando sus primeros aparatos con conectividad 5G. Según se respira en el ambiente, cuando la cobertura sea una realidad, las ventas se dispararán. Y a su vez, el mercado se inundará de dispositivos conectados a esta nueva red de telecomunicaciones. El Internet of Things será una realidad. Estamos a punto de vivir una nueva revolución en lo que confiere a los datos.

Big Data para poder competir

Será en este momento en el que la necesidad de analizar toda esta información experimentará un gran crecimiento. Y para poder realizar ese análisis teniendo en cuenta la gran cantidad de datos, la necesidad tomar acciones en tiempo real y la gran variedad de datos generados, será necesario la aplicación técnicas de Big Data. Las empresas han empezado a moverse en los últimos años en esta área, interesándose cada vez en el análisis de información. Pero aún hay mucho camino por recorrer.

En este mercado tan competitivo es importante moverse rápido. Ya lo dijo en su día Charles Darwin: «Las especies que sobreviven son las que mejor se adaptan a los cambios».

¿Qué nivel de adaptación van a tener las empresas? Es difícil responder a esta cuestión pero lo cierto es  que la adaptación a los nuevos tiempos va a depender de la capacidad de las organizaciones para implantar mecanismos analíticos para mejorar la toma de decisiones a todos los niveles organizativos. Y para eso Business Intelligence y Big Data van a jugar un papel crucial.