sábado, octubre 27, 2007

El principio del fin

El modelo de base de datos relacional siempre ha promovido la idea de que cualquier cosa se puede almacenar en una base de datos relacional, para muestra solo hay que ver algunos productos de Oracle. Sin embargo, son esos mismos productos, o mejor su gran fracaso, los que dejan entrever que en realidad los RDBMS no son una solución universal de almacenamiento.

En efecto investigaciones sobre sistemas de almacenamiento persistente y recuperación de información parecen apuntar a la desaparición de las bases de datos como las conocemos hoy.

Ciertamente se pueden almacenar documentos de texto, páginas web y hasta información jerárquica en un RDBMS, igual que se puede utilizar una llave de tubos para martillar un clavo y demoler paredes, sin embargo que se puedan utilizar, no significa que sean apropiadas para eso.

Por ello están apareciendo múltiples tipos de bases de datos especializadas para cubrir diversos campos de aplicaciones que necesitan persistencia, estas aplicaciones permiten estructurar la información mas compacta y eficientemente que su equivalente modelado en base al álgebra relacional, en áreas que van desde el almacenamiento de jerarquías hasta el de documentos, incluyendo aplicaciones como el Data Warehousing, lo que deja a los RDBMS confinados básicamente a un solo área: el procesamiento de transacciones en línea (OLTP).

Aun cuando pueda pensar que lo que digo es una insensatez, puede preguntarse que usa Google para implementar sus servicios y la respuesta es: que no usan RDBMS ni siquiera para la facturación que es una aplicación típica de OLTP. También puede preguntarse que utiliza Alexa, y la respuesta es otra vez: algo diferente de un RDBMS.

Pero además los últimos avances tecnológicos y particularmente la Ley de Moore, estan permitiendo reemplazar los RDBMS para sistemas OLTP, y además ganar 1 o 2 órdenes de magnitud en el rendimiento, sería como ponerle un turbo a su base de datos actual para que fuera 100 veces más eficiente.

100 VECES !!, ¿pero cómo?, fácil, metemos todos los datos en RAM, y al olvidarnos del disco, todo va mucho más rápido, pero además como no hay que mantener estructuras complejas como logs de transacciones, y algunas otras estructuras que solo existen para optimizar el número de accesos a disco en un RDBMS tradicional, los datos pueden almacenarse de manera más compacta, aumentando la posibilidad de almacenar sus datos en RAM.

Rápidamente surge la duda: ¿será que caben mis datos en RAM?, veamos; hoy son comunes los servidores con 64GB de RAM, el 95% de las bases de datos para OLTP caben en esa cantidad de memoria, el otro 5% son de negocios tan grandes que podrían comprar servidores con 256 GB de RAM, o esperar solo 3 años para que aparezcan servidores con 1TB de RAM.

Pero ¿y si la máquina que contiene los datos únicamente en RAM falla, cómo recupero las transacciones desde el último backup?, la respuesta es simple y además resuelve otro problema habitual: no se necesita recuperar ninguna transacción porque las réplicas siguen trabajando, apenas se resuelva el problema con la máquina fallida, esta vuelve a adquirir la base de datos desde alguna de las replicas, preferiblemente esparcidas por todo el mundo.

Si aún le parece una idea descabellada, puede leerse el paper The End of an Architectural Era (It’s Time for a Complete Rewrite)” donde los investigadores del M.I.T. dan una perspectiva mucho más técnica.