Werte zum Schreibzeitpunkt aggregieren
Wenn Sie Ihre Daten zum Schreibzeitpunkt in Bigtable aggregieren möchten, aggregates Aggregate sind Bigtable-Tabellenzellen, aggregierte Zellenwerte, während die Daten geschrieben werden. Wenn Sie einen neuen Wert hinzufügen, und 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.
In diesem Dokument finden Sie einen Überblick über Aggregate, eine Anleitung zum Erstellen einer Aggregate-Spaltenfamilie und Beispiele zum Hinzufügen eines Werts zu einer Aggregate-Zelle. Bevor Sie dieses Dokument lesen, sollten Sie mit den Bigtable Übersicht und Schreibvorgänge .
Wann sollten Aggregate 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 von Datenbanken wie Apache Cassandra oder Redis zu Bigtable migrieren, können Sie Bigtable-Aggregationen an Stellen verwenden, an denen Sie zuvor Zähler in diesen Systemen verwendet haben.
Zeit-Buckets
Sie können Zeit-Buckets verwenden, um aggregierte Werte für einen bestimmten Zeitraum zu erhalten, z. B. eine Stunde, einen Tag oder eine Woche. Anstatt Daten vor oder nach dem Schreiben in die Tabelle zu aggregieren, fügen Sie neue Werte hinzu, um Zellen in der Tabelle zu aggregieren.
Wenn Sie beispielsweise einen Dienst anbieten, mit dem Wohltätigkeitsorganisationen Geld sammeln können, möchten Sie vielleicht die Anzahl der Onlinespenden pro Tag für jede Kampagne wissen. Sie müssen jedoch nicht die genaue Uhrzeit jeder Spende oder den Betrag pro Stunde kennen. In Ihrer Tabelle stehen Zeilenschlüssel für IDs von Wohltätigkeitsorganisationen und Sie erstellen eine aggregierte Spaltenfamilie namens donations
. Die Spaltenqualifizierer in der Zeile sind Kampagnen-IDs.
Jeder für einen bestimmten Tag für eine Kampagne eingegangene Spendenbetrag wird der Summe in der Summenzelle in der Spalte für diesen Tag hinzugefügt. 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 Zeitblöcken finden Sie unter Schemadesign für Zeitachsendaten.
Arbeitsabläufe rationalisieren
Mit Aggregaten können Sie Ihre Daten in Ihrer Bigtable-Tabelle zusammenfassen, ohne dass Sie vor oder nach dem Schreiben in Bigtable eine ETL- oder Streaming-Verarbeitungssoftware verwenden müssen. 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.
Spaltenfamilien zusammenführen
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, die keine aggregierten Daten enthält, nicht in eine aggregierte Spaltenfamilie umwandeln. Spalten in Aggregierungsspaltenfamilien dürfen keine nicht aggregierten Zellen enthalten 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 Summensummezelle (sum
) einen Wert hinzufügen, wird der Zellenwert durch die Summe des neu hinzugefügten Werts und des aktuellen Zellenwerts ersetzt. Für Summen wird der Eingabetyp Int64
unterstützt.
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 für „max“ unterstützte Eingabetyp 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 Summenzelle wird durch den Zeilenschlüssel, die Spaltenfamilie, den Spaltenqualifizierer und den Zeitstempel definiert. Sie verwenden immer denselben Zeitstempel, wenn Sie der Zelle Daten hinzufügen. Wenn Sie einen Wert mit demselben Zeilenschlüssel, derselben Spaltenfamilie und demselben Spaltenqualifizierer, aber mit einem anderen Zeitstempel senden, wird in der Spalte eine neue Aggregierungszelle erstellt.
Eine an eine Summenzelle gesendete Anfrage zum Hinzufügen muss einen Zeitstempel enthalten.
Eingabetyp
Der Eingabetyp des Werts in der Hinzufügeanfrage muss mit dem Eingabetyp übereinstimmen, mit dem die Spaltenfamilie erstellt wurde. 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.
Bei einer nicht zusammengefassten Schreibanfrage wird dagegen eine SetCell
-Mutation gesendet. Weitere Informationen
finden Sie unter Data API
Referenz.
AddToCell
-Vorgänge unterliegen denselben Vorgängen.
Limits
wie andere Tabellenmutationen.
In einer replizierten Tabelle konvergiert eine Aggregierungszelle in allen Clustern innerhalb der aktuellen Replikationsverzögerung auf denselben Endwert. 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 beim Garbage Collection wie jede andere Zelle behandelt: Wenn eine Zelle zum Löschen markiert wird, wird das Löschen auf alle Cluster in der Instanz repliziert. Weitere Informationen finden Sie unter Replikation und Garbage Collection. Wenn eine Anfrage zum Hinzufügen an eine aggregierte Zelle gesendet, die durch die automatische Speicherbereinigung entfernt wurde, aggregierte Zelle erstellt.
Anfragebeispiele hinzufügen
In den folgenden Beispielen wird gezeigt, wie Sie einer Summenzelle einen Wert hinzufügen. In den Beispielen werden Werte in einer Spaltenfamilie addiert, für die der Eingabetyp Int64
erwartet wird.
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 Kennung für die SpalteVALUE
: Der Wert, der der Zelle hinzugefügt werden soll.TIMESTAMP
: 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 zur Authentifizierung bei Bigtable die Standardanmeldedaten für Anwendungen ein. 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.