Comparatif des bases NoSQL en mode cloud : souplesse contre robustesse

Comparatif des bases NoSQL en mode cloud : souplesse contre robustesse Amazon Web Services, Microsoft Azure, Google Cloud et Couchbase proposent des offres répondant à différents cas d'usage. Comment les départager ?

Les bénéfices d'une base de données NoSQL en mode cloud sont connus. En passant par un service managé, comme le proposent Amazon Web Services (AWS), Google Cloud ou Microsoft Azure, une entreprise s'affranchit de la configuration, de la maintenance ou du patching de la base mais aussi de la gestion des performances. Une plateforme cloud permet aussi d'absorber les pics d'activité par une mise à l'échelle automatique et la constitution de clusters.

Cette flexibilité a un prix, rappelle Rudi Bruchez, consultant-formateur et auteur de l'ouvrage "Les bases de données NoSQL et le Big Data" dont la troisième édition paraîtra cet automne aux éditions Eyrolles. "Le modèle économique des providers repose sur un coût par requête dont la prévisibilité est difficile. A la différence d'une base de données NoSQL installée sur un serveur en propre qui permet de faire autant de requêtes que l'on souhaite. A cela s'ajoute des coûts cachés comme ceux liés à la sauvegarde", indique l'expert. Particulièrement élevé, le coût lié au transfert des données sortant est également à regarder de près.

Une base de données managée est généralement associée à d'autres services cloud du même provider. Dans notre comparatif, seul Couchbase offre davantage de gage d'indépendance puisque sa base tournera à terme sur trois cloud. Sur le papier, les quatre solutions retenues se présentent comme des bases de données génériques offrant sensiblement les mêmes fonctionnalités. Pour le départager, le premier facteur discriminant porte sur le type de données que l'on souhaite manipuler.

Comparatif des bases de données NoSQL en mode cloud
  Amazon DynamoDB Azure CosmosDB Couchbase Cloud  Google Cloud Firestore
Année de lancement 2012 2014 Juin 2020 2017
Modèles Clé-valeur, document Clé-valeur, document, graphe, mémoires à colonnes large Document Document
Langages supportés .Net, Java, JavaScript, Perl, PHP, Python, Ruby, Erlang, Groovy… Go, Java, JavaScript, Node.js, Objective-C, Python… .Net, C, Erlang, Go, Java, JavaScript, Perl, PHP, Python, Ruby… .Net, C#, Java, JavaScript, Node.js, Python…
Région France Oui Oui Oui Prévue pour 2022
Références Nike, Samsung, CapitaleOne, Netflix, Snap Nordstrom… Coca-Cola, ExxonMobil, Symantec, Citrix… NP NC
Tarification 1,4846 dollar en écriture et 0,297 dollar en lecture par million d'unités de demande pour la région France. Plus coûts de stockage et de sauvegarde. 0,0068 euro par heure pour 100 unités de requête par seconde (débit provisionné mono-région, sans mise à l'échelle). Plus frais de stockage et de transactions. 0.31 dollarspar heure et par nœud pour la version développeur, 0,47 dollar pour la version entreprise.  0,18 dollar en écriture, 0,06 dollar en lecture et 0,02 dollar en suppression pour 100 000 documents. Coût de stockage : 0,18 dollar par Go.

"Une base NoSQL orientée clé-valeur, comme DynamoDB d'Amazon, offre une rapidité accrue", note Rudi Bruchez. A l'instar d'un dictionnaire, elle structure les données en un seul point d'entrée. Cela convient à des besoins simples. Amazon l'a utilisée au départ pour gérer des paniers d'achat. Ce type de base pêche en revanche par sa pauvreté fonctionnelle et son manque de recherche multicritères. Des possibilités qu'offrent en revanche des bases de données orientées documents comme Cosmos DB de Microsoft ou Couchbase.

"La manière d'interroger la base a aussi son importance. "DynamoDB et Cosmos DB utilisent un pseudo SQL, qui reste le mode d'interrogation le mieux maîtrisé et le mieux compris", poursuit Rudi Bruchez. "Plus orienté web, Firestore de Google s'appuie sur Json. Plus généralement, DynamoDB et Firestore s'adressent davantage à des projets web, CosmosDB et Couchbase à de l'analytique."

Christophe Parageaud conseille d'utiliser l'émulateur proposé par les providers. "Cela permet de tester localement si la solution correspond bien au cas d'usage associé et offre les performances attendues", argue le consultant solutions data & cloud d'ASI Informatique.

