Aggregierte Werte zum Schreibzeitpunkt
Wenn Sie Ihre Daten in Bigtable zum Schreibzeitpunkt aggregieren möchten, können Sie Aggregatfunktionen verwenden. Aggregatwerte sind Bigtable-Tabellenzellen, in denen beim Schreiben der Daten Zellenwerte aggregiert werden. Wenn Sie einen neuen Wert hinzufügen, führt eine Aggregatfunktion den Wert mit dem aggregierten Wert zusammen, der sich bereits in der Zelle befindet. Andere Datenbanken beziehen sich auf eine ähnliche Funktionalität wie Zähler oder verteilte Zähler.
Bigtable bietet den Aggregationstyp Summe. Wenn Sie einer Summen-Aggregatzelle einen Wert hinzufügen, wird der Zellenwert durch die Summe des neu hinzugefügten Werts und des aktuellen Zellenwerts ersetzt.
Während der Vorabversion können Sie über die cbt
-Befehlszeile und die Bigtable-Clientbibliotheken für C++, Go und Java mit aggregierten Daten arbeiten.
Dieses Dokument bietet einen Überblick über aggregierte Daten, zeigt, wie eine aggregierte Spaltenfamilie erstellt wird, und enthält Beispiele, die zeigen, wie einer aggregierten Zelle ein Wert hinzugefügt wird. Bevor Sie dieses Dokument lesen, sollten Sie sich mit den Informationen unter Bigtable – Übersicht und Schreibvorgänge vertraut machen.
Wann werden aggregierte Daten verwendet?
Bigtable-Aggregatfunktionen sind in Situationen nützlich, in denen Daten für eine Entität in aggregierter Form und nicht als einzelne Datenpunkte wichtig sind. Wenn Sie von Datenbanken wie Apache Cassandra oder Redis zu Bigtable migrieren, können Sie Bigtable-Aggregatfunktionen an Stellen verwenden, an denen Sie sich in diesen Systemen zuvor auf Zähler verlassen haben.
Zeit-Buckets
Sie können Zeit-Buckets verwenden, um aggregierte Werte für einen bestimmten Zeitraum abzurufen, z. B. für eine Stunde, einen Tag oder eine Woche. Anstatt Daten vor oder nach dem Schreiben in die Tabelle zu aggregieren, fügen Sie den Zellen der Tabelle neue Werte hinzu.
Wenn Sie beispielsweise einen Dienst betreiben, der Wohltätigkeitsorganisationen dabei hilft, Geld zu sammeln, möchten Sie vielleicht wissen, wie viel Onlinespenden pro Tag für jede Kampagne anfallen. Sie müssen jedoch nicht die genaue Uhrzeit oder den Betrag pro Stunde kennen. In der Tabelle stellen die Zeilenschlüssel die IDs der gemeinnützigen Organisationen dar und Sie erstellen eine aggregierte Spaltenfamilie mit dem Namen donations
. Die Spaltenqualifizierer in der Zeile sind Kampagnen-IDs.
Wenn jeder Spendenbetrag eingeht, der an einem bestimmten Tag für eine Kampagne eingeht, wird er zur Summe in der aggregierten Zelle in der Spalte für diesen Tag addiert. Jede Hinzufügungsanfrage für die Zelle verwendet einen auf den Beginn des Tages gekürzten Zeitstempel, sodass jede Anfrage denselben Zeitstempel hat. Durch das Kürzen der Zeitstempel wird sichergestellt, dass alle Spenden von diesem Tag derselben Zelle hinzugefügt werden. Am nächsten Tag werden alle Ihre Anfragen mit Zeitstempeln, die bis zum neuen Datum abgeschnitten sind, in eine neue Zelle geleitet. Dieses Muster wird fortgesetzt.
Je nach Anwendungsfall können Sie stattdessen neue Spalten für die neuen Zusammenfassungen erstellen. Weitere Informationen zu Zeit-Buckets finden Sie unter Schemadesign für Zeitreihendaten.
Workflows optimieren
Mit Aggregatfunktionen können Sie Daten in Ihrer Bigtable-Tabelle aggregieren, ohne dass Sie zum Aggregieren Ihrer Daten vor oder nach dem Schreiben in Bigtable ETL- oder Streamingverarbeitungssoftware verwenden müssen. Wenn Ihre Anwendung beispielsweise zuvor Nachrichten in Pub/Sub veröffentlicht und dann Dataflow verwendet hat, um die Nachrichten zu lesen und die Daten vor dem Schreiben in Bigtable zu aggregieren, können Sie die Daten stattdessen direkt an Aggregatzellen in Bigtable senden.
Aggregierte Spaltenfamilien
Wenn Sie aggregierte Zellen erstellen und aktualisieren möchten, muss die Tabelle mindestens eine zusammengefasste Spaltenfamilie enthalten. Das sind Spaltenfamilien, die nur aggregierte Zellen enthalten. Sie können sie beim Erstellen einer Tabelle erstellen oder einer bereits verwendeten Tabelle eine zusammengefasste Spaltenfamilie hinzufügen. Beim Erstellen der Spaltenfamilie geben Sie den Aggregationstyp an, z. B. Summe.
Eine Spaltenfamilie, die nicht aggregierte Daten enthält, kann nicht in eine zusammengefasste Spaltenfamilie konvertiert werden. Spalten in zusammengefassten Spaltenfamilien dürfen keine nicht aggregierten Zellen und Standardspaltenfamilien keine aggregierten Zellen enthalten.
Informationen zum Erstellen einer neuen Tabelle mit einer aggregierten Spaltenfamilie finden Sie unter Tabelle erstellen. Informationen zum Hinzufügen einer aggregierten Spaltenfamilie zu einer Tabelle finden Sie unter Spaltenfamilien hinzufügen.
Zusammenfassungstypen
Bigtable unterstützt den Aggregationstyp sum
. Der für Summen unterstützte Eingabetyp ist Int64
.
Zeitstempel
Eine aggregierte Zelle wird durch Zeilenschlüssel, Spaltenfamilie, Spaltenqualifizierer und Zeitstempel definiert. Jedes Mal, wenn Sie Daten in die Zelle einfügen, verwenden Sie denselben Zeitstempel. Wenn Sie einen Wert an denselben Zeilenschlüssel, dieselbe Spaltenfamilie und denselben Spaltenqualifizierer, aber mit einem anderen Zeitstempel senden, wird in der Spalte eine neue aggregierte Zelle erstellt.
Eine Hinzufügungsanfrage, die an eine aggregierte Zelle gesendet wird, muss einen Zeitstempel enthalten.
Eingabetyp
Der Eingabetyp des Werts in der Hinzufügungsanfrage muss mit dem Eingabetyp übereinstimmen, mit dem die Spaltenfamilie erstellt wird. Wenn Sie beispielsweise einen Stringwert an eine Spaltenfamilie senden, die für Int64
konfiguriert ist, wird die Anfrage abgelehnt.
AddToCell
Eine Hinzufügungsanfrage sendet eine AddToCell
-Mutation in der Bigtable Data API. Im Gegensatz dazu sendet eine nicht aggregierte Schreibanfrage eine SetCell
-Mutation. Weitere Informationen finden Sie in der Data API-Referenz.
Für AddToCell
-Vorgänge gelten dieselben Vorgangslimits wie für andere Tabellenmutationen.
In einer replizierten Tabelle konvergiert eine aggregierte Zelle innerhalb der aktuellen Replikationsverzögerung in allen Clustern zum gleichen Gesamtwert. Der Gesamtwert ist die Summe aller AddToCell
-Mutationen, die seit dem letzten Löschvorgang oder seit Erstellung der Zelle an diese Zelle in allen Clustern gesendet wurden.
Anfragebeispiele hinzufügen
Die folgenden Beispiele zeigen, wie Sie einer aggregierten Zelle einen Wert hinzufügen. Die Beispiele ergänzen 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 Kennung für die SpalteVALUE
: der Wert, der in die Zelle eingefügt werden sollTIMESTAMP
: ein Unix-Zeitstempel in Mikrosekunden, z. B.1710868850000000
Beispiel:
cbt addtocell mobile-data device-1 updates:week12=100@1710868850000000
Einfach loslegen (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.
Nächste Schritte
- Konzepte im Zusammenhang mit dem Schemadesign noch einmal durchgehen
- Mit einer Cloud Functions-Funktion auf Bigtable-Daten zugreifen.