Werte zum Schreibzeitpunkt aggregieren
Wenn Sie Ihre Daten zum Schreibzeitpunkt in Bigtable aggregieren möchten, Aggregatfunktionen Aggregate sind Bigtable-Tabellenzellen, aggregierte Zellenwerte, während die Daten geschrieben werden. Wenn Sie einen neuen Wert hinzufügen, Aggregationsfunktion führt den Wert mit dem aggregierten Wert zusammen, der bereits in die Zelle ein. Andere Datenbanken bezeichnen ähnliche Funktionen als Zähler oder verteilte Zähler.
Sie können mit Aggregaten arbeiten, indem Sie die
cbt
-Befehlszeile
und
Bigtable-Clientbibliotheken für C++, Go und Java.
Dieses Dokument bietet einen Überblick über Aggregatfunktionen. aggregierte Spaltenfamilie und enthält Beispiele, die zeigen, wie ein Wert zu einem aggregierte Zelle. Bevor Sie dieses Dokument lesen, sollten Sie mit den Bigtable Übersicht und Schreibvorgänge .
Wann sollten Aggregatfunktionen verwendet werden?
Bigtable-Aggregationen sind nützlich, wenn Sie Daten für eine Entität insgesamt und nicht als einzelne Datenpunkte benötigen. Wenn Sie die Migration von Datenbanken wie Apache Cassandra oder Redis verwenden können, können Sie Bigtable-Aggregate dort verwenden, in diesen Systemen auf Zähler angewiesen waren.
Zeit-Buckets
Sie können Zeit-Buckets verwenden, um zusammengefasste Werte für einen bestimmten Zeitraum zu erhalten, z. B. eine Stunde, einen Tag oder eine Woche. Anstatt Daten vor oder nach dem Schreiben zu aggregieren zu Ihrer Tabelle hinzufügen, fügen Sie neue Werte hinzu, um Zellen in der Tabelle zu aggregieren.
Wenn Sie beispielsweise einen Dienst betreiben, mit dem gemeinnützige Organisationen Geld sammeln können,
möchten wissen, wie hoch die Onlinespenden
pro Tag sind, aber Sie
Sie müssen weder den genauen Zeitpunkt der einzelnen Spenden noch den Betrag pro Stunde kennen. In
stehen die Zeilenschlüssel für die IDs gemeinnütziger Organisationen und Sie erstellen eine
Familie namens donations
. Die Spaltenbezeichner in der Zeile sind Kampagnen-IDs.
Da jeder für eine Kampagne an einem Tag eingegangene Spendenbetrag eingeht, wird er zur Summe in der aggregierten Zelle in der Spalte für diesen Tag addiert. Jede Anzeige verwendet einen Zeitstempel, der auf den Anfang des Tages gekürzt ist. dass jede Anfrage denselben Zeitstempel hat. Zeitstempel kürzen stellt sicher, dass alle Spenden von diesem Tag derselben Zelle hinzugefügt werden. Die werden am nächsten Tag alle Anfragen mit Zeitstempeln, bis zum neuen Datum gekürzt wird, und dieses Muster setzt sich fort.
Je nach Anwendungsfall können Sie neue Spalten für Ihre neuen Aggregatfunktionen. Je nach Anzahl der Buckets, die Sie können Sie ein anderes Zeilenschlüsseldesign in Betracht ziehen.
Weitere Informationen zu Zeit-Buckets finden Sie unter Schemadesign für Zeitreihen. Daten.
Arbeitsabläufe rationalisieren
Mit Aggregationen können Sie Ihre Daten in einer Bigtable-Tabelle aggregieren ohne dass eine ETL- oder Streaming-Verarbeitungssoftware zum bevor oder nachdem sie in Bigtable geschrieben wurden. Beispiel: wenn Ihre Anwendung bereits Nachrichten in Pub/Sub veröffentlicht hat. verwendet Dataflow, um die Nachrichten zu lesen und die Daten zu aggregieren, in Bigtable schreiben, können Sie die Daten stattdessen auch direkt um Zellen in Bigtable zu aggregieren.
Aggregierte Spaltenfamilien
Wenn Sie Summenzellen erstellen und aktualisieren möchten, müssen Sie in Ihrer Tabelle eine oder mehrere Summenspaltenfamilien haben. Das sind Spaltenfamilien, die nur Summenzellen enthalten. Sie können sie zusammen mit einer Tabelle erstellen oder eine Aggregation hinzufügen. Spaltenfamilie zu einer Tabelle hinzu, die bereits verwendet wird. Beim Erstellen der Spalte geben Sie den Zusammenfassungstyp an, z. B. sum.
Sie können eine Spaltenfamilie mit nicht aggregierten Daten nicht in ein Aggregat-Spaltenfamilie. Spalten in aggregierten Spaltenfamilien dürfen keine Inhalte enthalten nicht aggregierte Zellen und Standardspaltenfamilien dürfen keine aggregierten Zellen enthalten.
Informationen zum Erstellen einer neuen Tabelle mit einer aggregierten Spaltenfamilie finden Sie unter Ein Tabelle. So fügen Sie eine zusammengefasste Spalte hinzu: zu einer Tabelle hinzufügen, siehe Spalte hinzufügen Familien.
Zusammenfassungstypen
Bigtable unterstützt die folgenden Aggregationstypen:
Summe
Wenn Sie einer aggregierten Zelle (sum
) einen Wert hinzufügen, ist der Zellenwert
durch die Summe des neu hinzugefügten Werts und des aktuellen Zellenwerts ersetzt. Die
Der Eingabetyp, der für Summen unterstützt wird, ist Int64
.
Minimum
Wenn Sie einer Mindestgesamtzellen (min
) einen Wert hinzufügen, wird der Zellenwert durch den niedrigeren Wert zwischen dem neu hinzugefügten Wert und dem aktuellen Zellenwert ersetzt. Der Eingabetyp, der für Min. unterstützt wird, ist Int64
.
Maximum
Wenn Sie einer maximalen aggregierten Zelle (max
) einen Wert hinzufügen, ist der Zellenwert
durch den höheren Wert zwischen dem neuen und dem aktuellen Wert ersetzt.
Zellenwert. Der Eingabetyp, der für Max. unterstützt wird, ist Int64
.
HyperLogLog (HLL)
Wenn Sie einer aggregierten HLL-Zelle (inthll
) einen Wert hinzufügen, wird der Wert
eine probabilistische Menge aller Werte, die seit der letzten Zurücksetzung hinzugefügt wurden (entweder
Erstellung der Zelle oder das Löschen ihrer Daten). Der Zellenwert steht für
Status dieses Satzes. Allgemeine Informationen zum HLL-Algorithmus finden Sie unter
HyperLogLog.
Sie können HLL-Werte mit der Zetasketch-Bibliothek lesen. Weitere Informationen finden Sie unter
Das GitHub-Repository von Zetasketch. Der für HLL unterstützte Eingabetyp ist BYTES
.
Zeitstempel
Eine aggregierte Zelle wird durch Zeilenschlüssel, Spaltenfamilie, Spaltenqualifizierer und Zeitstempel. Sie verwenden immer denselben Zeitstempel, wenn Sie der Zelle Daten hinzufügen. Wenn Sie einen Wert an denselben Zeilenschlüssel, dieselbe Spaltenfamilie und denselben Spaltenqualifizierer senden, aber mit Zeitstempel ändern, wird in der Spalte eine neue aggregierte Zelle erstellt.
Eine Anfrage zum Hinzufügen, die an eine aggregierte Zelle gesendet wird, muss einen Zeitstempel enthalten.
Eingabetyp
Der Eingabetyp des Werts in der Anfrage zum Hinzufügen muss dem Eingabetyp entsprechen,
mit der die Spaltenfamilie erstellt wird. Wenn Sie beispielsweise einen Stringwert an einen
Spaltenfamilie für Int64
konfiguriert ist, wird die Anfrage abgelehnt.
AddToCell
Eine Hinzufügungsanfrage sendet die Mutation AddToCell
in der Bigtable Data API.
Im Gegensatz dazu wird bei einer nicht aggregierten Schreibanfrage die Mutation SetCell
gesendet. Weitere Informationen finden Sie in der Data API-Referenz.
AddToCell
-Vorgänge unterliegen denselben Vorgängen.
Limits
wie andere Tabellenmutationen.
In einer replizierten Tabelle konvergiert eine aggregierte Zelle
innerhalb der aktuellen Replikationsverzögerung. Der endgültige Wert ist der
Zusammenfassung aller AddToCell
Mutationen, die seitdem in allen Clustern an diese Zelle gesendet wurden
oder seit der Erstellung der Zelle ausgeführt wurde.
Automatische Speicherbereinigung
Aggregierte Zellen werden bei der automatischen Speicherbereinigung wie alle anderen Zellen behandelt: zum Löschen markiert ist, wird der Löschvorgang auf alle Cluster im Instanz. Weitere Informationen finden Sie unter Replikation und automatische Speicherbereinigung. erfasst werden. Wenn eine Anfrage zum Hinzufügen an eine aggregierte Zelle gesendet, die durch die automatische Speicherbereinigung entfernt wurde, aggregierte Zelle erstellt.
Anfragebeispiele hinzufügen
Die folgenden Beispiele zeigen, wie Sie einer aggregierten Zelle einen Wert hinzufügen. Die
Die Beispiele addieren eine Summe in einer Spaltenfamilie, die den Eingabetyp Int64
erwartet.
cbt
cbt addtocell TABLE_ID ROW_KEY
FAMILY_NAME:COLUMN_QUALIFER=VALUE@TIMESTAMP
Ersetzen Sie Folgendes:
TABLE_ID
: Die permanente Kennzeichnung der TabelleROW_KEY
: der ZeilenschlüsselFAMILY_NAME
: der Name der aggregierten SpaltenfamilieCOLUMN_QUALIFIER
: eine Kennzeichnung für die SpalteVALUE
: Wert, der der Zelle hinzugefügt werden sollTIMESTAMP
: ein Unix-Zeitstempel in Mikrosekunden, z. B.1710868850000000
Beispiel:
cbt addtocell mobile-data device-1 updates:week12=100@1710868850000000
Go
Informationen zum Installieren und Verwenden der Clientbibliothek für Bigtable finden Sie unter Bigtable-Clientbibliotheken.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Bigtable zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Java
Informationen zum Installieren und Verwenden der Clientbibliothek für Bigtable finden Sie unter Bigtable-Clientbibliotheken
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Bigtable zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.