Particionamiento de tablas para reducir el tiempo de las consultas

 

Una solución analítica se caracteriza por la necesidad de acceder a un gran volumen de datos. Sin embargo, lo habitual es acceder solamente a una parte de éstos, y no a su totalidad.

Para poder gestionar de manera más eficiente el acceso a la información, algunas bases de datos han implementado el concepto de particionamiento de tablas.

El diseño lógico de tablas con particionamiento de tablas proporciona grandes beneficios tanto en la gestión de datos como en las consultas realizadas sobre éstos.

Particionamiento de tablas

El particionamiento de tablas consiste en el almacenamiento de los datos de una tabla en contenedores separados, en función de los valores de cada registro, según una función específica determinada en

Por ejemplo, las ventas de una empresa pueden particionarse por el año de la venta, por unidad de negocio, etc.

Al particionar por el año de venta, cada contenedor con registros de las ventas contiene la información de un año. De esta manera, las consultas sobre el año actual accederán tan solo al contenedor del año en curso. Lo mismo sucede si accedemos a información del año pasado o el anterior, por ejemplo, accediendo al contenedor específico de ese año.

Gestión de datos

El particionamiento a nivel tabla en una base de datos es transparente para el desarrollador, y aún más para el usuario final.

La base de datos es capaz de insertar los datos en el contenedor correspondiente a cada registro al aplicar la función de particionamiento sobre los datos de cada uno de éstos. Por ejemplo, al insertar una venta actual, el registro se almacenará físicamente en el contenedor del año en curso, mientras que si insertamos una venta del año pasado, éste se almacenará en el contenedor para ese año.

Lo mismo sucede con las modificaciones que afecten a las columnas de la función de particionamiento. Al producirse un cambio en los valores, el registro puede cambiar de partición (o sea, de contenedor).

Por último, cabe destacar el hecho de que, al disponer de todos los datos de una partición juntos, se facilita la gestión de los datos (movimiento de disco, copias de seguridad, etc.) en tareas de mantenimiento.

Mayor eficiencia en las consultas

Aparte de los beneficios en la gestión de datos para el personal de Sistemas en las citadas tareas de mantenimiento, el gran beneficio del particionamiento de datos reside en el acceso a los datos en las consultas.

Las consultas de usuario suelen contener filtros sobre los datos. Si ciertos filtros son habituales, puede ser efectivo particionar las tablas por esas columnas presentes en esos filtros de datos.

En el caso del particionamiento por el año de venta (un filtro habitual en la gran mayoría de empresas), conseguiremos acceder únicamente a las ventas del año en curso en lugar de a todo el histórico de ventas para resolver la consulta. Esto supone una gran reducción del volumen de registros a consultar (y posiblemente a agregar), lo cual supone un gran beneficio en términos de rendimiento.

Cierto es que el indexado de tablas puede proporcionar también un gran beneficio a la hora de acceder únicamente a los registros requeridos por las consultas, pero el acceso por índice para grandes volúmenes de datos nunca será tan efectivo como el acceso secuencial a una partición de datos donde todos los registros deben ser consultados.

Además, es posible que existan otros filtros que activen otros índices que tengamos disponibles. En este caso, cada partición tiene sus propios índices sobre esas columnas, separados de los índices sobre las mismas columnas existentes en otras particiones. Por tanto, los índices son más pequeños y más eficientes.

Conclusión

El particionamiento de tablas es una técnica de diseño de bases de datos que permite organizar los datos físicamente en contenedores de datos separados en función de los valores del cada registro.

Al disponer de tablas particionadas, las consultas que utilizan filtros pueden beneficiarse de esta técnica de diseño al acceder únicamente a subconjuntos de datos con la información necesaria para la resolución de la consulta.

Esto supone un menor volumen de datos a acceder y por tanto una mayor eficiencia en las consultas.

La elección de la función de particionamiento es clave para obtener una mayor o menor eficiencia en las consultas. Pero a la vez, elegir una función de particionamiento errónea puede suponer una penalización respecto a una solución sin esta técnica de diseño. Por eso, recomiendo usar el particionamiento, pero siempre con la seguridad que proporciona contar con la opinión de un experto en este tema.

Optimización de consultas con agregados

 