"Cosmos DB et Firestore offrent une plus grande granularité au niveau des droits pour autoriser la lecture selon des règles prédéfinies"

La localisation est un autre critère important. La base de données doit être au plus proche de l'application afin de réduire le délai d'envoi et de réception des données. Cette notion de proximité est plus sensible en lecture qu'en écriture. Tous les providers proposent le multi-régions. Cette option, bien sûr payante, s'applique aux applications déployées mondialement et nécessitant des relais locaux.

D'autres facteurs sont à étudier comme les langages supportés ou la présence de trigger qui déclenchent l'exécution d'une instruction ou d'un bloc d'instructions dès qu'une ligne est insérée, supprimée ou modifiée dans la table à laquelle il est associé. Pour les données sensibles, il faut également évaluer le niveau de cohérence proposée afin de s'assurer de la bonne synchronisation entre une base située, par exemple, aux Etats-Unis, et sa copie au Japon.

En termes de sécurité, les providers chiffrent les données par défaut et présentent toutes les certifications attendues dont celle dédiée à l'hébergement des données de santé (HDS). "Cosmos DB et Firestore offrent une plus grande granularité au niveau des droits pour autoriser la lecture selon des règles prédéfinies", observe Christophe Parageaud.  "Chez DynamoDB, cela s'applique au niveau de la table, en fonction de l'endroit où les données sont stockées."

Amazon DynamoDB, la base la plus ancienne

Comme le plus souvent, c'est Amazon Web Services qui a ouvert le marché. Lancée dès 2012, DynamoDB se présente comme une base orientée clé-valeur et document. C'est surtout sur le premier cas d'usage qu'elle est reconnue. En termes de sauvegarde des données, DynamoDB propose la fonction point-in-time recovery (PITR). "A la différence d'un back-up classique effectué à un instant T, toutes les transactions sont tracées et on peut revenir dans le temps pour annuler une modification", explique Christophe Parageaud. C'est donc la robustesse qui prime. Autre fonctionnalité, AppSync permet de synchroniser les données web et mobile.

Azure Cosmos DB, le multi-modèles

Face à DynamoDB, la base NoSQL CosmosDB d'Azure se veut nettement plus souple. La solution de Microsoft se présente sous la forme d'une base multi-modèles, orientée clé-valeur, document ou graphe selon le cas d'usage souhaité. Elle propose des APIs pour simuler SQL, MongoDB ou Cassandra. "Toutefois, il ne s'agit pas de modèles natifs et il peut toujours y avoir quelques différences", tempère Christophe Parageaud. Cette approche peut notamment convenir à un projet démarrant avec une base de données existante ou, dans une phase transitoire, pour migrer, par exemple, une base Cassandra ou MongoDB dans le cloud. Rudi Bruchez salue, lui, l'approche intuitive du multi-régions. "Il suffit de choisir sur une carte du monde les régions où on copie les données pour les synchroniser."

Couchbase Cloud, le multicloud

En bêta test depuis février, le service managé de Couchbase est, depuis le 30 juin, disponible sur AWS et le sera sur Microsoft Azure et Google Cloud d'ici la fin de l'année. Couchbase Cloud, qui repose sur la base de données NoSQL Couchbase Server, sera ainsi capable de répliquer des données d'une plateforme cloud à une autre.

Couchbase est connue pour son architecture de stockage mémoire, son outil de requêtage normalisé SQL, baptisé N1QL, et son format Json flexible au niveau des schémas. "C'est la base de données la plus riche fonctionnellement", estime Rudi Bruchez. "Elle peut faire de l'analytique, de la recherche full texte, de la gestion des événements." Revers de la médaille, "cette richesse fonctionnelle peut nuire aux performances si les requêtes sont complexes."

Google Cloud Firestore, pour les applications cloud natives

Google Cloud Firestore est une base de données orientée documents, étroitement liée à Firebase, solution dédiée la gestion du backend d'une application mobile. Lancée en 2017 et en disponibilité générale depuis janvier 2019, l'offre s'adresse avant tout aux développeurs mobiles, web et IoT, même si elle peut tourner également avec des applications sur Google Compute Engine ou Google Kubernetes Engine. Firestore peut s'appliquer en mode natif ou en mode datastore (magasin de données).

Dans le second cas, les requêtes passent en cohérence forte. Par ailleurs, les transactions ne sont plus limitées à 25 groupes d'entités et les écritures dans un groupe d'entités à une par seconde.