Si hay algo que parece que nadie se cuestionaba, que siempre daba por sentado, era la necesidad de una base de datos relacional para desarrollar una aplicación de empresa. Ya sea en su versión de pago (Oracle, DB2, SQL Server… ) o de código abierto (principalmente MySQL) por muy avanzada que fuese la tecnología empleada para la implementación de código de la aplicacion, al final los datos había que persistirlos en una base de datos relacional.

Como el mundo de los objetos y el mundo de las bases de datos relacionales son como el agua y el aceite (es muy difícil mezclarlos), se inventaron los ORM (que hacen la correspondencia entre objeto y tabla de manera “transparente” para el desarrollador), pero al final esta unión es una unión “contra-natura” que podemos decir que rechina por las juntas.

Y en esto resulta hay gente que comete el “sacrilegio” de decir que las bases de datos relacionales no se ajustan a sus necesidades y que no son lo suficientemente escalables para la web 2.0, con aplicaciones que cuentan con millones de usuarios (muchos millones) como Facebook o Linkedin, pasándose al movimiento noSQL. ¿De qué son capaces estos “almacenes de datos”? pues para muestra un botón, en Facebook por poner un ejemplo, es capaz de escribir hasta 50 PetaBytes de datos en disco en tan sólo 0.12 milisegundos, más de 2500 veces más rápido que MySQL.

Recientemente, leo en javahispano que Twitter se pasa al movimiento noSQL. Abandona el uso de MySQL , verdadero referente de los proyectos opensource (y ahora en manos de Oracle tras la compra de Sun Microsystems). Se pasa a Cassandra, la implementación creada por Facebook (proyecto de Apache.org) que “se comporta como un mapa gigantesco en el cual puedo meter pares claves-valor y recuperar los valores en cualquier momento partir de las claves. Los valores, pueden ser básicamente cualquier cosa, no habiendo ningún esquema que limite lo que se puede guardar en la base de datos”.

Y los ejemplos abundan, y no precisamente de empresas desconocidas: BigTable de Google (procesa 20 petabytes por día), Dynamo de Amazon, Terracotta de Adobe, Project Voldemort, de LinkedIn. En esta página se pueden ver detalles concretos de su diseño.

Las bases de datos relacionales tienen características muy superiores en determinados aspectos, algunos críticos para ciertos negocios, como el control de integridad y la transaccionalidad. Pero como todo, deben usarse cuando apliquen para el caso concreto que tenemos entre manos. Si los datos que debemos manejar, tienen una estructura simple pero en grandísimas cantidades, con millones de usuarios concurrentes, y con unos requisitos de rendimiento altos, la alternativa de soluciones noSQL es una realidad (Amazon, Google, Facebook lo demuestran).

Comparte este artículo…

Anuncios