Analizar datos implica, generalmente, el acceso a una gran cantidad de datos. Por otra parte, para poder obtener una visión analítica completa es necesario disponer de datos a nivel de detalle. Esto permite tanto el análisis a alto nivel como la navegación a niveles inferiores de los datos (drill down) para identificar información que requiere una especial atención a nivel operacional.

Sin embargo, disponer de datos a nivel de detalle penaliza en gran manera el rendimiento de las consultas. Cuando tenemos grandes volúmenes de datos las consultas pueden tardar tanto que la obtención de resultados puede ser inviable dentro de los plazos requeridos por el usuario.

En estas situaciones, es necesario trabajar con datos agregados.

Agregación de datos

Los datos agregados son una visión a alto nivel de los datos disponibles a nivel de detalle. La información agregada debe corresponder exactamente al resultado de una consulta agregada sobre a los datos de detalle. La violación de este requerimiento da como resultado incoherencias en la información obtenida, y por tanto invalida la validez de esos datos agregados.

Disponer de agregaciones de datos permite formular las consultas a partir de dichas agregaciones en lugar de a partir de las tablas de detalle. Al tratarse de tablas con un volumen de registros menor, el tiempo de acceso a las tablas es menor. Además, al incluir los resultados de funciones de agregación, éstas no son necesarias en tiempo de ejecución de las consultas. Todo ello conlleva una mejora del rendimiento de las consultas al utilizar tablas agregadas respecto al uso de tablas de detalle.

Gestor de agregados

Al disponer de tablas agregadas, es necesario identificar la tabla de datos a incluir en la consulta. Esta función es la que debe realizar el «Gestor de agregados».

El gestor de agregados es un elemento que tiene como función principal decidir la(s) tabla(s) a utilizar en la creación de una consulta para acceder a los datos requeridos por el usuario. Este elemento puede ser llevado a cabo por tres diferentes entidades:

  • Usuario: La existencia de diferentes modelos de datos (e.g. Detalle, Agregado por mes, Agregado por cliente, etc.) permite al usuario decidir sobre qué tablas físicas ejecutar la consulta. En este caso, la decisión queda a expensas del conocimiento técnico del usuario, lo cual no es una buena opción.
  • Herramienta de explotación de datos: Una herramienta de Business Intelligence (BI), donde se crea un modelo de negocio que mapea el modelo físico del repositorio de datos, puede asociar cierto elemento de datos con diferentes orígenes físicos en el repositorio. No todas las herramientas de BI permiten definir múltiples orígenes de datos para el mismo objeto de la capa de presentación. Pero aquellas que sí que lo permiten, disponen de un gran elemento diferenciador respecto al resto de tecnologías. En este caso, la consulta se crea dinámicamente en función de las columnas de la consulta de usuario y la disponibilidad de agregados.
  • Base de datos: Existen bases de datos que permiten la reescritura de las consultas a partir de las consultas de usuario y de la disponibilidad de tablas agregadas. En este caso, el beneficio se generaliza a todas las herramientas de explotación de datos que accedan a la base de datos, sin necesidad de replicar la lógica de decisión del agregado en todas las herramientas de BI utilizadas.

A la hora de decidir la política de agregados, es muy importante tener claro quién va a asumir el rol del gestor de agregados. La tecnología a utilizar puede depender de ello.

Mantenimiento de agregados

El uso de agregados requiere una revisión periódica, algo que no ocurre en sistemas de información asociados a aplicativos.

El conjunto de agregados en un sistema analítico debe estar alineado con los requerimientos de acceso a la información por parte de los usuarios. Si los requerimientos cambian (e.g. Inicialmente los informes agrupaban la información por año, pero a posteriori éstos son necesarios a nivel de mes), es muy posible que las tablas agregadas no proporcionen los beneficios para los nuevos requerimientos (en el ejemplo anterior, una tabla agregada a nivel de año quedaría invalidada para dar respuesta a las consultas por mes, y la consulta tendría que realizarse a partir de las tablas de detalle).

Por tanto, es necesario hacer un seguimiento de los requerimientos de acceso a la información por parte de los usuarios. Al detectar cambios, deberemos identificar posibles cambios en el conjunto de agregados e implementar esos cambios para que no haya un impacto en el usuario.

Conclusión

El uso de agregados permite mejorar dramáticamente el rendimiento de las consultas en un sistema analítico. De hecho, puede suponer la diferencia entre el éxito y el fracaso de una solución analítica.

