Inteligencia de Negocios (Business Intelligence): Herramientas ETL, OLAP, OLTP y Data Warehouse
Inteligencia empresarial o Inteligencia de negocios (Business Intelligence)
La inteligencia empresarial (Business Intelligence), también llamada “Gestión de los Datos” (Data Management), es un conjunto de aplicaciones y herramientas enfocadas al procesamiento de los datos en una empresa para ayudar a tomar decisiones y realizar diversos análisis. La inteligencia empresarial realiza gestión de datos, consultas, generación de informes y reportes, y, más específicamente, todo el procesamiento necesario para traducir la lógica de negocios a la lógica de los sistemas empresariales.
Las áreas más importantes de Business Intelligence son:
- DW: almacenes de datos, bodegas de datos (Data Warehouses).
- ETL: transformar, extraer y cargar datos.
- DM: minería de datos (Data Mining).
- Aplicaciones OLAP: cubos OLAP, procesamiento analítico en línea (Online Analytical Processing) y análisis multidimensional.
- MIS: sistemas de información para la administración (Management Information Systems).
- Consultas e informes: visualización de información (Information Visualization) y Dashboarding.
- Calidad de datos y limpieza de datos.
- Sistemas de previsión empresarial.
- DSS: apoyo en la toma de decisiones (Decision Support Systems).
- CRM: Customer Relationship Management (gestión de la relación con clientes).
Herramientas ETL
Definición: consiste en el movimiento y transformación de datos. Es el proceso que permite a las organizaciones mover datos desde múltiples fuentes, reformatearlos y cargarlos en otra base de datos (denominada data mart o data warehouse) con el objetivo de analizarlos. También pueden ser enviados a otro sistema operacional para apoyar un proceso de negocio.
En definitiva, el principal objetivo de este proceso es facilitar el movimiento de los datos y la transformación de los mismos, integrando los distintos sistemas y fuentes en la organización moderna.
El término ETL corresponde a las siglas en inglés de:
- Extract: extraer.
- Transform: transformar.
- Load: cargar.
Fases de un proceso ETL
Las distintas fases o secuencias de un proceso ETL son las siguientes:
- Extracción de los datos desde uno o varios sistemas fuente.
- Transformación de dichos datos, es decir, la posibilidad de reformatear y limpiar estos datos cuando sea necesario.
- Carga de dichos datos en otro lugar o base de datos, un data mart o un data warehouse, con el objetivo de analizarlos o apoyar un proceso de negocio.
Proceso ETL (Extract, Transform and Load)
Un Data Warehouse o un Data Mart se cargan periódicamente, unificando información procedente de múltiples fuentes y creando una base de datos que cumple una serie de características descritas anteriormente. Esto implica que deben existir procesos que leen los datos de las diferentes fuentes, los transforman y adaptan al modelo definido, los depuran y limpian, y los introducen en la base de datos de destino. Esto es lo que se conoce como procesos ETL: procesos de Extracción, Transformación y Carga (Load).
ETL es un término que proviene del inglés, de las siglas Extract-Transform-Load (Extraer, Transformar y Cargar), y se refiere al tratamiento de los datos en una empresa. ETL es el proceso que organiza el flujo de los datos entre diferentes sistemas de una organización y aporta los métodos y herramientas necesarios para mover datos desde múltiples fuentes a un almacén de datos, reformatearlos, limpiarlos y cargarlos en otra base de datos, data mart o bodega de datos. ETL forma parte de la Inteligencia Empresarial (Business Intelligence), también llamada “Gestión de los Datos” (Data Management).
La idea es que una aplicación ETL lea los datos primarios de las bases de datos de los sistemas principales, realice transformación, validación, proceso de calidad y filtrado, y finalmente escriba los datos en el almacén, momento en que quedan disponibles para ser analizados por los usuarios.
Las herramientas y aplicaciones ETL más populares del mercado
- Oracle Warehouse Builder
- Microsoft SQL Server Integration Services (SSIS)
Extracción de los datos
Uno de los aspectos fundamentales que debemos considerar al diseñar un proceso ETL es si optamos por una actualización completa, que es mucho más simple, o por una actualización incremental, que suele ser lo más conveniente. Si optamos por la primera alternativa, el proceso consiste en borrar los datos y volver a cargarlos; si optamos por la segunda, habrá que establecer una serie de controles y técnicas, entre las que destacan las siguientes:
- Borrado solo de parte de los datos, por ejemplo desde una fecha determinada, y carga de los nuevos datos.
- Comparación de los datos de origen y de destino, actualizando solo los cambios.
- Uso de triggers u otras técnicas de replicación.
- Captura de datos mediante una aplicación diseñada específicamente para ello.
- Existencia de columnas timestamp que permitan seleccionar las filas modificadas desde la última extracción y aplicar dichos cambios en el destino.
Transformación de los datos
En los procesos de transformación es preciso asegurarnos de que los datos sean válidos, íntegros y útiles, lo que suele incluir realizar cálculos y generar nuevos valores. Los datos deben depurarse para eliminar inconsistencias, discrepancias y duplicidades. Estas transformaciones suelen implicar cambios respecto a la estructura de origen para adaptarla al destino, cambios en el contenido de los valores de origen y la creación de nuevos valores en las filas de destino.
Carga en el Data Warehouse
Como último paso, debemos incorporar los datos al Data Warehouse, a los diferentes Data Marts y a los cubos OLAP, según la presentación, los formatos definidos y la periodicidad de actualización propuesta.
OLAP (Online Analytical Processing)
El procesamiento analítico en línea (OLAP) tiene como objetivo agilizar la consulta de grandes volúmenes de información. Para ello utiliza estructuras multidimensionales, conocidas como cubos OLAP, que contienen datos precalculados y agregados. Estos sistemas tienen una velocidad de respuesta muy superior a la de los sistemas OLTP.
MDX (MultiDimensional eXpressions)
MDX es un lenguaje de consulta creado específicamente para realizar consultas sobre cubos OLAP, ofreciendo una sintaxis especializada para manipularlos. Así como utilizamos SQL para acceder a bases de datos relacionales, utilizaremos MDX para acceder a bases de datos multidimensionales.
KPI (Key Performance Indicator)
Los indicadores clave de rendimiento, o KPI por sus siglas en inglés, nos permiten ir un paso más allá de ver un simple valor, pudiendo contextualizarlo. Los KPI miden el nivel de rendimiento de un proceso; mediante un conjunto de KPI podemos monitorizar el estado actual del negocio, con el objetivo de mejorar la gestión y los resultados de la organización.
OLAP
OLAP es el acrónimo en inglés de On-Line Analytical Processing (procesamiento analítico en línea). Es una solución utilizada en el campo de la inteligencia empresarial (Business Intelligence) cuyo objetivo es agilizar la consulta de grandes cantidades de datos. Para ello utiliza estructuras multidimensionales (cubos OLAP) que contienen datos resumidos de grandes bases de datos o sistemas transaccionales (OLTP).
Tipos de sistemas OLAP
Existen distintos sistemas OLAP, diferenciados principalmente por el tipo de base de datos sobre el que se construyen, lo que da lugar, entre otras, a las siguientes categorías:
- ROLAP: construido sobre bases de datos relacionales que emplean, principalmente, esquemas de copo de nieve o de estrella. Es un sistema apto para analizar grandes volúmenes de datos.
- MOLAP: en este caso, las bases de datos sobre las que trabaja el motor OLAP son de tipo multidimensional. Presenta ventajas frente al modelo anterior, como una mayor rapidez en el almacenamiento de datos, la optimización del rendimiento de la memoria caché y una mayor eficiencia en la extracción de datos (debido a que estos deben estar previamente tratados o preestructurados). Sin embargo, también presenta desventajas, entre ellas el riesgo de duplicidad en los datos analizados (especialmente cuando se trabaja con cierto número de dimensiones) y la complejidad del proceso de carga, ya que los datos deben tratarse o preestructurarse en el momento de cargarlos.
- HOLAP: combina los sistemas ROLAP (relacionales) con los MOLAP (multidimensionales). Se recomienda almacenar los datos más recientes en MOLAP para mejorar la rapidez de los análisis, y los más antiguos o de menor uso en ROLAP, dada su facilidad de almacenamiento.
Bases de datos OLTP
OLTP – On-Line Transactional Processing
Los sistemas OLTP son bases de datos orientadas al procesamiento de transacciones. Una transacción genera un proceso atómico (que debe ser validado con un commit o invalidado con un rollback) y puede involucrar operaciones de inserción, modificación y borrado de datos. El proceso transaccional es típico de las bases de datos operacionales.
El acceso a los datos está optimizado para tareas frecuentes de lectura y escritura; por ejemplo, la enorme cantidad de transacciones que deben soportar diariamente las bases de datos de bancos o hipermercados.
- Los datos se estructuran según el nivel de aplicación (programa de gestión a medida, ERP o CRM implantado, sistema de información departamental, etc.).
- Los formatos de los datos no son necesariamente uniformes entre departamentos; es común la falta de compatibilidad y la existencia de islas de datos.
- El historial de datos suele limitarse a los datos actuales o recientes.
Bases de datos OLAP
OLAP – On-Line Analytical Processing
Los sistemas OLAP son bases de datos orientadas al procesamiento analítico. Este análisis suele implicar la lectura de grandes cantidades de datos para extraer información útil: tendencias de ventas, patrones de comportamiento de los consumidores, elaboración de informes complejos, etc. Este sistema es típico de los Data Marts.
- El acceso a los datos suele ser de solo lectura. La acción más común es la consulta, con muy pocas inserciones, actualizaciones o eliminaciones.
- Los datos se estructuran según las áreas de negocio, y los formatos están integrados de manera uniforme en toda la organización.
- El historial de datos es a largo plazo, normalmente de dos a cinco años.
- Las bases de datos OLAP suelen alimentarse con información procedente de los sistemas operacionales existentes, mediante un proceso de extracción, transformación y carga (ETL).
OLTP (Online Transactional Processing)
Los sistemas OLTP están diseñados para gestionar un gran número de peticiones concurrentes sobre sus bases de datos, permitiendo a los usuarios insertar, modificar, borrar y consultar dichos datos. Están enfocados a que cada operación (transacción) trabaje con pequeñas cantidades de filas y a ofrecer una respuesta rápida. Habitualmente utilizan bases de datos relacionales y suelen estar altamente normalizados. En ellos es muy importante la integridad de los datos, por lo que deben cumplir las propiedades ACID (Atomicity, Consistency, Isolation, Durability):
- Atomicidad: una operación se realiza por completo o no se realiza; nunca debe quedar a medias.
- Consistencia: solo se ejecutan las operaciones que cumplen las reglas de integridad de la base de datos.
- Aislamiento (Isolation): una operación no puede afectar a otras; dos transacciones sobre los mismos datos son independientes y no generan errores entre sí.
- Durabilidad: una vez realizada una operación, esta es persistente y no puede deshacerse.
Data Warehouse
Un Data Warehouse es una base de datos corporativa que integra información depurada de las diversas fuentes de la organización. Dicha información debe ser homogénea y fiable, almacenarse de forma que permita su análisis desde muy diversas perspectivas y ofrecer tiempos de respuesta óptimos. Para ello, la información se encuentra altamente desnormalizada y modelada de una forma bastante diferente a los sistemas transaccionales; principalmente se utilizan los modelos en estrella (star schema) y en copo de nieve (snowflake schema).
Un Data Warehouse es mucho más que lo comentado hasta el momento. Según Bill Inmon, se caracteriza por ser:
- Orientado a temas: los datos están organizados por temas para facilitar su comprensión por parte de los usuarios, de forma que todos los datos relativos a un mismo elemento de la realidad queden unidos entre sí. Por ejemplo, todos los datos de un cliente pueden consolidarse en una misma tabla, todos los datos de los productos en otra, y así sucesivamente.
- Integrado: los datos se integran en una estructura consistente, eliminando las inconsistencias existentes entre los diversos sistemas operacionales. La información se estructura en diversos niveles de detalle para adecuarse a las necesidades de consulta de los usuarios. Algunas de las inconsistencias más comunes son: en la nomenclatura, en las unidades de medida, en los formatos de fecha y la existencia de múltiples tablas con información similar (por ejemplo, varias aplicaciones con tablas de clientes).
- Histórico (variante en el tiempo): los datos, que pueden variar a lo largo del tiempo, deben quedar reflejados de forma que, al consultarlos, se reflejen estos cambios sin alterar la realidad que existía en el momento en que se almacenaron. Así se evita la problemática de los sistemas operacionales, que reflejan solamente el estado presente de la actividad de negocio. Un Data Warehouse debe almacenar los diferentes valores que toma una variable a lo largo del tiempo. Por ejemplo, si un cliente ha vivido en tres ciudades diferentes, debe almacenar el periodo en que vivió en cada una de ellas y asociar los hechos (ventas, devoluciones, incidencias, etc.) a la ciudad en la que residía cuando se produjeron, y no asociar todos los hechos históricos a la ciudad en la que vive actualmente.
- No volátil: la información de un Data Warehouse, una vez introducida, debe ser de solo lectura; nunca se modifica ni se elimina, y debe ser permanente para futuras consultas.
Adicionalmente, estos almacenes contienen metadatos (datos sobre los datos), que aportan un valor adicional al permitir conocer su procedencia (sobre todo cuando existen múltiples fuentes), la periodicidad con la que fueron introducidos, la fiabilidad que ofrecen, etc. Todo ello aporta una ayuda adicional tanto al usuario final como a los técnicos responsables de su mantenimiento, facilitando aspectos como su auditoría y administración.
Data Marts
La diferencia entre un Data Mart y un Data Warehouse radica únicamente en el alcance. Mientras que un Data Warehouse es un sistema centralizado con datos globales de la empresa y de todos sus procesos operacionales, un Data Mart es un subconjunto temático de datos, orientado a un proceso o a un área de negocio específica. Debe tener una estructura óptima desde todas las perspectivas que afecten a los procesos de dicha área. Según Ralph Kimball, cada Data Mart debe estar orientado a un proceso determinado dentro de la organización, por ejemplo, pedidos de clientes, compras, inventario de almacén o envío de materiales. Para Kimball, el conjunto de Data Marts forma el Data Warehouse.
Esquema en estrella (star schema) y en copo de nieve (snowflake schema)
Al modelar el Data Mart o Data Warehouse, hay que decidir cuál es el esquema más apropiado para obtener los resultados deseados. Habitualmente, y salvo excepciones, se modela la base de datos utilizando el esquema en estrella (star schema), en el que existe una única tabla central, la tabla de hechos, que contiene todas las medidas, y una tabla adicional por cada una de las perspectivas (dimensiones) desde las que queremos analizar dicha información.
El esquema en copo de nieve (snowflake schema) es una estructura más compleja que el esquema en estrella. La diferencia es que algunas dimensiones no están relacionadas directamente con la tabla de hechos, sino a través de otras dimensiones. También existe una tabla de hechos en el centro, que contiene todas las medidas, y una o varias tablas adicionales, con un mayor nivel de normalización.
Pivot: rota los ejes del cubo para ofrecer una presentación alternativa de los datos; el resultado del pivoteo se denomina cross-tabulation.
SQLite
SQLite es un sistema de gestión de bases de datos relacional compatible con ACID, contenido en una biblioteca relativamente pequeña (unos 275 KiB) escrita en C.
SQLite lee y escribe directamente en archivos de disco ordinarios: el contenido de una base de datos se almacena en un solo archivo multiplataforma, lo que le proporciona gran versatilidad. Existe un equilibrio entre el uso de memoria y la velocidad: a más memoria, mayor rapidez de ejecución, y tiene un rendimiento óptimo incluso en entornos con poca memoria.
Características
Algunas de las características principales de SQLite son:
- La base de datos completa se encuentra en un solo archivo.
- Puede funcionar completamente en memoria, lo que la hace muy rápida.
- Tiene un footprint menor a 230 KB.
- Es totalmente autocontenida (sin dependencias externas).
- Cuenta con librerías de acceso para muchos lenguajes de programación.
- Soporta texto en formato UTF-8 y UTF-16, así como datos numéricos de 64 bits.
- Soporta funciones SQL definidas por el usuario (UDF).
- Su código fuente es de dominio público y está muy bien documentado.
Plataformas de SQLite
SQLite está construida en C, lo que facilita su migración a diversas plataformas de sistemas operativos y dispositivos. Dado que una base de datos de SQLite se almacena por completo en un solo archivo, esta puede exportarse a cualquier otra plataforma y tener interoperabilidad total sin requerimientos de programación adicional ni cambios de configuración.
Las plataformas principales en las que SQLite funciona son:
- Windows 95, 98, ME, 2000, XP y Vista
- Windows CE y Pocket PC
- Mac OS X
- Linux
- OpenEmbedded
- PalmOS
- Symbian
Lenguajes de programación compatibles con SQLite
Al ser SQLite software libre, es posible encontrar una gran cantidad de componentes, librerías y drivers para interactuar con SQLite desde una gran diversidad de lenguajes y plataformas. Ya sea que utilicemos lenguajes modernos como Java, Perl, Python, PHP, Ruby o C#, lenguajes más antiguos como Pascal, Smalltalk o Clipper, o lenguajes poco conocidos como Suneido, REXX o S-Lang, para todos podemos encontrar librerías y ejemplos de código para SQLite.
NoSQL
Not only SQL (No solo SQL). Características principales:
- No utilizan SQL como lenguaje de consulta.
- No cumplen con el esquema entidad-relación.
- Ofrecen mejor escalabilidad y rendimiento.
Ventajas
- Manejo de gran cantidad de datos.
- Escalabilidad horizontal.
- Requieren menos hardware.
Diferencias
- Mayoritariamente no utilizan consultas SQL.
- No tienen estructuras fijas para el almacenamiento.
- No emplean operaciones JOIN.
- Su arquitectura no es centralizada.
Desventajas
- Son de código abierto.
- Presentan problemas de compatibilidad.
- Ofrecen una inteligencia para negocios limitada.
Tipos de NoSQL
- Clave-valor
- Documento
- Grafo
MongoDB
MongoDB es un sistema de base de datos NoSQL orientado a documentos, de esquema libre.
Características
- La información se almacena en documentos, equivalentes a los registros.
- Los documentos pueden agruparse en colecciones, equivalentes a las tablas.
- Los documentos se almacenan en BSON, una representación binaria de JSON.
- Las colecciones no siguen un esquema definido.
¿Qué es BSON?
BSON es un formato de serialización binaria utilizado para almacenar documentos y realizar llamadas a procedimientos remotos en MongoDB. Está diseñado para ser ligero, recorrible y eficiente.
Tipos de datos de BSON
- ObjectId
- Numéricos
- String
- Timestamp
- UTC Datetime
- BinData
Algunos comandos
Para insertar un documento: db.mi_tabla.insertOne({ })
Acciones básicas
mongoshow dbsuse admbasedatosdb.alumnos.insert({nombre: "Jose", apellido: "Quezada"})help
