Spécial Devoxx 2011 : comment tirer parti de NoSQL dans un projet Java

Quel rôle peut jouer Spring Data dans la mise en œuvre d'une base NoSQL ? Quelles sont les contraintes de ce nouveau modèle ? Retour sur la conférence de Chris Richardson de SpringSource.

C'est probablement un des talks les plus appréciés de la journée. Il est proposé par Chris Richardson de chez SpringSource au sujet de NoSQL.

SQL est largement reconnu et répandu, alors pourquoi NoSQL ? Tout simplement pour des aspects de performance, de passage à l'échelle (scaling) et parce qu'avec NoSQL on n'a pas de schéma de donnée figé.

Le problème avec NoSQL c'est qu'il existe des centaines de solutions mais pas encore de consensus, pas de standard. En attendant, il faut faire avec et être polyglotte, et c'est là Spring Data intervient !

Après avoir abordé de manière succinte les trois outils NoSQL que sont Redis, Cassandra et MongoDB, et les différences qui les caractérisent, Chris Richardson nous à montré comment Spring Data se propose de jouer les intermédiaires pour encapsuler l'accès à la couche de persistance NoSQL. Pour cela, on retrouve la notion de templates qui ont déjà fait leurs preuves avec JDBCTemplate ou MailTemplate par exemple.

Concrètement, on s’aperçoit que les choses sont plus ou moins complexes à écrire selon qu'on choisit telle ou telle cible NoSQL. Et on réalise surtout qu'en NoSQL ce sont les requêtes qui vont guider la manière dont on va structurer les données ce qui parait plus que bizarre lorsqu'en SQL on est habitué à structurer les données en fonction du modèle.

Entre Redis, Cassandra et MongoDB, c'est ce dernier qui sort du lot car il fourni un language de requêtage riche proche de ce qu'on peut faire avec JPA, et pour ne rien gâcher il offre de très bonnes performances. Évidement chaque moteur NoSQL a ses avantages et inconvénients, et il faudra tester et choisir selon les besoins du projet.

Pour finir, Chris Richardson nous met en garde car tout n'est pas rose avec NoSQL. Il faudra faire un croix sur l'aspect transactionnel, sur les bases de données normalisées et leurs contraintes d'intégrité, etc. Bref, NoSQL ce n'est pas mieux ni pire que SQL c'est juste différent !