El gestor de agregados es el componente inteligente que determina el acceso a los datos (bien sea a tablas agregadas o a las tablas de detalle). La lógica puede definirse a varios niveles: Usuario, herramienta de BI y base de datos. Cada una de ellas tiene sus pros y sus contras. Determinar la opción adecuada en cada solución es una tarea clave para el éxito de la solución analítica.

Los agregados son parte de una solución dinámica. Es decir, puede cambiar con el tiempo. Es necesario realizar un seguimiento de los requerimientos y del histórico de consultas para determinar cambios en éstas, para así poder redefinir los agregados en el caso que esto sea necesario.

Todo diseño de una solución analítica debe incluir un módulo de agregados. De no ser así, existe un gran riesgo de fracaso del proyecto. Si ya dispones de una solución de BI, asegúrate de disponer de la documentación del módulo de agregados. En el futuro puede ser que la necesites.

Efectividad de un proyecto de Business Intelligence

 

El éxito de un proyecto de Business Intelligence (o de Big Data) es una puerta a la continuidad. Es la diferencia entre seguir evolucionando una plataforma analítica de acuerdo con una estrategia bien definida o la siembra de dudas respecto a la conveniencia de seguir con esa línea.

La situación en la que nos hallamos es la siguiente: Después de muchos esfuerzos, nuestro proyecto de Business Intelligence ha llegado a su fin. Los usuarios ya tienen acceso a todas las funcionalidades analíticas estipuladas en los requerimientos. Pero, ¿cómo saber si el proyecto ha sido un éxito?

 

Factores de medida de éxito

Tradicionalmente el éxito de un proyecto se mide en base a los siguientes factores:

  • Cumplimientos de fechas indicadas en la planificación
  • Cumplimiento de los requerimientos
  • Ajuste sobre el presupuesto inicial

Estos tres actores suelen ser la vara de medir utilizada para determinar el éxito de un proyecto.

Sin embargo hay un par de factores muy importantes que suelen ser obviados.

  • Adopción de la solución por parte de los usuarios
  • Incremento de la efectividad en la toma de decisiones

Adopción de la solución por parte de los usuarios

Si después de realizar un proyecto los usuarios no utilizan la solución proporcionada, el proyecto debe considerarse un fracaso.

La inversión realizada tanto económicamente cómo en recursos humanos bien merece dar su fruto. Sin un beneficio para la organización el proyecto se convierte en un foso donde se han arrojado horas y dinero. Y esto es cierto, independientemente de que se hayan cumplido todos los objetivos de negocio detallados en los requerimientos del proyecto.

En ese caso el retorno de inversión (ROI) del proyecto será nulo. Y por tanto, desde el punto de vista de gestión económica del proyecto, éste será un gran fiasco. Todo proyecto debe proporcionar un retorno. Y un proyecto que no sea usado por los usuarios no tendrá un retorno de la inversión.

Incremento de la efectividad en la toma de decisiones

Si el punto anterior mide de manera cuantitativa la introducción de la solución en la base de usuarios ahora no centraremos en un análisis cualitativo.

En este caso, queremos medir cómo afecta a la toma de decisiones y sus resultados la introducción de la nueva solución analítica.

Para poder realizar el análisis comparativo es necesario disponer de datos de efectividad en la toma de decisiones con el modelo antiguo (antes de la introducción de la nueva solución). Estos datos son necesarios porque los utilizaremos como grupo de control sobre el que podremos comparar los resultados.

Una vez la nueva solución esté en uso, deberemos obtener datos de eficiencia para así comparar el rendimiento de los empleados antes y después de la adopción de la nueva solución.

Sin embargo también es necesario realizar ese análisis con los usuarios que no hayan adoptado la nueva solución. ¿Por qué? Porque pueden darse situaciones ajenas a la nueva solución que afectan por igual a los grupos. Este análisis del grupo de control y del nuevo grupo nos permitirá identificar si las diferencias se deben única y exclusivamente a la nueva solución adoptada o a otros factores.

Si nuestro análisis muestra que el segundo grupo obtiene mejores resultados podremos deducir que éstos se deben a la adopción de la solución. En cambio si los resultados son peores que los del grupo de control, podremos deducir que la nueva solución está empeorando los resultados.

