Google Cloud Spanner : ce qu’il faut connaître avant de se lancer
Cloud Spanner conjugue la cohérence des données à la scalabilité horizontale. Une architecture peu commune qu’il convient de connaître. En voici 4 briques essentielles.
Avec le cloud, les systèmes de gestion de bases de données connaissent actuellement une période de modernisation. Google Cloud Spanner est justement l'une de ces SGBD. Cette base de données a été pensée pour les applications qui nécessitent une plateforme transactionnelle en ligne qui soit massivement évolutive et distribuée dans le monde entier, mais sans rogner sur la cohérence des données.
Depuis plus de dix ans, on sait adapter horizontalement la couche logique d’une application Web. Toutefois, la cohérence des données a toujours été un problème majeur lorsqu’il s’agit de dimensionner horizontalement une base de données. Les clusters relationnels exigent en effet que tous les nœuds répliqués reçoivent une copie des modifications des données avant de renvoyer une réponse à l'application. L'ajout de nœuds supplémentaires allonge ainsi les temps de transaction. La disponibilité du système dépend de tous les nœuds.
Les origines de Google Cloud Spanner
Google décrit Cloud Spanner comme « le seul service de base de données pour les entreprises, distribué à l'échelle mondiale, fortement cohérent et conçu pour le cloud, qui combine spécifiquement les avantages d'une structure de base de données relationnelle avec une dimension horizontale non relationnelle ». La firme de Mountain View a développé son système comme data store de remplacement pour ses applications Google Adwords et Google Play. Le groupe utilisait en effet MySQL et a constaté que celle-ci ne pouvait pas gérer un surplus d’activités de ses applications, en pleine croissance dans le monde.
Google s’est d’abord penché sur le cas NoSQL. Bien que le NoSQL puisse offrir une évolutivité horizontale, cette architecture n'a pas été en mesure de fournir le niveau élevé de cohérence requis par Google. Un projet a alors été initié en 2007 pour créer une base de données distribuée à l'échelle mondiale et qui assurerait à la fois la cohérence des données et une extensibilité horizontale massive. En 2012, Mountain View a publié son premier rapport de recherche sur Spanner. En mai 2017, Google Cloud Spanner est apparu comme service sur Google Cloud.
L’architecture de Cloud Spanner
Cloud Spanner ne fonctionne pas sur Internet, mais sur le réseau privé à haut débit que Google a tissé dans le monde. Quand un administrateur crée une instance, il choisit le nombre de nœuds et configure l'environnement comme un système à une ou plusieurs régions. Cloud Spanner configure automatiquement trois répliques en lecture/écriture par noeud pour chaque région, afin d'assurer la redondance des données.
Parce que Cloud Spanner est un système hybride relationnel/NoSQL développé dans un but spécifique, la courbe d'apprentissage pour bien comprendre le produit est notable. Si la solution associe certains des avantages des deux architectures, Cloud Spanner offre pourtant ses propres fonctionnalités uniques :
- Schéma relationnel : Google Cloud Spanner utilise des définitions de schémas relationnels pour stocker logiquement les données. Mais pour ceux habitués à ce principe, ainsi qu’à la large palette d’options, ils trouveront Cloud Spanner quelque peu limité en termes de déclarations et de commandes de base. Cloud Spanner fournit quelques types de données et ne supporte pas les vues, les contraintes de validation ou les clés étrangères. Ces différences sont clés et justifient à elles seules un examen plus approfondi de la part de ceux qui veulent Cloud Spanner comme remplacement de la base de données relationnelle. Cloud Spanner fournit des index primaires et secondaires. Comme le NoSQL, Cloud Spanner utilise la clé primaire pour distribuer les données et les workloads aux différents nœuds. Par conséquent, la sélection est essentielle. Cloud Spanner stocke les index sous forme de tableaux et favorise le scan de données plutôt que la recherche d'index. Les développeurs doivent utiliser des astuces pour s'assurer que leur requête utilise bien l'index.
- Langage SQL : Bien que le langage SQL de Cloud Spanner soit assez complet, il n'offre pas le même niveau de fonctionnalités que les principaux éditeurs de SGBDR. Les options en matière de syntaxe permettent toute de même de créer des instructions SQL complexes pour visualiser et manipuler les données.
- Sauvegarde et restauration : Cloud Spanner ne fournit pas d'utilitaires pour la sauvegarde et la restauration. La base s'appuie sur son architecture pour garantir une disponibilité de 99,999 %. Cela ne protège toutefois pas les données contre les erreurs humaines ou la destruction accidentelle. L'absence d'utilitaires pour ces 2 opérations est un facteur important lors de l'évaluation de Cloud Spanner. La plateforme fournit certes des utilitaires d'importation et d'exportation, mais l'utilisation de fichiers d'exportation pour les opérations de restauration oblige les administrateurs à restaurer l'ensemble de la base de données.
- Sécurité : D’une manière générale, les bases de données relationnelles et NoSQL offrent un large éventail de permissions, plus ou moins granulaires, pour contrôler l'accès aux données. Pour les systèmes relationnels, l'accès aux données peut être limité à des tables et colonnes spécifiques. L'utilitaire de gestion des identités et des accès de Cloud Spanner permet de définir les permissions au niveau de la base de données uniquement.