Spanner pour les charges de travail non relationnelles

Spanner est un système de base de données hautement fiable et entièrement géré. Bien que Spanner a évolué pour devenir un système de gestion de bases de données relationnelles, il tire sa racine d'un système de stockage non relationnel à base de clés-valeurs, et conserve les caractéristiques fondamentales d'un tel système. Ainsi, vous pouvez utiliser Spanner en tant que base de données non relationnelle (NoSQL) et migrer d'autres bases de données non relationnelles vers Spanner. Ce document vous aide à déterminer si Spanner est adapté à vos charges de travail non relationnelles.

Les bases de données NoSQL étaient utilisées à une époque où les bases de données relationnelles traditionnelles manquaient de fonctionnalités pour gérer les applications émergentes nécessitant une évolutivité, une disponibilité et une élasticité de calcul élevées. Pour ce faire, elles ont sacrifié plusieurs fonctionnalités souvent essentielles à la gestion des données, telles que les transactions, la cohérence et les requêtes ad hoc. Spanner a été conçu pour prendre en charge la nature exigeante des applications à disponibilité élevée et des fonctionnalités fournies par les bases de données relationnelles traditionnelles, afin que les clients puissent tirer parti de ces deux ensembles de fonctionnalités.

Avec Spanner, vous pouvez commencer avec des besoins de stockage simples et non relationnels, puis faire évoluer votre application en fonction des besoins.

Comment Spanner répond aux critères des bases de données NoSQL

Spanner répond aux critères clés suivants pour vos charges de travail NoSQL.

Évolutivité et performances

Les bases de données NoSQL ont gagné en popularité en raison de leur capacité à effectuer un scaling horizontal des lectures et des écritures. Avec Spanner, vous n'avez pas à vous soucier de l'évolutivité ni des performances. Les bases de données Spanner stylisées par clé-valeur peuvent évoluer horizontalement pour accepter des centaines de millions de requêtes de lecture ou d'écriture par seconde et de pétaoctets de données. La capacité de calcul de Spanner s'adapte à la charge de travail, pour garantir un profil cohérent à faible latence, même lorsque votre application évolue de plusieurs ordres de grandeur.

API NoSQL

Les bases de données relationnelles traditionnelles sont généralement accessibles à l'aide de SQL, qui s'accompagne d'une courbe d'apprentissage pour les développeurs qui ne connaissent pas les bases de données relationnelles. Les clients de ces bases de données s'appuient également généralement sur des connexions persistantes et requièrent le déploiement d'une infrastructure de pooling de connexions pour pouvoir évoluer. En revanche, l'API Spanner repose sur un modèle de requêtes et de réponses gRPC/HTTP2 qui gère automatiquement les échecs de connexion. Spanner fournit des API de lecture/écriture NoSQL simples, natives et efficaces, qui ne nécessitent pas de connaissances en SQL. En outre, les clients Spanner ne nécessitent aucun regroupement de connexions pour effectuer le scaling.

Entièrement géré

Les bases de données NoSQL sont perçues comme étant plus faciles à gérer. En tant que service entièrement géré, Spanner n'entraîne aucune charge opérationnelle sur les clients. Spanner effectue des mises à jour logicielles et matérielles sans temps d'arrêt en arrière-plan, tout en maintenant la rétrocompatibilité. L'API et la sémantique Spanner sont les mêmes que si les opérations étaient effectuées sur une base de données à machine unique et ne nécessitent pas de connaissance de l'architecture interne de Spanner. Spanner s'exécute sur des déploiements allant du 1/10e du nœud à des dizaines de milliers de nœuds, en effectuant un scaling automatique et réactif à l'aide d'un autoscaler géré.

Données semi-structurées

Spanner accepte les types de données flexibles tels que JSON et BYTES, qui sont utilisés pour stocker des données semi-structurées ou non structurées. Comme pour les autres bases de données NoSQL, vous pouvez utiliser ces types de données pour éviter de spécifier à l'avance tout votre schéma de stockage.

Contrôle des accès

Comme les autres bases de données NoSQL, Spanner est compatible avec le contrôle des accès basé sur IAM. Les administrateurs peuvent configurer et administrer des stratégies de contrôle des accès sans stocker les noms d'utilisateur et les mots de passe dans la base de données.

Différences entre Spanner et les bases de données NoSQL traditionnelles

Spanner offre les avantages suivants par rapport aux bases de données NoSQL traditionnelles.

Transactions

À mesure que les applications gagnent en complexité, elles doivent souvent effectuer des opérations transactionnelles sur plusieurs lignes et plusieurs tables sur la base de données. Avec Spanner, vous n'avez pas besoin de migrer vers un datastore transactionnel lorsque votre base de données se développe, car Spanner est entièrement compatible avec les transactions en lecture/écriture. En tant que base de données conforme à la norme ACID, Spanner maintient la cohérence transactionnelle de votre base de données à tout moment, quelle que soit son échelle.

Modélisation des données

La conception de schémas dans les bases de données NoSQL peut ne pas être naturelle en raison de la nécessité de regrouper toutes les données dans une seule table et de forcer la dénormalisation des données en raison de l'incapacité à effectuer des jointures. Avec Spanner, vous pouvez spécifier votre schéma sans passer par une seule table ni dénormalisation. Pour optimiser les modèles d'accès concernant plusieurs tables, vous pouvez utiliser l'entrelacement de tables. Vous pouvez également effectuer des jointures entre plusieurs tables.

Requêtes ponctuelles

Même si vous utilisez principalement l'API NoSQL, il est souvent utile d'exécuter des requêtes ad hoc à des fins de débogage ou d'analyse. Spanner respecte le langage de requête standard SQL. Vous pouvez utiliser la hiérarchisation des requêtes pour isoler le trafic ad hoc de faible priorité du trafic en ligne, ou utiliser Spanner Data Boost pour exécuter des requêtes analytiques sur des ressources de calcul entièrement isolées du trafic de base de données en ligne.

Index secondaires fortement cohérents

Les applications ont souvent besoin d'index secondaires pour permettre les recherches à faible latence. Les bases de données NoSQL types offrent des index secondaires cohérents à terme ou imposent des contraintes sur la croissance d'un index. Cela peut compliquer la logique d'application qui doit contourner ces contraintes. Spanner propose des index secondaires fortement cohérents à grande échelle sans contraintes de taille. Cela vous permet de vous concentrer sur la logique de votre application sans vous soucier des problèmes de cohérence.

Spanner est-il adapté à vos besoins en matière de bases de données NoSQL ?

Spanner est un système de stockage de données flexible compatible avec les cas d'utilisation SQL et NoSQL. Bien que certaines applications commencent par des besoins de stockage simples, à mesure que leur complexité augmente, elles ont besoin de fonctionnalités supplémentaires qui ne sont généralement pas proposées par les bases de données NoSQL, telles que des transactions, des index secondaires cohérents et un langage de requête flexible. Avec Spanner, vous n'êtes pas limité par ces limites et pouvez développer votre application si nécessaire.

La plupart des charges de travail non relationnelles conviennent parfaitement à Spanner. Spanner offre non seulement une API NoSQL de lecture/écriture NoSQL simple, mais aussi une haute disponibilité, une haute fiabilité, une faible latence, une élasticité de calcul et une évolutivité extrême. Spanner vous permet de consolider diverses charges de travail sur une seule plate-forme flexible.