Valori aggregati al momento della scrittura
Se vuoi aggregare i dati in Bigtable in fase di scrittura, possono utilizzare aggregate. I dati aggregati sono celle delle tabelle Bigtable aggregare i valori delle celle quando i dati vengono scritti. Quando aggiungi un nuovo valore, funzione di aggregazione unisce il valore al valore aggregato già nella cella. Altri database fanno riferimento a funzionalità simili come i contatori o contatori distribuiti.
Durante l'anteprima, puoi lavorare con i dati aggregati utilizzando
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 e mostra come creare famiglia di colonne aggregata e fornisce esempi che mostrano come aggiungere un valore a una cella aggregata. Prima di leggere questo documento, dovresti conoscere gli argomenti Bigtable panoramica e Scritture di Google.
Quando utilizzare i dati aggregati
I dati aggregati di Bigtable sono utili nelle situazioni in cui dati per un'entità in forma aggregata e non come singoli punti dati. Se di Cloud Bigtable da database come Apache Cassandra Redis, puoi utilizzare i dati aggregati di Bigtable che in precedenza faceva affidamento sui contatori di questi sistemi.
Bucket di tempo
Puoi utilizzare i bucket di tempo per ottenere valori aggregati relativi a un periodo di tempo, ad esempio un'ora, un giorno o una settimana. Invece di aggregare i dati prima o dopo che sono stati scritti alla 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
vuoi conoscere la quantità di donazioni online al giorno per ogni campagna, ma
non occorre conoscere l'ora esatta di ogni donazione o l'importo per ora. Nella
della tabella, le chiavi di riga rappresentano gli ID ente di beneficenza e tu crei una colonna aggregata
donations
. I qualificatori di colonna nella riga sono gli ID campagna.
Man mano che viene ricevuta ogni donazione ricevuta in un determinato giorno per una campagna, viene aggiunto alla somma nella cella aggregata nella colonna del giorno in questione. Ogni aggiunta per la cella utilizza un timestamp troncato all'inizio del giorno, quindi che ogni richiesta abbia lo stesso timestamp. Troncamento dei timestamp assicura che tutte le donazioni di quel giorno vengano aggiunte alla stessa cella. La il giorno successivo, tutte le richieste vengono inserite in una nuova cella, utilizzando i timestamp indicati viene troncato alla nuova data e il pattern continua.
A seconda del caso d'uso, potresti scegliere di creare nuove colonne per il nuovo aggregati. A seconda del numero di bucket che prevedi potresti prendere in considerazione una struttura della chiave di riga diversa.
Per ulteriori informazioni sui bucket temporali, consulta la sezione Progettazione di uno schema per le serie temporali. i tuoi dati.
Semplificazione dei flussi di lavoro
I dati aggregati consentono di aggregare i dati nella tabella Bigtable senza dover utilizzare alcun ETL o software di elaborazione dei flussi di dati per aggregare prima o dopo averli scritti in Bigtable. Ad esempio: se la tua applicazione ha pubblicato in precedenza messaggi in Pub/Sub utilizzato Dataflow per leggere i messaggi e aggregare i dati prima scrivendolo in Bigtable, puoi inviare i dati direttamente per aggregare le celle in Bigtable.
Famiglie di colonne aggregate
Per creare e aggiornare le celle aggregate, devi avere una o più famiglie di colonne nella tabella: famiglie di colonne che contengono solo dati aggregati celle. Puoi crearle quando crei una tabella oppure aggiungere un insieme a una tabella già in uso. Quando crei la colonna puoi specificare il tipo di aggregazione, come "somma".
Non puoi convertire una famiglia di colonne che contiene dati non aggregati in un una famiglia di colonne aggregate. Le colonne nelle famiglie di colonne aggregate non possono contenere celle non aggregate e le famiglie di colonne standard non possono contenere celle aggregate.
Per creare una nuova tabella con una famiglia di colonne aggregata, consulta Creare un dalla tabella. Per aggiungere una colonna aggregata a una tabella, consulta Aggiungere colonne famiglie.
Tipi di aggregazione
Bigtable supporta i seguenti tipi di aggregazione:
Somma
Quando aggiungi un valore a una cella di aggregazione della somma (sum
), il valore della cella è
sostituito con la somma del valore appena aggiunto e del valore attuale della cella. La
il tipo di input supportato per le somme è Int64
.
Minimo
Quando aggiungi un valore a una cella di aggregazione minima (min
), il valore della cella è
sostituito con il valore più basso tra il nuovo valore aggiunto e quello attuale
valore della cella. Il tipo di input supportato per il valore minimo è Int64
.
Massimo
Quando aggiungi un valore a una cella aggregata massima (max
), il valore della cella viene
sostituito con il valore più alto tra il nuovo valore aggiunto e quello attuale
valore della cella. Il tipo di input supportato al massimo è Int64
.
HyperLogLog (HLL)
Quando aggiungi un valore a una cella aggregata HLL (inthll
), il valore viene aggiunto a
un insieme probabilistico di tutti i valori aggiunti dall'ultima reimpostazione (il valore
creazione della cella o eliminazione dei suoi dati). Il valore della cella rappresenta
lo stato di quell'insieme. Per informazioni più generali sull'algoritmo HLL, consulta
HyperLogLog.
È possibile leggere i valori HLL utilizzando la libreria di Zetasketch. Per ulteriori informazioni, vedi
nel repository GitHub di Zetasketch. La
il tipo di input supportato per HLL è BYTES
.
Timestamp
Una cella aggregata è definita da chiave di riga, famiglia di colonne, qualificatore di colonna e timestamp. Devi utilizzare lo stesso timestamp ogni volta che aggiungi dati alla cella. Se invia un valore alla stessa chiave di riga, alla stessa famiglia di colonne e allo stesso qualificatore di colonna, ma con un un timestamp diverso, nella colonna viene creata una nuova cella aggregata.
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 un
famiglia di colonne configurata per Int64
, la richiesta è stata 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
riferimento.
Le operazioni AddToCell
sono soggette alle stesse operazioni
limiti
delle altre mutazioni delle tabelle.
In una tabella replicata, una cella aggregata converge per lo stesso valore finale in
per tutti i cluster nell'attuale ritardo di replica. Il valore finale è
aggregato di tutte le mutazioni (AddToCell
) inviate a quella cella in tutti i cluster dal giorno
dall'ultima operazione di eliminazione o dalla creazione della cella.
Garbage collection
Durante la garbage collection, le celle aggregate vengono trattate come qualsiasi altra cella: se cella viene contrassegnata per l'eliminazione, l'eliminazione viene replicata in tutti i cluster della in esecuzione in un'istanza Compute Engine. Per ulteriori informazioni, consulta Replica e garbage raccolta. Se viene inviata una richiesta di aggiunta inviati a una cella aggregata che è stata rimossa dalla garbage collection, viene viene creata la cella aggregata.
Aggiungi esempi di richieste
I seguenti esempi mostrano come aggiungere un valore a una cella aggregata. La
esempi vengono aggiunti 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, ad esempio1710868850000000
Esempio:
cbt addtocell mobile-data device-1 updates:week12=100@1710868850000000
Vai
Per scoprire come installare e utilizzare la libreria client per Bigtable, consulta Librerie client di Bigtable.
Per eseguire l'autenticazione su Bigtable, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura 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 su Bigtable, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.