Valori aggregati al momento della scrittura
Se vuoi aggregare i dati in Bigtable durante la scrittura, puoi utilizzare gli aggregati. Gli aggregati sono celle di una tabella Bigtable che aggregano i valori delle celle man mano che i dati vengono scritti. Quando aggiungi un nuovo valore, una funzione di aggregazione unisce il valore con il valore aggregato già presente nella cella. Altri database fanno riferimento a funzionalità simili a contatori o contatori distribuiti.
Il tipo di aggregazione offerto da Bigtable è somma. Quando aggiungi un valore a una cella di somma aggregata, il valore della cella viene sostituito con la somma del nuovo valore aggiunto e del valore della cella corrente.
Durante l'anteprima, puoi lavorare con i dati aggregati utilizzando l'interfaccia a riga di comando cbt
e le librerie client di Bigtable per C++, Go e Java.
Questo documento fornisce una panoramica dei dati aggregati, mostra come creare una famiglia di colonne aggregate e fornisce esempi che mostrano come aggiungere un valore a una cella aggregata. Prima di leggere questo documento, dovresti acquisire familiarità con la panoramica di Bigtable e le Scritture.
Quando utilizzare i dati aggregati
I dati aggregati di Bigtable sono utili per le situazioni in cui sono importanti i dati di un'entità in forma aggregata e non come singoli punti dati. Se esegui la migrazione a Bigtable da database come Apache Cassandra o Redis, puoi utilizzare i dati aggregati di Bigtable in posizioni in cui in precedenza facevi affidamento sui contatori in questi sistemi.
Intervalli di tempo
Puoi utilizzare i bucket di tempo per ottenere valori aggregati per un periodo di tempo, ad esempio un'ora, un giorno o una settimana. Anziché aggregare i dati prima o dopo la scrittura nella tabella, aggiungi nuovi valori per aggregare le celle della tabella.
Ad esempio, se gestisci un servizio che aiuta gli enti di beneficenza a raccogliere fondi, potresti voler conoscere l'importo delle donazioni online giornaliere per ogni campagna, ma non è necessario conoscere l'orario esatto di ogni donazione o l'importo orario. Nella
tabella, le chiavi di riga rappresentano gli ID degli enti di beneficenza e crei una famiglia
di colonne aggregata denominata donations
. I qualificatori di colonna nella riga sono ID campagna.
Ogni importo di donazione ricevuto per una campagna in un determinato giorno viene aggiunto alla somma nella cella aggregata della colonna per il giorno in questione. Ogni richiesta di aggiunta della cella utilizza un timestamp troncato all'inizio della giornata, in modo che in effetti ogni richiesta abbia lo stesso timestamp. Il troncamento dei timestamp assicura che tutte le donazioni di quel giorno vengano aggiunte alla stessa cella. Il giorno successivo, tutte le tue richieste vengono inserite in una nuova cella, utilizzando timestamp troncati alla nuova data, e questo pattern continua.
A seconda del tuo caso d'uso, potresti scegliere di creare nuove colonne per i nuovi aggregati. Per ulteriori informazioni sui bucket temporali, consulta Progettazione dello schema per i dati delle serie temporali.
Semplificazione dei flussi di lavoro
Gli aggregati ti consentono di aggregare i dati nella tabella Bigtable senza dover utilizzare ETL o software di elaborazione dei flussi di dati per aggregarli prima o dopo averli scritti in Bigtable. Ad esempio, se l'applicazione aveva pubblicato in precedenza messaggi in Pub/Sub e successivamente utilizzava Dataflow per leggere i messaggi e aggregarli prima di scriverli in Bigtable, puoi inviarli direttamente per aggregare le celle in Bigtable.
Famiglie di colonne aggregate
Per creare e aggiornare le celle aggregate, nella tabella devono essere presenti una o più famiglie di colonne aggregate, ovvero famiglie di colonne che contengono solo celle aggregate. Puoi crearle quando crei una tabella oppure aggiungere una famiglia di colonne aggregata a una tabella già in uso. Quando crei la famiglia di colonne, devi specificare il tipo di aggregazione, ad esempio la somma.
Non puoi convertire una famiglia di colonne contenente dati non aggregati in una famiglia di colonne aggregata. Le colonne nelle famiglie di colonne aggregate non possono contenere celle non aggregate, mentre le famiglie di colonne standard non possono contenere celle aggregate.
Per creare una nuova tabella con una famiglia di colonne aggregate, consulta Creare una tabella. Per aggiungere una famiglia di colonne aggregate a una tabella, consulta Aggiungere famiglie di colonne.
Tipi di aggregazione
Bigtable supporta il tipo di aggregazione sum
. Il tipo di input supportato per le somme è Int64
.
Timestamp
Una cella aggregata è definita da chiave di riga, famiglia di colonne, qualificatore di colonna e timestamp. Utilizzerai lo stesso timestamp ogni volta che aggiungi dati alla cella. Se invii un valore alla stessa chiave di riga, alla stessa famiglia di colonne e allo stesso qualificatore di colonna, ma con un timestamp diverso, viene creata una nuova cella aggregata nella colonna.
Una richiesta di aggiunta inviata a una cella aggregata deve includere un timestamp.
Tipo input
Il tipo di input del valore nella richiesta di aggiunta deve corrispondere al tipo di input con cui viene creata la famiglia di colonne. Ad esempio, se invii un valore stringa a una famiglia di colonne configurata per Int64
, la richiesta viene rifiutata.
AddToCell
Una richiesta di aggiunta invia una mutazione AddToCell
nell'API Bigtable Data. Al contrario, una richiesta di scrittura non aggregata invia una mutazione SetCell
. Per ulteriori informazioni, consulta la documentazione sull'API di dati.
Le operazioni AddToCell
sono soggette agli stessi
limiti delle operazioni
delle altre mutazioni della tabella.
In una tabella replicata, una cella aggregata converge sullo stesso valore totale in
tutti i cluster entro l'attuale ritardo di replica. Il valore totale è l'aggregazione di tutte le mutazioni AddToCell
inviate a quella cella in tutti i cluster dall'ultima operazione di eliminazione o dalla creazione della cella.
Aggiungi esempi di richieste
I seguenti esempi mostrano come aggiungere un valore a una cella aggregata. Gli
esempi si aggiungono a una somma in una famiglia di colonne che prevede il tipo di input Int64
.
cbt
cbt addtocell TABLE_ID ROW_KEY
FAMILY_NAME:COLUMN_QUALIFER=VALUE@TIMESTAMP
Sostituisci quanto segue:
TABLE_ID
: l'identificatore permanente della tabellaROW_KEY
: la chiave di rigaFAMILY_NAME
: il nome della famiglia di colonne aggregateCOLUMN_QUALIFIER
: un identificatore per la colonnaVALUE
: il valore da aggiungere alla cellaTIMESTAMP
: un timestamp Unix in microsecondi, come1710868850000000
Esempio:
cbt addtocell mobile-data device-1 updates:week12=100@1710868850000000
Go
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.
Per eseguire l'autenticazione in Bigtable, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Java
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.
Per eseguire l'autenticazione in Bigtable, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Passaggi successivi
- Rivedi i concetti relativi alla progettazione dello schema.
- Scopri come utilizzare una Cloud Function per accedere ai dati Bigtable.