Bases de datos NoSQL

Cuando uno piensa en un programa que necesita almacenar datos piensa en una base de datos, y además, casi seguro, en una relacional. Ya sea Postgres, MySQL, Oracle, DB2… las bases de datos relacionales son fiables y robustas tras mas de 40 años de investigación y de uso en producción. Los problemas a los que se enfrentaban en 1975 tienen poco que ver con los de hoy en día, pero estos almacenes de datos siguen teniendo su hueco en lugares tan extraños para ellos como los servicios cloud de Twitter.

Las bases de datos relacionales vienen de un mundo donde se planificaba a largo plazo, que demandaba precisión y predictibilidad, es el mundo de las transacciones, de los organismos públicos, de los bancos. Estas BD son un reflejo de ese mundo: basadas en una teoría matemática sólida (el álgebra relacional), la estructura de sus datos, su esquema, es lo primero que se define, es rígido, pero si está suficientemente normalizado, con las tablas, las uniones y los filtros select podemos resolver casi cualquier consulta.

Pero en estos años las cosas han cambiado mucho, sobre todo, por la llegada de los dispositivos móviles a Internet. Hoy la fiabilidad de las transacciones es menos necesaria y una respuesta aproximada puede ser mas importante que una respuesta exacta (por ejemplo si estamos en un móvil que nos predice en tiempo real lo que estamos escribiendo en una caja de texto).

Las BD relacionales parecen adaptarse incluso a los entornos mas ajenos a su naturaleza, por ejemplo incorporando nuevas herramientas de busqueda, mas difusa, mas aproximada, o sencillamente porque el que las usa no las usa como hasta ahora, las descompone, se queda con lo que le interesa: un motor probado, unas tablas, unos índices, pero nada de transacciones, ni consultas complejas. Por este camino las bases de datos relacionales dejan de serlo para poder competir en un terreno alienígena donde abundan nuevas especies, las famosas BD NoSQL.

Estas nuevas especies son como BD relacionales “desestructuradas”, toman ideas de ellas pero no son lo mismo, vuelven a viejas ideas y las aplican de forma diferente o directamente hacen borrón y cuenta nueva.

Un ejemplo de estos nuevos “bichos” es Riak, que de relacional no tiene nada, es una BD clave-valor. Almacena cualquier cosa, texto, imágenes, videos, asociándolos a una clave. Mas simple imposible. Las claves se organizan como se necesite, en un ejemplo de un hotel para mascotas podemos tener por un lado las mascotas y por otro las celdas… No hay claves foráneas, lo que tiene son enlaces en los objetos con una etiqueta, por ejemplo enlaces “está al lado de”, “su celda es”… De esta manera a partir de un elemento podemos hacer link walking hasta llegar a lo que queremos. Muy lejos de la potencia de las consultas en un relacional pero extraordinariamente rápido y ligero.

Otras características de este nuevo terreno de juego son las peticiones masivas, las necesidades cambiantes, la obligación de una respuesta rápida, como en la tienda de Amazon (Riak está inspirada en Dynamo, la BD de Amazon). Riak es un almacén clave-valor distribuido y con los datos replicados en muchos nodos, no hay un único punto de fallo, todos los servidores son “iguales”.

Además, es que este “bicho” tiene a la Web en su ADN: las consultas, actualizaciones, inserciones y borrados se realizan mediante peticiones HTTP, los parámetros y la respuesta en JSON o XML.

Ej. Con la petición http://localhost:8091/riak/animals/charlie, y los parametros PUT y {“apodo” : “The Wonder Dog”, “raza” : “German Shepherd”} en su cabecera, podemos insertar un nuevo animal con clave charlie en el hotel.

Riak es un duro competidor para una BD relacional, es ligero y, aunque limitado, para ciertos problemas resulta imbatible. El mundo en el que estamos ya no es aquel en el que las BD relacionales reinaban, los casos raros de antes hoy son cada vez mas la norma y el campo esta lleno de nuevos competidores que están progresando rapidamente, incorporando nuevas ideas y madurando herramientas.

3 comentarios en “Bases de datos NoSQL”

  1. Es que no hay una base de datos de aplicacion universal, que era el objeto inicial de esto . Teoricamente , mas estrictamente matematicamente, es posible poder almacenar y estructurar la información segun el algebra relacional pero la realidad se impone sobre el modelo teorico y hay que buscar soluciones que cubran los nuevos requisitos .

    Las limitaciones del modelo relacional ya se vieron desde el principio , muchas entidades seguian manteniendo sus viejas base de datos IMS para operaciones diarias y hacian un volcado diario en su motor DB2 y te hablo de lo que decian mis profesores ( tiempo en el los dinosaurios campaban a sus anchas ) como ves los problemas son los mismos que tenemos ahora y las soluciones guardan cierta simmilitud

    1. Coincido contigo. ¿Una bonita utopía verdad? ¿Pero quien se resiste a una consulta declarativa (SQL) que nos permite preguntar por casi cualquier cosa sin necesidad de programar nada? Como bien dices nunca nunca ha cubierto todas las necesidades de almacenamiento de datos.

      Gracias por tu comentario.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *