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 ait évolué pour devenir un système de gestion de bases de données relationnelles, il a ses origines en tant que système de stockage non relationnel de clés-valeurs et conserve les caractéristiques fondamentales d'un tel système. Vous pouvez donc utiliser Spanner comme 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 ont été utilisées à une époque où les bases de données relationnelles traditionnelles ne disposaient pas de fonctionnalités permettant de prendre en charge les applications émergentes qui nécessitaient une évolutivité, une disponibilité et une élasticité de calcul élevées. Pour ce faire, ils 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 fois la nature exigeante des applications disponibilité élevée et les fonctionnalités fournies par les bases de données relationnelles traditionnelles, afin que les clients puissent profiter des 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 de vos 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é à faire évoluer les lectures et les écritures horizontalement. Avec Spanner, vous n'avez pas à vous soucier de la mise à l'échelle ni des performances. Les bases de données Spanner de type clé-valeur peuvent être évolutives horizontalement pour prendre en charge des centaines de millions de requêtes de lecture ou d'écriture par seconde et plusieurs pétaoctets de données. La capacité de calcul de Spanner évolue avec la charge de travail, tout en maintenant un profil cohérent et à 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, ce qui implique 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 généralement également sur des connexions persistantes et nécessitent le déploiement d'une infrastructure de pool de connexions pour évoluer. En revanche, l'API Spanner est basée 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 NoSQL en lecture-écriture simples, natives du langage et efficaces, qui ne nécessitent aucune connaissance en SQL. De plus, les clients Spanner ne nécessitent aucun regroupement de connexions pour évoluer.

Entièrement géré

L'un des principaux avantages des bases de données NoSQL est qu'elles sont perçues comme plus faciles à gérer. Comme il s'agit d'un service entièrement géré, Spanner ne représente aucune charge opérationnelle pour les clients. Spanner effectue des mises à jour logicielles et matérielles en arrière-plan sans temps d'arrêt, tout en conservant la rétrocompatibilité. L'API et la sémantique de Spanner sont les mêmes que si les opérations étaient effectuées sur une seule base de données de machine et ne nécessitent pas de connaissances sur l'architecture interne de Spanner. Spanner s'exécute sur des déploiements allant d'un dixième de nœud à des dizaines de milliers de nœuds, en effectuant un scaling automatique et réactif avec un autoscaler géré.

Données semi-structurées

Spanner prend en charge des 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 les autres bases de données NoSQL, vous pouvez utiliser ces types de données pour éviter de spécifier l'ensemble de votre schéma de stockage à l'avance.

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 règles de contrôle des accès sans stocker de noms d'utilisateur ni de 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 deviennent plus complexes, elles doivent souvent effectuer des opérations transactionnelles multilignes et multitables sur la base de données. Avec Spanner, vous n'avez pas besoin de migrer vers un datastore transactionnel à mesure que 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 en permanence, quelle que soit son échelle.

Modélisation des données

La conception de schémas dans les bases de données NoSQL peut être peu naturelle, car vous devez adapter toutes les données à une seule table et dénormaliser les données de manière forcée, car vous ne pouvez pas effectuer de jointures. Avec Spanner, vous pouvez spécifier votre schéma sans avoir recours à une seule table ni à une dénormalisation. Pour optimiser les modèles d'accès qui touchent plusieurs tables, vous pouvez utiliser l'entrelacement de tables. Vous pouvez également effectuer des jointures entre les tables.

Requêtes ad hoc

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 priorisation des requêtes pour isoler le trafic ad hoc à faible priorité du trafic en ligne ou utiliser Data Boost Spanner pour exécuter des requêtes analytiques sur des ressources de calcul complètement isolées du trafic de base de données en ligne.

Index secondaires fortement cohérents

Les applications nécessitent souvent des index secondaires pour prendre en charge les recherches à faible latence. Les bases de données NoSQL typiques proposent des index secondaires cohérents à terme ou imposent des contraintes sur la taille d'un index. Cela peut compliquer la logique de l'application, qui doit contourner ces contraintes. Spanner propose des index secondaires fortement cohérents à grande échelle, sans aucune contrainte de taille. Vous pouvez ainsi vous concentrer sur la logique de votre application et ne pas vous soucier des problèmes de cohérence.

Spanner est-il adapté à vos besoins en base de données NoSQL ?

Spanner est un système de stockage de données flexible qui prend en charge les cas d'utilisation SQL et NoSQL. Bien que certaines applications commencent avec des besoins de stockage simples, à mesure qu'elles gagnent en complexité, elles ont besoin de plus de fonctionnalités généralement non proposées par les bases de données NoSQL, telles que les transactions, les 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 selon vos besoins.

La plupart des charges de travail non relationnelles sont parfaitement adaptées à Spanner. Spanner offre non seulement une API de lecture-écriture NoSQL simple, mais il est également soutenu par une haute disponibilité, une fiabilité élevée, une faible latence, une élasticité de calcul et une évolutivité extrême. Spanner vous permet de regrouper différentes charges de travail sur une seule plate-forme flexible.