rethinkdb
19
Sep

RethinkDB: La Base de Datos para la Web en Tiempo Real

Cada vez es más frecuente encontrar en los proyectos dos, tres o más bases de datos y estas son también más especializadas. Es una tendencia que tenemos que asumir, MongoDB, Cassandra, Redis, por mencionar solo las más relevantes, se van introduciendo en nuestros sistemas. Los proyectos son también cada vez mas distribuidos y es en esta intersección donde encontramos RethinkDB.

rethinkdb

RethinkDB es una base de datos Open Source, NoSQL, distribuida y orientada a documentos JSON. Se define como la base de datos de la web en tiempo real. Funciona sobre Linux, OS X y ahora también en Windows y es en parte competencia de MongoDB y una alternativa a Firebase. Escrita en C++ ha construido una extraordinaria comunidad de miles de desarrolladores.

RethinkDB es una base de datos muy joven, en 2009 da los primeros pasos, en 2012 liberan la primera versión de código abierto (1.2) y en el verano del 2015 la primera versión preparada para producción (2.0). Un hito importante en su desarrollo es Diciembre del 2013 con la financiación de $8M de las Series A.

Me llamó especialmente la atención la facilidad de despliegue y gestión de un cluster multinodo, menos de 5 minutos y tiene una interfaz web para gestionarlo muy amigable. Respecto a sus capacidades hay un caso de estudio de un proyecto con bigchain de 32 nodos, 1 millón de escrituras/segundo y más de un Petabyte de datos [1].

Los propios desarrolladores la recomiendan para proyectos como Web + aplicaciones móviles, mercados en tiempo real, Streaming analytics, dispositivos conectados (IoT), juegos multijugador, etc. Hay que tener en cuenta que el soporte para ACID no es completo, en realidad sigue otro paradigma: CAP. El proyecto dispone de documentación completa y detallada con multitud de ejemplos.

rethinkdb

ReQL es el lenguaje de consulta de RethinkDB. Ofrece una forma muy potente para manipular documentos JSON y se incrusta en el lenguaje de programación que estemos utilizando, con lo que no tendremos que cambiar nuestro entorno de desarrollo.

‘Changefeeds’ es una de las características más destacables, permite suscribirnos a los resultados de una consulta de forma que si hay actualizaciones en la base de datos también se actualizan los resultados mostrados. Las consultas se pueden encadenar con el operador ‘.’ y se ejecutan en el servidor. Permite Map-Reduce, Join, consultas geoespaciales, subconsultas y agregaciones. Tiene drivers oficiales para Ruby, Python, Java y JavaScript/Node.js y más de una docena soportados por la comunidad: C#/.NET, Go, Haskell, PHP, Lua, etc.

rethinkdb

También podemos acceder via API y combinarlo con API’s externas directamente desde ReQL de forma sencilla. Algunos ejemplos: [2][3][4]

Recientemente el mismo equipo de RethinkDB ha liberado la version 2.0 de Horizon, un backend de desarrollo que incluye el servidor de backend, una librería javascript y una linea de comandos [5].

Leave a Reply