NoSQL dans le cloud : bien comparer les offres du marché
AWS vs Google Cloud vs Microsoft Azure vs les offres d’éditeurs… cet article vous permet de vous y retrouver dans la jungle des services NoSQL dans le cloud.
L'émergence de services en ligne hautement scalables pour les réseaux sociaux, le streaming de contenu et l’eCommerce a considérablement modifié les exigences en matière d'infrastructure et d'architecture logicielle. Parmi ces transformations, le stockage des données mais aussi leur organisation et leur accès font partie des éléments qui ont été affectés en premier.
Les anciens systèmes de gestion de bases de données relationnelles (SGBDR), comme Oracle Database, ne sont pas adaptés aux applications Web qui nécessitent une infrastructure distribuée et évolutive (scale-out). Les bases de données NoSQL conviennent mieux aux architectures à couplage lâche, où données et code sont répartis sur des datacenters. Avec ses origines enracinées dans la communauté open source et le développement d’applications dites cloud-natives, les bases NoSQL ont naturellement séduit les fournisseurs de Iaas. Ces derniers ont alors décliné le concept donnant naissance à différents modèles.
Les avantages et les inconvénients
Logiquement, les avantages des bases NoSQL sont ceux inhérents aux applications et aux services Web. Ils diffèrent donc de ceux des bases de données relationnelles :
- La capacité de traiter une variété de types de données ;
- Des performances plus élevées et une latence plus faible ;
- Elles conviennent bien aux données non structurées, telles que le texte, les images, l'audio et la vidéo ;
- Elles conviennent mieux aux systèmes à couplage lâche dimensionnés horizontalement ;
- Elles sont bien adaptées aux séries chronologiques ou à d'autres types de données, telles que les logs, les données IoT et les flux de données, et ;
- Elles donnent accès à une grande variété d'implémentations open source qui sont moins chères à exploiter qu'un SGBDR sophistiqué.
Cependant, ces avantages ont un coût. Par exemple, les SGBDR garantissent une cohérence des données et une fiabilité plus immédiates grâce au modèle ACID : atomicité, cohérence, isolation et durabilité. Les bases de données NoSQL suivent le modèle BASE qui implique une disponibilité de base et une cohérence éventuelle (basic availability, soft state and eventual consistency). De plus, ces bases de données non relationnelles n'ont pas de mécanismes intégrés pour vérifier l'intégrité des données ; cela doit être fait par du code externe. Enfin, les requêtes SQL complexes ne sont généralement pas prises en charge.
NoSQL : les différentes catégories
NoSQL ne correspond pas à un type particulier de base de données mais plutôt comme à une catégorie qui comporte plusieurs variantes :
- Clé - valeur : Aussi connu sous le nom de table de hachage (hash table), ce paradigme de stockage organise les données en une séquence d'enregistrements indexés par une clé ou une valeur qui pointe vers un ou plusieurs objets ou enregistrements de données. Cela est similaire à un dictionnaire, en ce sens que chaque clé peut avoir un nombre différent de valeurs au lieu d'une longueur fixe.
- Cache in-memory : Ce type de base clé-valeur est conçu pour s'adapter entièrement à la RAM du système dans laquelle sont montées les données. Cela accélère les performances et réduit potentiellement les coûts. Il n’est en effet plus nécessaire de mettre à l'échelle une base de données dans sa totalité uniquement pour traiter une fonctionnalité ou un scénario particulier.
- Orientée documents : Bien qu'il s'agisse d'un sous-ensemble d'une base de données de clé - valeur, les valeurs d’une base documents suivent une structure hiérarchique prédéfinie qui intègre des métadonnées au contenu stocké. Les documents sont souvent encodés dans des formats de texte, tels que XML, YAML ou JSON, ou dans des variantes binaires, telles qu'un fichier Microsoft Office ou PDF.
- Search : Une base documents spécialisée dans laquelle les index de documents peuvent être shardés et distribués sur plusieurs nœuds pour fournir une forte scalabilité et accélérer la récupération de données.
- En colonnes : Cette base organise les données par colonnes plutôt que par lignes. Les colonnes sont regroupées en familles de données.
- Base de données graphes : Ce type de base de données supprime la structure commune ligne-colonne au profit d'une collection d'éléments et de leurs relations les uns avec les autres.
Comparaison des bases de données NoSQL
Le cloud étant devenu une option particulièrement convoitée pour le déploiement d'applications Web, AWS, Microsoft et Google Cloud ont donc développé des services et des offres NoSQL pour mieux s'adapter aux différents types de données et cas d'usage.
Chaque offre dispose de ces propres spécificités.
Comme l'indique ce tableau de comparaison, il existe plusieurs offres open source et commerciales pour chaque type de base de données NoSQL. Les options d’éditeurs (Tierces dans le tableau) possèdent des caractéristiques qui ne sont pas nécessairement présentes dans les offres cloud. Par exemple, MongoDB peut être configuré de manière à ce que les données répliquées soient immédiatement cohérentes en lecture au lieu d’éventuellement cohérentes.
Cependant, la principale différence réside dans le modèle de déploiement : managé chez soi - une infrastructure sur site ou en colocation - ou sous la forme de service cloud. Cela dépend de l’organisation interne de l’entreprise, si elle préfère gérer elle-même ses applications , disposer de capacités élevées de configuration ou si elle préfère un service cloud managé qui supprime les dépenses d'investissement initiales et les frais permanents liés à la gestion de l'infrastructure.