Valeurs agrégées au moment de l'écriture
Si vous souhaitez agréger vos données dans Bigtable au moment de l'écriture, vous pouvez utiliser des agrégations. Les agrégats sont des cellules de table Bigtable qui agrègent les valeurs des cellules à mesure que les données sont écrites. Lorsque vous ajoutez une valeur, une fonction d'agrégation fusionne la valeur avec la valeur agrégée déjà dans la cellule. D'autres bases de données font référence à des fonctionnalités similaires en tant que compteurs ou compteurs distribués.
Bigtable offre le type d'agrégation sum. Lorsque vous ajoutez une valeur à une cellule d'agrégation, la valeur de la cellule est remplacée par la somme de la valeur nouvellement ajoutée et de la valeur actuelle de la cellule.
Pendant la phase Preview, vous pouvez utiliser des agrégats à l'aide de la CLI cbt
et des bibliothèques clientes Bigtable pour C++, Go et Java.
Ce document présente les agrégations, montre comment créer une famille de colonnes d'agrégation et fournit des exemples montrant comment ajouter une valeur à une cellule d'agrégation. Avant de lire ce document, vous devez avoir pris connaissance de la présentation de Bigtable et des écritures.
Quand utiliser des agrégations ?
Les agrégations Bigtable sont utiles dans les cas où vous vous intéressez aux données d'une entité sous forme agrégée et non en tant que points de données individuels. Si vous migrez vers Bigtable à partir de bases de données telles qu'Apache Cassandra ou Redis, vous pouvez utiliser les agrégations Bigtable aux endroits où vous dépendiez auparavant de compteurs dans ces systèmes.
Buckets de temps
Vous pouvez utiliser des buckets de temps pour obtenir des valeurs agrégées pour une période donnée, telle qu'une heure, un jour ou une semaine. Au lieu d'agréger des données avant ou après leur écriture dans votre table, vous ajoutez des valeurs pour agréger les cellules de la table.
Par exemple, si vous gérez un service qui aide des associations à collecter des fonds, vous souhaiterez peut-être connaître le montant des dons en ligne quotidiens pour chaque campagne, mais vous n'avez pas besoin de connaître l'heure exacte de chaque don ni le montant par heure. Dans votre table, les clés de ligne représentent les ID d'organisations caritatives. Vous créez une famille de colonnes agrégée appelée donations
. Les qualificatifs de colonne de la ligne correspondent aux ID de campagne.
Lorsque chaque montant de don reçu pour un jour donné pour une campagne est reçu, il est ajouté à la somme dans la cellule d'agrégation de la colonne pour ce jour. Chaque requête d'ajout pour la cellule utilise un horodatage tronqué au début de la journée, de sorte qu'en réalité, chaque requête ait le même horodatage. La troncation des codes temporels garantit que tous les dons de ce jour sont ajoutés à la même cellule. Le jour suivant, toutes vos requêtes sont envoyées dans une nouvelle cellule, avec des horodatages qui sont tronqués à la nouvelle date, et ce schéma se poursuit.
En fonction de votre cas d'utilisation, vous pouvez choisir de créer des colonnes pour vos nouvelles données agrégées. Pour en savoir plus sur les buckets temporels, consultez la page Conception de schémas pour les données de séries temporelles.
Simplifier les workflows
Les agrégats vous permettent d'agréger vos données dans votre table Bigtable sans avoir à utiliser un ETL ou un logiciel de traitement par flux pour agréger vos données avant ou après leur écriture dans Bigtable. Par exemple, si votre application a déjà publié des messages sur Pub/Sub, puis utilisé Dataflow pour lire les messages et agréger les données avant de les écrire dans Bigtable, vous pouvez envoyer les données directement pour agréger des cellules dans Bigtable.
Agréger les familles de colonnes
Pour créer et mettre à jour des cellules agrégées, vous devez avoir une ou plusieurs familles de colonnes agrégées dans votre table (familles de colonnes ne contenant que des cellules agrégées). Vous pouvez les créer lorsque vous créez une table ou ajouter une famille de colonnes agrégées à une table déjà utilisée. Lorsque vous créez la famille de colonnes, vous spécifiez le type d'agrégation, par exemple somme.
Vous ne pouvez pas convertir une famille de colonnes contenant des données non agrégées en famille de colonnes agrégées. Les colonnes des familles de colonnes agrégées ne peuvent pas contenir de cellules non agrégées, et les familles de colonnes standards ne peuvent pas contenir de cellules agrégées.
Pour créer une table avec une famille de colonnes agrégée, consultez la section Créer une table. Pour ajouter une famille de colonnes agrégée à une table, consultez la section Ajouter des familles de colonnes.
Types d'agrégation
Bigtable accepte le type d'agrégation sum
. Le type d'entrée accepté pour les sommes est Int64
.
Horodatages
Une cellule agrégée est définie par une clé de ligne, une famille de colonnes, un qualificatif de colonne et un code temporel. Le même code temporel est utilisé chaque fois que vous ajoutez des données à la cellule. Si vous envoyez une valeur à la même clé de ligne, la même famille de colonnes et le même qualificatif de colonne, mais avec un horodatage différent, une cellule agrégée est créée dans la colonne.
Une demande d'ajout envoyée à une cellule d'agrégation doit inclure un horodatage.
Type d'entrée
Le type d'entrée de la valeur dans la requête d'ajout doit correspondre au type d'entrée avec lequel la famille de colonnes est créée. Par exemple, si vous envoyez une valeur de chaîne à une famille de colonnes configurée pour Int64
, la requête est rejetée.
AddToCell
Une requête d'ajout envoie une mutation AddToCell
dans l'API Bigtable Data. En revanche, une requête d'écriture non agrégée envoie une mutation SetCell
. Pour en savoir plus, consultez la documentation de référence de l'API de données.
Les opérations AddToCell
sont soumises aux mêmes limites d'opérations que les autres mutations de table.
Dans une table répliquée, une cellule agrégée converge sur la même valeur totale dans tous les clusters dans le délai de réplication actuel. La valeur totale correspond à l'agrégation de toutes les mutations AddToCell
envoyées à cette cellule dans tous les clusters depuis la dernière opération de suppression ou depuis la création de la cellule.
Ajouter des exemples de requêtes
Les exemples suivants vous montrent comment ajouter une valeur à une cellule d'agrégation. Ces exemples s'ajoutent à la somme d'une famille de colonnes qui attend le type d'entrée Int64
.
cbt
cbt addtocell TABLE_ID ROW_KEY
FAMILY_NAME:COLUMN_QUALIFER=VALUE@TIMESTAMP
Remplacez les éléments suivants :
TABLE_ID
: identifiant permanent de la table.ROW_KEY
: clé de ligneFAMILY_NAME
: nom de la famille de colonnes agrégéesCOLUMN_QUALIFIER
: identifiant de la colonneVALUE
: valeur à ajouter à la cellule.TIMESTAMP
: horodatage Unix en microsecondes, tel que1710868850000000
Exemple :
cbt addtocell mobile-data device-1 updates:week12=100@1710868850000000
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour Bigtable, consultez la page Bibliothèques clientes Bigtable.
Pour vous authentifier auprès de Bigtable, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Bigtable, consultez la page Bibliothèques clientes Bigtable.
Pour vous authentifier auprès de Bigtable, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez la page Configurer l'authentification pour les bibliothèques clientes.
Étapes suivantes
- Passer en revue les concepts liés à la conception de schémas
- Découvrez comment utiliser une fonction Cloud pour accéder aux données Bigtable.