Présentation de Bigtable
Bigtable est une table partiellement remplie qui peut être étendue à des milliards de lignes et des milliers de colonnes pour permettre de stocker plusieurs téraoctets, voire pétaoctets, de données. Bigtable est idéal pour stocker de grandes quantités de données à clé unique avec une faible latence. Il permet de lire et d'écrire à haut débit et à faible latence, et constitue une source de données idéale pour les opérations MapReduce.
Bigtable se présente aux applications via plusieurs bibliothèques clientes, dont une extension compatible avec la bibliothèque Apache HBase pour Java. Par conséquent, il s'intègre à l'écosystème Apache existant de logiciels open source pour le big data.
Les puissants serveurs backend de Bigtable offrent plusieurs avantages essentiels :
- Une évolutivité incroyable. Bigtable évolue proportionnellement au nombre de machines de votre cluster. Une installation HBase autogérée présente un goulot d'étranglement de conception qui limite les performances une fois qu'un certain seuil est atteint. Bigtable ne présente pas ce goulot d'étranglement. Vous pouvez donc faire évoluer votre cluster pour gérer davantage de lectures et d'écritures.
- Une administration simple. Bigtable gère les mises à niveau et les redémarrages de manière transparente, et maintient automatiquement une haute durabilité des données. Pour répliquer vos données, ajoutez un deuxième cluster à votre instance. La réplication démarre automatiquement. Plus besoin de gérer les instances répliquées ou les régions : il vous suffit de concevoir vos schémas de table, et Bigtable s'occupe du reste.
- Le redimensionnement de cluster sans temps d'arrêt. Vous pouvez augmenter la taille d'un cluster Bigtable pendant quelques heures pour gérer une charge importante, et la réduire ensuite, le tout sans aucun temps d'arrêt. Une fois que vous avez modifié la taille d'un cluster, il suffit en général de quelques minutes à Bigtable pour équilibrer les performances entre tous les nœuds de votre cluster.
- Stockage à plusieurs niveaux (preview). Vous pouvez stocker les données rarement consultées dans un niveau de stockage distinct et moins coûteux. Le stockage par niveaux vous permet de choisir le niveau de stockage qui correspond le mieux à vos besoins d'accès aux données Bigtable.
- Autoscaling Vous pouvez configurer Bigtable pour qu'il surveille en continu la capacité du processeur du cluster et ajuste automatiquement le nombre de nœuds d'un cluster si nécessaire.
- Essai sans frais. Vous pouvez explorer les fonctionnalités de Bigtable sans frais pendant 10 jours, avec la possibilité de prolonger l'essai sans frais jusqu'à 90 jours. Bigtable fournit une instance Bigtable d'essai sans frais avec jusqu'à 500 Go d'espace de stockage SSD et un cluster à un nœud, ce qui vous permet de tester les performances de votre application en exécutant des opérations de lecture et d'écriture à volume élevé sur vos tables Bigtable pour voir comment Bigtable gère les opérations avec des performances basées sur SSD.
- Niveau en mémoire (preview). Vous pouvez obtenir une latence de lecture inférieure à la milliseconde et un haut débit pour vos données critiques et urgentes. Le niveau en mémoire étend le disque dur SSD persistant existant de Bigtable et le stockage hiérarchisé économique avec le stockage de niveau en mémoire (RAM) pour fournir un classement des données intégré dans un service unifié.
Éditions Bigtable
Les éditions Bigtable sont un modèle de tarification qui offre différentes fonctionnalités à différents tarifs. Vous pouvez choisir entre l'édition Enterprise standard et l'édition Enterprise Plus premium. Pour en savoir plus, consultez la présentation des éditions.
Points forts
Bigtable est idéal pour les applications qui nécessitent un débit et une évolutivité élevés pour les données clé/valeur dont la valeur unitaire ne dépasse généralement pas 10 Mo. Bigtable est également un excellent moteur de stockage pour les opérations MapReduce par lot, le traitement et l'analyse par flux et les applications de machine learning (apprentissage automatique).
Bigtable permet de stocker et d'interroger tous les types de données suivants :
- Données de séries temporelles, comme les données d'utilisation de mémoire ou de processeur de plusieurs serveurs
- Données marketing, comme les données d'historique des achats ou de préférences client
- Données financières, comme les historiques de transactions, les cours d'actions et les taux de change
- Données de l'Internet des objets,comme les rapports sur l'utilisation des compteurs d'énergie et des appareils ménagers
- Données graphiques, par exemple sur la manière dont les utilisateurs sont connectés les uns aux autres
Modèle de stockage de Bigtable
Bigtable stocke les données dans des tables extrêmement évolutives, chacune constituant un mappage clé-valeur trié. Une table est composée de lignes, chacune décrivant généralement une seule entité, et de colonnes contenant des valeurs individuelles pour chaque ligne. Une seule valeur est indexée dans chaque ligne. Cette valeur est appelée clé de ligne. Les colonnes liées les unes aux autres sont généralement regroupées dans une famille de colonnes. Chaque colonne est identifiée par la combinaison d'une famille de colonnes et d'un qualificatif de colonne, c'est-à-dire un nom unique dans la famille de colonnes.
Chaque intersection d'une ligne et d'une colonne peut contenir plusieurs cellules. Chaque cellule contient une version unique des données de cette ligne et de cette colonne, avec un code temporel. Le stockage de plusieurs cellules dans une colonne permet d'enregistrer l'évolution des données stockées pour cette ligne et cette colonne au fil du temps. Les tables Bigtable sont creuses : une colonne qui n'est pas utilisée sur une ligne particulière n'occupe aucun espace.
Voici quelques points à noter dans cet exemple :
- Les colonnes ne peuvent pas être utilisées sur une ligne.
- Chaque cellule d'une ligne et d'une colonne données possède un horodatage unique (t).
Architecture de Bigtable
Le schéma suivant présente une version simplifiée de l'architecture globale des ressources de Bigtable :
Dans cet organigramme, toutes les requêtes client passent par un serveur frontal avant d'être envoyées à un nœud Bigtable (dans l'article original Bigtable, ces nœuds sont appelés "serveurs de tablet"). Les nœuds sont organisés en un cluster Bigtable, qui appartient à une instance Bigtable, un conteneur pour le cluster.
Chaque nœud du cluster gère un sous-ensemble des requêtes adressées au cluster. En ajoutant des nœuds à un cluster, vous pouvez augmenter le nombre de requêtes simultanées qu'il peut gérer. L'ajout de nœuds augmente également le débit maximal pour le cluster. Si vous activez la réplication en ajoutant des clusters supplémentaires, vous pouvez également envoyer différents types de trafic à différents clusters. Il est alors possible de basculer vers un autre cluster si un cluster devient indisponible.
Afin de faciliter l'équilibrage de la charge de travail des requêtes, une table Bigtable est segmentée en blocs de lignes adjacentes, appelés tablets (les tablets sont semblables à des régions HBase). Ces tablets sont stockés sur Colossus, un système de fichiers développé par Google, au format SSTable. Une table SSTable est un mappage immuable, ordonné et persistant des clés et des valeurs, sous forme de chaînes d'octets arbitraires. Chaque tablette est associée à un nœud Bigtable spécifique. En plus des fichiers SSTable, toutes les écritures sont stockées dans le journal partagé de Colossus dès qu'elles sont confirmées par Bigtable, ce qui améliore la durabilité.
Il est important de noter que les données ne sont jamais stockées dans les nœuds Bigtable proprement dits : chacun possède des pointeurs vers un ensemble de tablets stockés sur Colossus. Résultat :
- Le rééquilibrage des tablets entre les nœuds s'effectue rapidement, car les données réelles ne sont pas copiées. Bigtable met à jour les pointeurs de chaque nœud.
- La reprise après l'échec d'un nœud Bigtable est rapide, car seules les métadonnées doivent être migrées vers le nœud de remplacement.
- En cas d'échec d'un nœud Bigtable, aucune donnée n'est perdue.
Pour en savoir plus sur l'utilisation de ces composants fondamentaux, consultez Instances, clusters et nœuds. Pour en savoir plus sur l'interaction avec vos données dans ces niveaux, consultez Accéder aux données.
Équilibrage de charge
Chaque zone Bigtable est gérée par un processus principal qui équilibre la charge de travail et le volume de données au sein des clusters. Ce processus divise par deux les tablettes plus volumineuses ou plus sollicitées, et fusionne les tablettes moins sollicitées ou plus petites, en les redistribuant entre les nœuds si nécessaire. Si un tablet donné reçoit un pic de trafic, Bigtable le scinde en deux, puis déplace l'un des nouveaux tablets ainsi créé vers un autre nœud. En gérant automatiquement toutes les opérations de scission, de fusion et de rééquilibrage, Bigtable vous évite d'avoir à administrer manuellement vos tablets. La page Comprendre les performances de Bigtable permet d'entrer dans le détail du processus.
Pour obtenir les meilleurs résultats d'écriture avec Bigtable, il est important de répartir les écritures le plus uniformément possible entre les nœuds. Pour ce faire, vous pouvez utiliser des clés de ligne qui ne suivent pas un ordre prévisible. Par exemple, les noms d'utilisateur sont généralement répartis plus ou moins uniformément entre chaque lettre de l'alphabet. Par conséquent, le fait d'inclure un nom d'utilisateur au début de la clé de ligne tendra à entraîner une répartition uniforme des écritures.
De même, il sera beaucoup plus efficace de pouvoir lire plusieurs lignes à la fois en plaçant côte à côte des lignes associées. Par exemple, si vous stockez divers types de données météorologiques recueillies au fil du temps, votre clé de ligne peut indiquer le lieu où elles ont été collectées, suivi d'un horodatage (par exemple, WashingtonDC#201803061617). Ce type de clé de ligne regroupera toutes les données d'un lieu dans une plage de lignes contiguës. Pour les autres lieux, la ligne commencera par un identifiant différent. Par conséquent, si les données sont collectées au même rythme pour plusieurs lieux, les écritures seront toujours réparties uniformément entre les tablets.
Consultez la section Choisir une clé de ligne pour savoir comment choisir une clé de ligne adaptée à vos données.
Calcul
Bigtable propose différentes options de calcul en fonction des exigences de votre charge de travail. Par défaut, Bigtable utilise des nœuds de cluster pour le stockage et le calcul.
Pour les jobs de lecture à haut débit, vous pouvez utiliser Data Boost pour Bigtable pour le calcul. Data Boost vous permet d'envoyer des jobs de lecture et des requêtes volumineux à l'aide de l'informatique sans serveur, tandis que votre application principale continue d'utiliser des nœuds de cluster pour le calcul. Enterprise Plus étend les capacités de ces jobs pour inclure la compatibilité avec SQL, ainsi que l'accès aux données des disques durs et du stockage à plusieurs niveaux. Pour en savoir plus, consultez la présentation de Bigtable Data Boost.
Pour les charges de travail spécialisées qui nécessitent une latence de lecture ponctuelle inférieure à la milliseconde et un débit élevé, vous pouvez activer le niveau en mémoire pour vos nœuds Bigtable.
Types de données acceptés
Dans la plupart des cas, Bigtable traite toutes les données en tant que chaînes d'octets brutes. Le seul cas où Bigtable essaie de déterminer le type de données est celui où la cible doit être un entier de 64 bits codé comme une valeur de 8 octets en mode big-endian dans une opération d'incrémentation.
Utilisation de la mémoire et du disque
Les sections suivantes décrivent la manière dont plusieurs composants de Bigtable influent sur l'espace de mémoire et de disque qu'utilise votre instance.
Colonnes inutilisées
Les colonnes qui ne sont pas utilisées dans une ligne Bigtable n'occupent pas d'espace dans cette ligne. Chaque ligne est essentiellement une collection d'entrées clé/valeur, où la clé est une combinaison de la famille de colonnes, du qualificatif de colonne et du code temporel. Si une ligne n'inclut pas de valeur pour une colonne spécifique, l'entrée clé-valeur n'est pas présente.
Qualificatifs de colonne
Les qualificatifs de colonne occupent de l'espace dans une ligne, car chaque qualificatif de colonne utilisé dans une ligne est stocké dans celle-ci. Par conséquent, utiliser des qualificatifs de colonne comme données est souvent efficace.
Pour en savoir plus sur les qualificatifs de colonne, consultez Colonnes.
Compactages
Bigtable réécrit régulièrement vos tables afin de supprimer les entrées supprimées, de réorganiser vos données de manière à améliorer l'efficacité des lectures et des écritures, et de déplacer les données dans le cadre du stockage hiérarchisé. Ce processus est appelé compactage. Il n'existe aucun paramètre de configuration pour les compactions. Bigtable compacte vos données automatiquement. En moyenne, il faut une semaine pour qu'un compactage se termine et exécute des tâches telles que la suppression de données ou le déplacement de données vers un stockage hiérarchisé.Le compactage effectue les suppressions identifiées par le processus de récupération de mémoire. Le compactage ne lance pas la compression des données. Bigtable compresse automatiquement les blocs de données lorsqu'ils sont conservés dans l'espace de stockage. Pour en savoir plus, consultez Compression des données et Nettoyage de la mémoire. Pour en savoir plus sur les compactions dans le stockage par niveaux, consultez Fonctionnement du stockage par niveaux.
Mutations et suppressions
Les mutations, ou modifications apportées à une ligne, occupent davantage d'espace de stockage, car Bigtable les enregistre de manière séquentielle et ne les compacte que périodiquement. Lorsque Bigtable compacte une table, il supprime les valeurs qui ne sont plus nécessaires. Si vous modifiez la valeur d'une cellule, la valeur d'origine et la nouvelle seront stockées sur le disque pendant un certain temps, jusqu'à ce que les données soient compactées.
Les suppressions occupent également un espace de stockage supplémentaire, du moins à court terme, car il s'agit en fait d'un type de mutation particulier. Tant que la table n'est pas compactée, la suppression des données utilise davantage d'espace de stockage, au lieu d'en libérer.
Compression des données
Bigtable compresse automatiquement vos données à l'aide d'un algorithme intelligent lorsque les données sont conservées sur le disque. Vous ne pouvez pas configurer les paramètres de compression de votre table.
Compression et compactage
La compression des données est distincte du compactage des tables :
La compression s'effectue automatiquement lorsque les données sont écrites et conservées dans l'espace de stockage. La compression réduit la taille physique en octets des blocs de données sur le disque. Les métriques d'utilisation de l'espace de stockage et les frais de facturation reflètent cette taille compressée plutôt que la taille des données logiques non compressées.
Le compactage est un processus de maintenance asynchrone en arrière-plan. Le compactage fusionne régulièrement les fichiers de stockage et supprime définitivement les données supprimées et arrivées à expiration. Le compactage ne lance pas la compression des données. Vos données sont déjà stockées sous forme compressée.
Il est utile de savoir comment stocker les données pour qu'elles puissent être compressées efficacement :
Les données aléatoires ne peuvent pas être compressées aussi efficacement que les données structurées. Un texte, comme celui que vous lisez en ce moment, est un exemple de données répétitives.
La compression donne de meilleurs résultats lorsque des valeurs identiques sont proches les unes des autres, soit sur la même ligne, soit sur des lignes adjacentes. Si vous organisez vos clés de ligne de sorte que les lignes contenant des fragments de données identiques soient adjacentes, les données peuvent être compressées efficacement.
Bigtable compresse les valeurs d'une taille maximale de 1 Mio. Si vous stockez des valeurs supérieures à 1 Mio, compressez-les avant de les écrire dans Bigtable afin d'économiser des cycles de processeur, de la mémoire du serveur et de la bande passante réseau.
Durabilité des données
Lorsque vous utilisez Bigtable, vos données sont stockées sur Colossus, un système de fichiers hautement durable développé par Google, à l'aide de périphériques de stockage situés dans les centres de données deGoogle Cloud. Vous n'avez pas besoin d'exécuter un cluster HDFS ni un autre système de fichiers pour utiliser Bigtable. En coulisse, Colossus utilise des méthodes de stockage exclusives pour assurer une durabilité des données supérieure à celle de la réplication HDFS standard à trois voies.
La durabilité est encore améliorée lorsque vous utilisez la réplication. Bigtable conserve une copie distincte de vos données dans l'emplacement que vous sélectionnez pour chaque cluster d'une instance répliquée.
Modèle de cohérence
Les instances Bigtable à cluster unique fournissent une cohérence forte. Par défaut, les instances disposant de plusieurs clusters fournissent une cohérence à terme, mais pour certains cas d'utilisation, elles peuvent être configurées pour fournir une cohérence écriture-lecture ou une cohérence forte, en fonction des paramètres de la charge de travail et du profil d'application.
Sécurité
L'accès à vos tables Bigtable est contrôlé par votre projet Google Cloudet les rôles Identity and Access Management (IAM) que vous attribuez aux utilisateurs. Par exemple, vous pouvez attribuer des rôles IAM qui empêchent certains utilisateurs de lire des tables, d'écrire dans des tables ou de créer des instances. Si un utilisateur n'a pas accès à votre projet ou ne dispose pas du rôle IAM avec les autorisations appropriées pour Bigtable, il ne peut accéder à aucune de vos tables.
Vous pouvez également contrôler l'accès aux données d'une table en créant une vue autorisée de la table qui représente un sous-ensemble des données de la table. Vous pouvez ensuite accorder des autorisations au niveau de la vue autorisée à certains utilisateurs sans leur accorder d'autorisations au niveau de la table. Vous pouvez gérer la sécurité au niveau du projet, de l'instance, de la table ou de la vue autorisée. Bigtable n'est pas compatible avec les restrictions de sécurité au niveau des lignes, des colonnes ou des cellules.Chiffrement
Par défaut, toutes les données stockées dans Google Cloud, y compris les données des tables Bigtable, sont chiffrées au repos à l'aide des mêmes systèmes de gestion de clés renforcés que ceux que nous utilisons pour nos propres données chiffrées.
Si vous souhaitez mieux contrôler les clés utilisées pour chiffrer vos données Bigtable au repos, vous pouvez utiliser des clés de chiffrement gérées par le client (CMEK).
Sauvegardes
Les sauvegardes Bigtable vous permettent d'enregistrer une copie du schéma et des données d'une table, puis de restaurer vers une nouvelle table ultérieurement. Vous pouvez restaurer les sauvegardes et les copies de sauvegarde sur une nouvelle table dans toute région ou tout projet dans lequel vous disposez d'une instance Bigtable, quel que soit l'emplacement de la table source.
Capture des données modifiées
Bigtable fournit la capture de données modifiées (CDC) sous la forme de flux de modifications. Les flux de modifications vous permettent de capturer et de diffuser les modifications apportées aux données d'une table au fur et à mesure qu'elles se produisent. Vous pouvez lire un flux de modifications à l'aide d'un service tel que Dataflow pour prendre en charge des cas d'utilisation tels que l'analyse de données, les audits, les exigences d'archivage et le déclenchement de la logique d'application en aval. Pour en savoir plus, consultez la présentation des flux de modifications.
Routage de requêtes avec des profils d'application
Les règles de routage du profil d'application vous permettent de contrôler les clusters qui gèrent les requêtes entrantes de vos applications. Bigtable propose les types de profils d'application suivants en fonction du modèle de calcul utilisé :
Profils d'application standards : utilisent des nœuds de cluster provisionnés pour traiter les requêtes. Elles sont compatibles avec les règles de routage suivantes :
Routage vers un cluster unique : envoie toutes les requêtes vers un seul cluster.
Vous ne pouvez activer le niveau en mémoire (preview) que pour les profils d'application qui utilisent le routage vers un cluster unique. Lorsque vous configurez un profil d'application pour utiliser le niveau en mémoire sur un cluster, tout le trafic de lecture ponctuelle éligible utilise le niveau en mémoire.
Routage multicluster vers n'importe quel cluster : envoie des requêtes au cluster disponible le plus proche dans une instance, soit parmi tous les clusters, soit parmi un groupe de clusters spécifié.
Profils d'application Data Boost : utilisent l'informatique sans serveur au lieu des nœuds du cluster pour isoler les jobs de lecture à haut débit du trafic de votre application principale. Ces profils sont limités à une règle de routage à cluster unique.
Autres options pour le stockage et les bases de données
Bigtable n'est pas une base de données relationnelle traditionnelle. Bien qu'il soit compatible avec les requêtes SQL, certains cas d'utilisation peuvent être mieux adaptés à une autre option de base de données.
- Si vous avez besoin de traiter des requêtes interactives sur un système de traitement analytique en ligne (OLAP), envisagez plutôt BigQuery.
Pour plus d'informations sur les autres options de bases de données, consultez la présentation des services de base de données. Google Cloud propose également différentes options de stockage.
Étapes suivantes
- Essayez un guide de démarrage rapide Bigtable à l'aide de la CLI
cbt, l'outil de ligne de commande pour Bigtable. - En savoir plus sur les instances, clusters et nœuds Bigtable
- En savoir plus sur le stockage par niveau de Bigtable.
- En savoir plus sur les éditions Bigtable
- Découvrez le niveau en mémoire de Bigtable.
- Apprenez à créer une instance Bigtable.
- Découvrez comment migrer vers Bigtable.
- Découvrez les bibliothèques clientes de Cloud Bigtable.
- Lisez l'article OSDI original sur Bigtable.