Además podremos cuantificar esa mejora o pérdida en función de la diferencia de los resultados antes y después de la adopción de la nueva solución en ambos grupos. Podría darse que ambos mejoraran su rendimiento. En este caso, el análisis porcentual de la mejora nos permitiría identificarla cuantitativamente.

Consideraciones

En la fase incial de la adopción de la nueva solución, es posible que los resultados obtenidos sean inferiores a los que puedan obtenerse a medio plazo. Este hecho deberá tenerse en cuenta a la hora de valorar el éxito del proyecto. Por eso es conveniente realizar estos análisis de manera periódica, y realizar un seguimiento y dar formación a los usuarios para que puedan obtener el mayor rendimiento de la solución. De esta manera, es posible conseguir mejorar los resultados obtenidos inicialmente.

Conclusión

El éxito de un proyecto de Business Intelligence es de vital importancia para la continuidad de proyectos en una organización. Y para poder determinar el éxito real del proyecto, es necesario utilizar los indicadores adecuados.

La adopción y la productividad son esenciales para medir el éxito de un proyecto de BI. Si los pasamos por alto, podríamos tener una percepción errónea de la realidad. Y eso sería un estrepitoso fracaso en lo que se refiere a gestión de proyectos.

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.

La importancia de una auditoría de BI

La construcción de una solución de Business Intelligence (BI), podría compararse a la construcción de un edificio. Necesitamos cimentar esta solución sobre una base sólida, que nos permita construir los diferentes proyectos, con la seguridad de estar aposentados sobre una estructura que nos permita crecer.

Pero, si todo el mundo acepta esto en la construcción, ¿porqué hay organizaciones que optan por otra estrategia a la hora de construir una solución de BI?

Una base poco sólida

Hace tiempo, realicé un proyecto para un cliente que cometió un grave error. A este proyecto lo bauticé como «La torre de Pisa».

Este cliente contactó conmigo porque en su organización tenían varios problemas con su solución de BI. El más importante de ellos era funcional. No conseguían obtener resultados correctos. Querían un servicio de consultoría experto, que les permitiese identificar y solucionar los errores existentes. Habían intentado solucionarlo con la consultora que les había construido la solución de BI, pero éstos fueron incapaces de hallar la solución a dichos problemas.

Dada la urgencia del cliente, mi objetivo se centró única y exclusivamente en la resolución de las incidencias detectadas. Por tanto, dejé de lado mi enfoque habitual (top-down), para focalizarme en los problemas identificados. Sin embargo, rápidamente pude observar que los problemas que causaban dichas incidencias, tenían su origen en fallos de diseño de la solución de BI existente.

Lo siguiente que hice, fue un informe detallando las implicaciones de estos errores de diseño dentro del sistema junto con un análisis de pros y contras del hecho de mantener o solucionar esos errores.

Pero también hice hincapié en el hecho de haber construido un sistema de BI sin ningún tipo de validación de la calidad de éste por parte de nadie. No habían hecho ningún tipo de indagación en clientes anteriores de esa consultora ni habían optado por la validación del diseño de un experto sobre el trabajo de su proveedor de servicios. Habían aceptado el proyecto con una fe ciega. Y se trataba de un proyecto con una visibilidad transversal en su organización, donde las repercusiones podían afectar a la toma de decisiones en todas las áreas y niveles de la organización.

Una decisión arriesgada

Estaban construyendo un gigante con pies de barro. En ese momento, les puse como ejemplo la torre de Pisa. Se encontraban en el punto en el que vieron como la torre estaba inclinada. Era el momento de decidir qué hacer. Si seguían adelante, corrían el riesgo de que la solución de BI fuera imposible de mantener en un futuro, teniendo que realizar una gran inversión para reconstruirla. Si decidían solucionar los problemas de base, tendrían un sobrecoste no presupuestado, pero a la larga, el coste sería mucho menor.

Mi cliente quería una solución rápida. Es por eso por lo que optó por seguir adelante con una resolución de las incidencias detectadas inicialmente, sin solventar los problemas de base en el diseño de su solución de BI. Así pues, me dediqué a solucionar las incidencias, no sin antes advertir del riesgo que ello podría suponer de cara al futuro, en el caso de que quisieran ampliar la solución de BI existente.

Una decisión errónea cae por su propio peso

