Découvrez RethinkDB et entrez dans le monde des bases de données en temps réel

Le 08/06/2016

Dans Développement

Le but de cet article est d'être accessible au plus grand nombre, je vais donc devoir sacrifier certaines précisions pour rester simple. Si vous êtes déjà un développeur aguerri et que vous connaissez déjà Rethink Db, cet article n'est peut-être pas pour vous (quelque chose de plus pointu arrivera bientôt). N'hésitez pas à le partager aux personnes moins techniques qui pourraient gagner à connaitre cette base de données !

RethinkDB n'était pas vraiment mon sujet d'aujourd'hui, je pensais faire mon article sur horizon (un backend pour rethink Db), et simplement vous faire un petit point sur RethinkDB, comme à mon habitude avec les techniques qui ne parlent pas forcément à tout le monde. Seulement voilà, le SEULE ressource en Français traitant de RethinkDB que j'ai pu trouver sur internet vient de Wikipédia.

Laissez-moi donc vous presenter RethinkDB.

RethinkDB est une base de données noSQL

RethinkDB est un serveur de base de données (comme My Sql, Postgress ou mongoDb) de type noSql (pas comme mysql donc). Contrairement à une "simple" ressource, c'est un programme que vous devez installer (ou faire installer par votre administrateur système si possible) sur votre serveur avant de pouvoir vous en servir. Si vous comptez l'utiliser avec un hébergement mutualise, pensez donc bien à vérifier s'il est disponible avec votre hébergement.

Rethinkdb

NoSql ? Beaucoup de bases de données partages un même langage (à quelques particularitées près) permettant de dialoguer avec le serveur : le langage SQL. Ce langage très simple à apprendre, très clair et est parfait pour manipuler les données sous forme de tables. 

Pourtant, certaines bases de données ont décidé de se passer de ce langage (pour des raisons qui leur sont propres, souvent pour mieux coller à leur idéologie, pour des questions de performances ou de simplicité à "scale", c'est-à-dire passer de 100 personnes/jour à 100000 personnes/jour), et de passer par un autre langage par forcément standardisé. Ces bases de données sont donc caractérisées par leur non-utilisation du langage SQL, ce qui explique leur nom : noSql.

Les joies du temps réel

Avec une base de données standard, le client doit faire un appel à la donnée à chaque fois qu'il veut mettre à jour les informations qu'il possède, ce qui veut dire que les informations peuvent ne pas être à jour entre deux appels, et que nous effectuons certains appels pour rien (si rien n'a changé par exemple). Cela peut vite être problématique pour une application Javascript temps réel.

Avec les bases de données temps réel, il est possible de "s'abonner" à une requête et d'etre tenu informé à chaque modification, sans avoir à faire une requête. Cela permet donc la création d'application comme le travail collaboratif de Google Doc, Trello, … bien plus simplement.

 
 

Un peu de technique

Le gros avantage de RethinkDB par rapport a la concurrence (Gun.js ou CouchDB) est son langage de queries : ReQL. Simple a prendre en main (surtout par rapport a CouchDB, qui pour moi a ete fait par le demon), il est un des rares langages noSQL a permettre les jointures, ce qui est un vrai plus.

Un autre des avantages de RethinkDB est l'existence d'un backend pre existant, Horizon, qui pourra vous permettre de manipuler vos données durant votre phase de développement, ou même de production si vous ne faites pas beaucoup d'opérations du côté serveur. Je n'en parle pas plus ici, ce sera le sujet d'un article complet dans peu de temps.

RethinkDB est disonible sous forme de paquet pour la plupart des distributions linux, mais aussi pour OSX et Windows, donc nous n'aurez pas de difficulte a l'installer sur votre machine de developpement, quel que soit votre environnement de travail. De plus, son installation et sa configuration n'est pas plus complexe que peut l'etre mySQL, vous aurez juste moins de ressources disponibles sur le net. Heureusement, la documentation fournie est complete.

RethinkDB va-il remplacer mySQL ?

Non.

MySQL est la depuis trop longtemps et et trop utilise pour que quelque chose puisse réellement songer le remplacer. De plus, mysql et RethinkDB ne sont pas réellement des concurrents. À quoi vous servirait un RechinkDB pour un site vitrine, ou un blog par exemple ?

Il ne faut pas voir RethinkDB comme un challenger des bases de données SQL mais comme un outil complémentaire, qui peut vos ouvriers de nouveaux champs d'applications possibles.

Pour ce qui est de MongoDB, couchDB et les autres bases de données "exotiques", la question peut en effet se poser. Actuellement, ma réponse sera des plus simples : nous verrons bien. Pour l'instant, ces bases de données possèdent toutes une communauté active et grandissante, et ne remplissent pas réellement le même besoin.