Las aplicaciones que normalmente desarrollamos son del tipo OLTP (On-Line Transaction Processing o en castellano: Procesamiento de Transacciones en Línea)

En este tipo de aplicaciones se insertan/borran/modifican datos en gran cantidad y más raramente se los consulta.

Como ejemplos tenemos: contabilidad, ventas, facturación, sueldos, producción

En todos esos casos lo normal es que se inserte una fila (un registro) por cada “movimiento” ocurrido. ¿Vendimos algo? insertamos una fila en la tabla de ventas. ¿Pagamos sueldo a un empleado? insertamos una fila en la tabla de pagos de sueldos.

Eso está muy bien y es lo correcto. Cuando alguien desea ver lo que se vendió o los sueldos que se pagaron con un SELECT se soluciona.

Sin embargo, empieza a complicarse cuando las consultas son muchas, ocurren muy frecuentemente y las filas que deben ser procesadas no se cuentan por miles sino por millones, por muchos millones.

Imagínate una empresa grande, con sucursales en varios países, que el año pasado ha realizado 500.000.000 de ventas o sea que  tiene 500.000.000 de facturas en un solo año.

Si nuestra aplicación es OLTP entonces cada vez que un usuario desea realizar una consulta a la tabla de ventas tendrán que procesarse 500.000.000 de filas, lo cual es una exageración y por supuesto que será muy lento. Dependiendo de la complejidad de lo que el usuario desee y de la velocidad de conexión, tal consulta podría insumir horas, lo cual es totalmente impracticable.

¿Cuál es la solución?

Construir aplicaciones OLAP.

¿Qué significa OLAP?

Son las siglas de On-Line Analytic Processing o en castellano: Procesamiento Analítico en Línea.

¿Para qué se usa OLAP?

Para consultar los datos que las aplicaciones OLTP guardaron en las bases de datos, las cuales se han vuelto inmensas porque algunas de sus tablas tienen muchos millones de filas.

¿Eso significa que hay relación entre las aplicaciones OLTP y las aplicaciones OLAP?

Sí, el paradigma funciona de la siguiente manera:

    • Una aplicación OLTP se encarga de insertar/borrar/modificar las filas que se guardarán en las tablas de una Base de Datos OLTP
    • Un programa agrupa esas filas y el resultado lo guarda en una Base de Datos OLAP
    • Cuando la consulta de un usuario envuelve a tablas pequeñas (de pocos miles de filas) se utiliza la Base de Datos OLTP, en cambio cuando envuelve a tablas que en la Base de Datos OLTP tienen millones de filas se usa la Base de Datos OLAP

¿Qué tienen de especial las tablas OLAP?

Que no guardan datos individuales sino datos agrupados. En nuestro ejemplo, la tabla de ventas en una Base de Datos OLTP tenía 500.000.000 de filas. Supongamos que un Gerente necesite consultar las ventas del año pasado, clasificadas por mes (o sea: cuanto se vendió en enero, cuanto se vendió en febrero, etc.)

Siendo así, podríamos tener una tabla llamada AGG_VENTAS con las siguientes columnas:

  • Año
  • Mes
  • Sucursal
  • CantidadFilas
  • SumaVentasDelMes
  • MaximaVenta
  • MinimaVenta

Supongamos ahora que esta empresa tiene 3.000 sucursales

Como habrá una fila por cada mes y por cada sucursal, tendremos 12 meses por 3.000 sucursales, lo cual nos da un total de 36.000 filas

Por lo tanto, todas las ventas del año pasado las tenemos registradas en solamente 36.000 filas y cualquier SELECT a esa tabla será muchísimo más rápido que un SELECT equivalente a la tabla de 500.000.000 de filas.

Recuerda que las filas de las tablas de una Base de Datos OLAP siempre tienen datos agrupados que provienen de las tablas de una Base de Datos OLTP.

Eso significa que no puedes construir una aplicación OLAP (que sí o sí debería usar una Base de Datos OLAP), si no tienes una Base de Datos OLTP.

¿Puedo construir aplicaciones OLAP con Firebird?

Sí, aunque nativamente el Firebird carece de las herramientas que otros SGBDR como Oracle o DB2 proveen, es perfectamente posible construir aplicaciones OLAP usando Firebird.

¿Qué estructuras usan las aplicaciones OLAP?

Para poder agilizar las consultas de grandes cantidades de datos se utilizan estructuras multidimensionales (las tablas de Firebird son bi-dimensionales) llamadas cubos OLAP que contienen los datos resumidos de grandes bases de datos OLTP.

¿Cuál es la principal razón de usar aplicaciones OLAP?

La gran velocidad de respuesta que se consigue.

¿Por qué se usan dos bases de datos, una para OLTP y otra para OLAP?

Aunque las tablas agrupadas podrían estar dentro de una Base de Datos OLTP eso no se hace así por las siguientes razones:

    1. La cantidad de conexiones concurrentes suele ser muy distinta. Mientras a una Base de Datos OLTP podrían estar conectados miles de usuarios a una Base de Datos OLAP generalmente no se conectan más que unas decenas de usuarios
    2. En las aplicaciones OLAP lo que se busca es conseguir la máxima velocidad, por lo tanto cuanto más pequeña sea la Base de Datos mucho mejor. Las bases de datos OLTP equivalentes son inmensas
    3. La configuración también es distinta porque quienes se conectan a bases de datos OLAP generalmente disponen de computadoras muy rápidas (no te olvides que suelen ser gerentes, presidentes, etc.) en cambio a las bases de datos OLTP podrían conectarse con computadoras lentas

¿Vale la pena construir aplicaciones OLAP?

Si quieres ganar mucho dinero la respuesta es un rotundo sí. Las aplicaciones OLAP se venden en muchos miles de dólares porque quienes compran esta clase de aplicaciones son empresas grandes.

¿Qué debe tener una aplicación OLAP?

Las aplicaciones OLAP se usan para ayudarles a los usuarios en la toma de decisiones. Por lo tanto es imprescindible que le provean de muchísimos gráficos. También la posibilidad de exportar sus datos a Excel, a PDF, a HTML y a cualquier otro formato que el usuario use en sus demás aplicaciones. Por supuesto muchas grillas y lo más importante: la facilidad de buscar y visualizar cualquier dato que precise, en cuestión de segundos.

Conclusión:

Las aplicaciones OLTP fueron construídas desde los inicios de la Informática y siempre existirán y siempre serán muy útiles pero las empresas grandes actualmente tienen tablas con muchos millones de filas y necesitan gran rapidez en las consultas, y esa rapidez no la pueden obtener con aplicaciones OLTP. La rapidez que necesitan solamente la pueden conseguir con aplicaciones OLAP. Como quienes compran estas aplicaciones son empresas grandes, pagan muy buen dinero por ellas.

Con Firebird se pueden desarrollar aplicaciones OLAP y en siguientes artículos veremos como.