Creo que fue al cabo de un par de meses de haber acabado el servicio por el que me contrataron, que recibí una llamada del mismo cliente. Estaban desesperados. Tenían un nuevo proyecto de BI en fase de desarrollo, pero no había manera de hacerlo funcionar. Ni su proveedor de servicios habitual ni su equipo interno eran capaces de seguir adelante con el proyecto. Cuando intentaban implementar una nueva funcionalidad, provocaban que otras funcionalidades ya existentes dejaran de funcionar. Se encontraban en un callejón sin salida. La torre de Pisa no podía crecer más.

Esta vez, mi cliente optó por un enfoque diferente. Me pidió que evaluara la posibilidad de finalizar el proyecto con el que estaban atascados, pero también una estimación del coste que supondría la reconstrucción de su solución de BI para poder disponer de un sistema escalable que pudiera crecer en el futuro de manera simple.

Al presentar mi propuesta, les indiqué la importancia de evaluar los costes a largo plazo. Ese había sido su gran error la primera de contactaron conmigo. En un proyecto de BI, es muy importante tener en cuenta los futuros proyectos a la hora de calcular el Retorno de Inversión (ROI). Así lo hicieron. Y llegaron a la conclusión más acertada en su situación. Decidieron reconstruir su solución de BI.

Tal fue la confianza que obtuve del cliente, que, en lugar de contratar los servicios de una consultora de más envergadura que StraBIA, decidieron encargarme el proyecto de reconstrucción de su solución de BI íntegramente. Aquello fue el principio de una satisfactoria relación profesional.

Conclusión

Una solución de BI es un sistema con una amplia visibilidad en una organización, ya que se utiliza para la toma de decisiones a todos los niveles y en todas las áreas de ésta. Al ser un sistema tan importante, es necesario estar plenamente convencido de que su construcción satisface los requerimientos de un sistema de BI. Esto goza aún de más importancia por el hecho de ser un tipo de proyecto con un número de expertos muy bajo si lo comparamos con proyectos de desarrollo de aplicaciones, por ejemplo.

Siempre que realizo un proyecto en un nuevo cliente con una solución existente de BI, intento dedicar un poco de tiempo a su análisis, identificando áreas de mejora. Sé que, haciendo esto, algunos de mis clientes han evitado situaciones desagradables en el futuro. Eso me anima a seguir haciéndolo, aunque no sea StraBIA quien acabe realizando el proyecto.

Afortunadamente, esto no es siempre así, y en ocasiones como la que os acabo de contar, sí que acabamos realizando el proyecto. Y en estos casos, una auditoría del nuevo sistema BI evaluaría la nueva solución con muy buena nota.

Quisiera finalizar con un par de preguntas:

  • ¿Crees que tu actual solución de BI está preparada para crecer manteniendo los niveles de rendimiento, efectividad y mantenibilidad requeridos por tu negocio?
  • ¿Crees que tu actual solución de BI superaría una auditoría?

Si has respondido «No» a alguna de estas preguntas, espero que este artículo te haga reflexionar sobre los riesgos a los que te puedes enfrentar en el futuro.

5 razones por las que necesitas una auditoría de tu sistema de BI

 

El éxito de un proyecto de Business Intelligence (BI) suele medirse en función de las funcionalidades del sistema. Si el producto final cumple los requerimientos funcionales y técnicos, el proyecto es un éxito. Sin embargo, el éxito real de un proyecto dista bastante de esto.

En este artículo, puedes encontrar los 5 factores más importantes que considero que un sistema debe cumplir aparte del cumplimiento obligado de los requerimientos funcionales y técnicos del proyecto, para ser considerado un éxito.

1. Grado de implantación del sistema BI actual y de satisfacción del usuario final

Un proyecto cuyo uso esté por debajo de unos mínimos concretos no puede considerarse un éxito. Por tanto, hay que plantearse preguntas cómo:

  • Cuántos usuarios utilizan el sistema de BI para la toma de decisiones inteligente?
  • Cuántas decisiones toman los usuarios ahora que no podían tomar con anterioridad a la implantación del sistema?
  • Qué impacto económico tienen esas decisiones?

Si los usuarios mayoritariamente no usan el sistema, lo usan a medias o no están contentos con las funcionalidades de éste, ya podemos haber creado una solución que cumpla el 100% de las especificaciones iniciales, que el proyecto no puede ser considerado un éxito.

Una auditoría permite tener visibilidad de estos indicadores de uso y satisfacción de los usuarios.

