NoSQL y Open Source

Ya he escrito en julio de 2009 sobre los novísimos sistemas de almacenamiento no relacional y el paradigma NoSQL, pero me parece interesante volver sobre el asunto desde la perspectiva del Software Libre.
Resulta que las redes sociales le han dado a pensar a los desarrolladores que un sistema gestor de base de datos relacional (SGBDR) no es la infraestructura óptima para un sitio web con decenas de millones de usuarios registrados. Además, los servicios más importantes han liberado sus sistemas de almacenamiento no relacional. De LinkedIn salió Voldemort, Facebook donó Cassandra a la Apache Software Foundation, VMWare esponsoriza Redis (usado por Craigslist), en 2009 Baidu se convirtió en sponsor de
Hypertable y se sospecha que HBase, la base de datos que corre sobre el framework Hadoop extensamente usado por Yahoo!, también se usa en Bing tras la compra de Powerset por parte de Microsoft en 2008.
Vale la pena señalar que en los sistemas de almacenamiento no relacional los substitutivos al Software Libre no son sistemas privativos sino software como servicio. La competencia del software de Apache no es mayormente software de Microsoft u Oracle (aunque tengan el veterano BerkelyDB) sino Amazon Dynamo como parte de S3 o la implementación de BigTable disponible en Google App Engine.
Lo más probable es que los usuarios de almacenamiento no relacional se dividan en dos grupos, los de software Open Source y los de software como servicio.
Una buena porción de la tarta Open Source se la llevará Apache con Cassandra, CouchDB, HBase y Jackrabbit.
Habrá también proveedores independientes como mongoDB de 10gen o Tokyo Cabinet, con unas pocas funcionalidades estrella o especialmente adaptados a algún lenguaje de programación como Ruby o PHP, pero yo dudo que vaya a haber un próximo producto estrella como MySQL o JBoss fuera de Apache que domine el nicho de sistemas almacenamiento no relacional Open Source.
Otra fracción importe de los desarrolladores se convertirán en usuarios de los sistemas de almacenamiento como servicio de Amazon, Google, Azure, o cualquier otro. Incluso algunas de las ofertas de almacenamiento como servicio estarán basadas en Software Libre.
Lo importante es la creación de un API estándar como SQL. Si apareciera un API estándar para almacenamiento no relacional con soporte para ACID, bloqueos, y replicación, entonces sería posible escribir una aplicación para que corriese en cualquier infraestructura y así eliminar el vendor lock-in que produce el uso de las soluciones de almacenamiento como servicio. A falta de un estándar yo recomendaría a cada desarrollador que antes de basar su solución an Google App Engine o Amazon S3 o Azure o lo que sea, al menos escriba un wrapper que permita cambiar el proveedor de infraestructura en caso de que ello fuere conveniente o necesario.
También habrá un hype de moda dentro de poco, que pronto pasará. Los sistemas de almacenamiento clave/valor tampoco son la solución perfecta. En realidad son una simplificación extrema de los sistemas gestores de bases de datos relacionales surgida para solucionar los problemas de rendimiento y escalabilidad de sitios web con centenares de millones de usuarios. Los sistemas NoSQL casi siempre se usan en combinación con caches como memcached o JBoss Cache, con bases de datos relacionales como MySQL y con indexadores como Lucene. Y defensores a ultranza del modelo relacional tampoco faltan. Los hay que argumentan que una base de datos relacional paralela es superior en todos los aspectos a un sistema de clave/valor o que simplemente la mayoría de ellos no escalan como deberían, o incluso que están impacientes por ver morir el movimiento.
El precio de la memoria RAM y la evolución hacia las nuevas tecnologías DDR3 y DDR4 también será un factor determinante en la evolución de las arquitecturas. Con el precio actual de ~35€ por Gigabyte de memoria DDR2 se puede almacenar una base de datos de 96Gb enteramente en RAM por poco más de 3.000€. Aunque dicho precio es aún 10 veces superior de lo que cuesta la misma cantidad de espacio en disco, empieza a ser económicamente viable para muchos sitios web manejar una gran parte de su información no-multimedia en RAM utilizando la base de datos sólo como copia de respaldo ante caídas.
Actualización: Sequoia invierte $6,5M en mongoDB

Compartir:
  • Twitter
  • Meneame
  • Facebook
  • Google Buzz
Esta entrada fue publicada en Casos Prácticos, Liberando Aplicaciones, Mercado y Oportunidades de Negocio, Morfeo Think Tank, Tecnologías Libres. Guarda el enlace permanente.