2. Uso de mejores prácticas para la facilitación del mantenimiento

Cuando se entrega el proyecto estamos tan solo en el principio de la vida de éste. En ese punto empieza una etapa en la que necesitaremos evolucionar la solución inicial. Ese mantenimiento puede ser de dos tipos:

  • Evolutivo: Se añaden nuevas funcionalidades a la solución inicial debido a nuevas necesidades de los usuarios.
  • Correctivo: Se corrigen incidencias detectadas en la versión actual.

Sea cual sea el motivo de este mantenimiento, un objetivo es que el coste de modificar el sistema sea bajo. Y esto tiene una especial relevancia en el caso del mantenimiento correctivo, ya que los usuarios no pueden utilizar ciertas funcionalidades del sistema que deberían estar disponibles.

El uso de mejores prácticas y estándares de BI en el diseño y desarrollo de la solución, facilitará la comprensión de ésta por parte del equipo de mantenimiento, reduciendo el tiempo dedicado a generar una nueva versión. Esta reducción de tiempo tiene una serie de implicaciones:

  • Aumento de la aceptación del trabajo realizado por el equipo de mantenimiento por parte de los usuarios.
  • Reducción de costes.
  • Disminución de la frustración del equipo al no encontrarse con un diseño y un código difícil de entender.

Una auditoría permite identificar el uso de mejores prácticas y estándares de BI en el desarrollo de una aplicación. De hecho, una auditoría en una fase inicial como la de diseño y previa al desarrollo permitiría prevenir situaciones no deseadas de antemano.

3. Optimización de recursos del sistema que aseguren un mínimo TCO

En un post anterior titulado «Calidad en un sistema de BI – Un beneficio para todos«, ya os hablé de la efectividad como uso inteligente de los recursos para obtener el máximo rendimiento de los componentes del sistema.

Mi experiencia me dice que este concepto es a menudo obviado en los proyectos, que basan el éxito en términos de rendimiento en el sobredimensionamiento del hardware. Si bien es cierto que esta estrategia es efectiva, no es la que más interesa al cliente, ya que éste estará incrementando sus costes cuando hay otras alternativas para obtener un buen rendimiento.

Pongamos como ejemplo la transferencia de datos entre dos sistemas informáticos situados en dos ciudades distintas. Si el consumo de datos debe realizarse una vez al día (e.g. carga de datos nocturna), el volúmen no excede los 100 MB y hay la opción de transferir los datos mediante un FTP a través de una red pública de datos como Internet, es realmente necesario tener una conexión punto a punto entre los dos sistemas? No hay duda de que hay beneficios con esta opción, pero realmente vale la pena pagar un sobrecoste adicional?

Una auditoría permite analizar los componentes del sistema BI y su uso, para poder detectar sobredimensionamientos e infrautilizaciones de éstos que podrían significar un aumento indeseado del TCO.

4. Revisión de documentación técnica y de usuario

Partamos de la base de que hay cierta documentación. Cualquier proyecto sin documentación no debería ser aceptado.

La documentación es el legado que el equipo de trabajo que ha desarrollado una solución de BI deja al equipo de mantenimiento y a los usuarios. Si la calidad de la documentación es pobre o poco detallada, es solo cuestión de tiempo para que los problemas empiecen a surgir.

El equipo de mantenimiento necesita no solo tener acceso a la documentación sino a los motivos que llevaron al equipo de proyecto a tomar ciertas decisiones. Si ese conocimiento no está documentando, el equipo de mantenimiento posiblemente no entienda porqué las cosas se hicieron de una manera concreta, a priori mejor que la utilizada, en su momento. Y esto puede suponer avanzar por un callejón sin salida para finalmente ver el motivo por el cual algo se hizo en su día de una manera concreta, con la pérdida de tiempo que ello supone.

Por su parte, tanto el equipo de soporte como los mismos usuarios, se enfrentarán a dudas frente a una nueva solución. Y es obvio pensar que buscarán en la documentación la respuesta a estas dudas. Por tanto, la documentación de usuario debería estar escrita pensando en esas dudas, basándose en el perfil del lector (el usuario) y su capacidad de comprensión y asimilación. El lenguaje utilizado por personas técnicas y de negocio suele ser diferente, el nivel de detalle requerido para poder comprender ciertos conceptos, también. Si no se tienen en cuenta estos conceptos, la documentación puede llegar a ser críptica para los usuarios.

Una auditoría permite identificar situaciones en las que la documentación no aporta información útil al equipo de mantenimiento, carece de información clave y no se adapta al perfil del lector.

5. Valoración independiente del trabajo realizado por el equipo de BI

Uno de los mayores riesgos a la hora de realizar un proyecto informático, es el exceso de confianza. El hecho de tener un diseñador experto no implica que sus decisiones vayan a ser las más apropiadas. Hasta los más grandes genios se equivocan. Por tanto, porqué correr ese riesgo dejando toda la responsabilidad del diseño de un componente a una sola persona? La respuesta está en la reducción de costes para el implementador de la solución. Sin embargo, un fallo en el diseño puede tener grandes implicaciones a nivel de costes en el futuro (e.g. aumento de costes en el mantenimiento evolutivo).

Mi recomendación es que, especialmente en la fase de diseño, las decisiones deberían ir acompañadas de una lista de alternativas y un análisis de puntos a favor y en contra (por obvias que sean), para poder decidir de manera objetiva qué interesa más al proyecto. Este análisis nos permitirá ver opciones que de otro modo quedarían escondidas y que podrían aportar nuevas ideas y mejoras a una solución única.

Una auditoría independiente y libre de intereses permite analizar los requerimientos y la solución propuesta, identificando alternativas y planteando preguntas cuyas respuestas no estén documentadas, para así poder enriquecer el diseño de la solución final, cosa que revertirá en beneficios a medio y largo plazo.

Conclusión

Además de las funcionalidades del sistema y el cumplimiento de los requerimientos, existen otros factores que son decisivos a la hora de evaluar el éxito de un proyecto y que suelen pasar desapercibidos por la presión para cerrar y entregar los proyectos.

Una auditoría del sistema BI permite comprobar el grado de cumplimiento de estos factores, para asegurar el éxito del proyecto antes de darlo por concluido.

Si consideras que estos puntos son importantes y que tu solución de BI actual podría no tenerlos en cuenta, o si estás pensando en implementar o estás implementando en estos momentos una solución de BI y necesitas un experto que audite el trabajo realizado por el equipo de proyecto antes de que sea demasiado tarde, contacta conmigo para pedir una auditoría de tu sistema BI.

Calidad en un sistema de BI – Un beneficio para todos

 

Hablar de calidad es hablar de algo que todo el mundo desea, tanto quien la ofrece como quien la recibe. Esto también es extensible a proyectos de Business Intelligence. Mi experiencia, sin embargo, me ha mostrado que la realidad difiere de esa imagen idílica que rebosa calidad por todos lados.

En este artículo quiero hacer especial hincapié en el concepto de calidad en la implementación de un proyecto BI y los beneficios que aporta a ambas partes: Cliente y proveedor de servicios (externo o interno, cuando se trata del departamento de IT).

El proveedor de servicios desea ofrecer calidad para así poder satisfacer a sus clientes, labrar una reputación y conseguir más proyectos futuros. Por su parte, el cliente desea obtener el máximo rendimiento a su inversión económica, y ésto pasa por obtener calidad.

Qué es calidad en un sistema de BI?

La calidad en un sistema de BI viene dada por los siguientes factores:

  • Rendimiento: Capacidad del sistema de obtener los resultados deseados en poco tiempo.
  • Efectividad: Uso de recursos inteligente y máximo rendimiento de los componentes.
  • Mantenibilidad: Facilidad de crecimiento y mantenimiento del sistema.

Vale la pena dedicar un tiempo a entender cada uno de estos factores.

Rendimiento

El principal objetivo de un sistema de BI es poder proporcionar al usuario la respuesta a un conjunto de consultas. Éstas, mayoritariamente deben analizar un gran volumen de datos. En el mundo actual, el tiempo es dinero. Y tener a un usuario esperando para obtener una respuesta puede tener un gran impacto económico. Aún más, si la frustración por la espera desemboca en un abandono de la solución de BI por parte del usuario. Es por eso que un sistema de BI debe minimizar el tiempo de espera de los usuarios.

Efectividad

Obtener el máximo rendimiento es esencial en cualquier tarea si queremos obtener una buena productividad. La economía de los recursos se halla en las prioridades de cualquier proceso de negocio y también en el día a día de nuestras vidas. En un sistema de BI no debería ser menos. Al aumentar la efectividad, conseguiremos el máximo rendimiento de los componentes del sistema. Y eso se traduce en una reducción de costes de hardware y posiblemente software.

Mantenibilidad

Una solución de BI no es estática, al igual que no lo són los requerimientos de análisis de datos en cualquier organización. Facilitar el crecimiento del sistema permite a las organizaciones poder responder a esos nuevos requerimientos. Pero para poder hacer eso de manera efectiva en tiempo y recursos, debemos construir el sistema de manera que nos permita esas futuras evoluciones.

Importancia de la calidad

Muy a menudo, rendimiento, efectividad y mantenibilidad no son factores que se hallan en la cúspide de las prioridades a la hora de implementar un sistema de BI. En su lugar, encontramos un único factor: la satisfacción de los requerimientos de negocio. Es decir, la funcionalidad del sistema.

La calidad es un concepto técnico. La funcionalidad es un concepto de negocio. El éxito de un proyecto de BI pasa por conseguir ámbos conceptos.

Si tan sólo nos centramos en la funcionalidad, el proyecto puede ser un completo fracaso. Veamos qué sucede en las siguientes situaciones:

  • Lentitud de las consultas: El usuario se frustra y deja de utilizar el sistema.
  • Sobrecarga del sistema informático: El crecimiento del volúmen de datos o la ejecución de consultas más pesadas provocan un desplome del rendimiento. La solución no debe pasar por la ampliación de los recursos hardware, ya que es una solución cara y posiblemente no prevista en los presupuestos de la organización. E inevitablemente, el hecho de padecer un tiempo de respuesta a las consultas alto, hace que el usuario deje de utilizar el sistema.
  • Ampliación de requerimientos de negocio: El coste de ampliación y mantenimiento del sistema es muy alto, con lo que algunos de los requerimientos no son satisfechos a corto plazo. En algunos casos, la falta de presupuesto puede hacer que estos requerimientos no sean implementados. Por lo tanto, el usuario deja de utilizar el sistema.

Y no hace falta decir que si el usuario deja de utilizar el sistema, el proyecto de BI es un completo fracaso.

Cómo asegurar la calidad en un proyecto?

Los factores de calidad anteriormente citados están claramente en conflicto. Por ejemplo, utilizar un código fácilmente mantenible (fácil de entender, estructurado, etc.) puede implicar una penalización en el rendimiento respecto a otros algoritmos más eficientes. Un claro ejemplo es el algoritmo de ordenación: Burbuja vs. QuickSort.

Para poder asegurar una buena calidad dentro de un proyecto, debe haber unas directrices bien establecidas desde el inicio del proyecto. Así como es clave definir la gobernanza de datos en un proyecto de BI, también lo debe ser el nivel de servicio en términos de rendimiento, el uso de los recursos y la facilidad de mantenimiento del sistema de BI.

Tener una estrategia clara y concisa de BI incluye la definición de los factores de calidad del sistema.

Dado el caso que el proyecto ya esté iniciado, una auditoría del proyecto, desde la definición a la implementación, ayudarán a determinar si la calidad se ha tenido en cuenta. Hay que tener en cuenta que suele ser mejor detectar un problema potencial antes de que éste aparezca que una vez ya se ha producido. Si el impacto en los usuarios de negocio ya se ha producido, su confianza en el sistema posiblemente estará amenazada.

Una auditoría puede ser iniciada tanto por el cliente como por el proveedor de servicios, como mecanismo de control interno a la calidad. Si es el proveedor de servicios quien inicia la auditoría, éste estará ofreciendo al cliente una mejor imagen por lo que respecta al servicio.

Resumen

La calidad de un sistema de BI aporta beneficios tanto al proveedor de servicios como al cliente. Con la calidad ganan ambas partes. Es una situación de win-win.

Hay tres factores esenciales en la calidad de un sistema de BI: Rendimiento, efectividad y mantenibilidad.

Estos tres factores entran en conflicto los unos con los otros, lo que requiere de un equilibrio entre ellos. Este equilibrio se consigue mediante la aplicación de mejores prácticas que aseguren que se cumplirán ciertos niveles mínimos identificados en la estrategia del proyecto de BI.

Una auditoría permitirá identificar el nivel de calidad de un sistema de BI.