Kontinuierliche materialisierte Ansichten
Dieses Dokument bietet einen Überblick über kontinuierliche materialisierte Ansichten und gängige Anwendungsfälle. Voraussetzung dafür ist die Kenntnis der Bigtable Übersicht.
In Bigtable ist eine kontinuierliche materialisierte Ansicht das Ergebnis eines kontinuierlichen, vollständig verwalteten Hintergrundprozesses. Dieser Prozess verwendet eine von Ihnen bereitgestellte SQL-Abfrage, um eine vorab berechnete Tabelle zu erstellen und zu verwalten, die von Bigtable inkrementell aktualisiert wird, wenn sich die Quelldaten ändern. Die SQL-Abfrage kann Aggregationen und Transformationen für die zugrunde liegende Bigtable-Tabelle enthalten.
Die Daten in einer kontinuierlichen materialisierten Ansicht umfassen Folgendes:
- Aggregierte oder transformierte Werte, die aus Daten in der Quelltabelle abgeleitet werden
- Nicht aggregierte Werte, die den Gruppierungsschlüssel definieren
Mit kontinuierlichen materialisierten Ansichten können Sie Ihre Daten beim Aufnehmen vorab aggregieren. Außerdem hat eine kontinuierliche materialisierte Ansicht ein anderes Schema als ihre Quelltabelle. Die Daten der Quelltabelle werden in einer Struktur dargestellt, die für Abfragen mit anderen Suchmustern als die in der Quelltabelle verwendeten Abfragen optimiert ist.
Kontinuierliche materialisierte Ansichten in Bigtable haben folgende Hauptmerkmale:
- Keine Wartung erforderlich: Eine kontinuierliche materialisierte Ansicht wird im Hintergrund vorab berechnet. Datenänderungen an der Quelltabelle, einschließlich Aktualisierungen und Löschungen, werden automatisch im Hintergrund an die kontinuierliche materialisierte Ansicht weitergegeben, ohne dass der Nutzer eingreifen muss.
- SQL-Entwicklungsmuster: Kontinuierliche materialisierte Ansichten basieren auf GoogleSQL für Bigtable-Abfragen, einschließlich SQL Funktionen, Filtern und Aggregationen.
- Synchronisierung mit der automatischen Speicherbereinigung: Eine kontinuierliche materialisierte Ansicht wird mit den Richtlinien für die automatische Speicherbereinigung der Quelltabelle synchronisiert und automatisch aktualisiert, wenn Tabellendaten ablaufen oder gelöscht werden.
- Latenzzeiten für Lese- und Schreibvorgänge sind nicht betroffen: Eine kontinuierliche materialisierte Ansicht hat nur minimale Auswirkungen auf die Leistung der Quelltabelle, wenn die Cluster der Instanz ausreichend bereitgestellt sind oder Autoscaling verwenden.
- Eventuelle Konsistenz:Kontinuierliche materialisierte Ansichten werden im Hintergrund berechnet. Aktualisierungen einer kontinuierlichen materialisierten Ansicht können sich verzögern, aber die Ergebnisse der kontinuierlichen materialisierten Ansicht sind im Laufe der Zeit immer konsistent.
Der Zeilenschlüssel, der Spaltenqualifizierer und die Spaltenwerte, die Sie zum Definieren einer kontinuierlichen materialisierten Ansicht verwenden, werden als Dienstdaten behandelt. Erstellen Sie daher keine kontinuierliche materialisierte Ansicht mit Zeilenschlüsseln, Spaltenqualifizierern oder Spaltenwerten, die vertrauliche Informationen enthalten. Informationen zum Umgang mit Dienstdaten finden Sie in den Google Cloud Datenschutz Hinweisen.
Sie können eine kontinuierliche materialisierte Ansicht mit der Google Cloud CLI, dem Bigtable Studio-Abfrageeditor in der Google Cloud Console oder den Bigtable-Clientbibliotheken für Java und Go erstellen.
Sie können aus einer kontinuierlichen materialisierten Ansicht lesen, indem Sie Folgendes verwenden:
- Bigtable Studio-Abfrageeditor
- Die Bigtable-Clientbibliotheken, die SQL- Abfragen unterstützen
ReadRows-API-Aufruf mit den Bigtable-Clientbibliotheken für Java und Go
Weitere Informationen finden Sie unter Aus einer kontinuierlichen materialisierten Ansicht lesen.
Wann sollten kontinuierliche materialisierte Ansichten verwendet werden?
Mit kontinuierlichen materialisierten Ansichten können Sie eine neue Darstellung Ihrer Bigtable-Daten mit SQL definieren. Nach der Erstellung werden die Daten aus der Quelltabelle kontinuierlich und automatisch in das durch die SQL-Abfrage definierte Format umstrukturiert. Anstatt Ihre Tabelle abzufragen und die Daten nach dem Lesen zu transformieren oder zu aggregieren, können Sie dann die kontinuierliche materialisierte Ansicht abfragen.
Kontinuierliche materialisierte Ansichten können die Abfrageleistung in den folgenden Anwendungsfällen verbessern:
- Vorabaggregation von Daten: Sie können eine kontinuierliche materialisierte Ansicht verwenden, um eingehende Daten zeilenübergreifend zu aggregieren. So können Sie zusammengefasste und aggregierte Daten wie Messwerte für Dashboards schnell abrufen.
- Automatisierung von Lambda- und Kappa-Architekturen: Wenn Ihre Anwendung eine Kombination aus Echtzeit-Streaming-Pipelinedaten und Batch-Pipelinedaten mit Verlaufsdaten erfordert, verwenden Sie kontinuierliche materialisierte Ansichten. Diese Ansichten bieten eine Ansicht aller Datenquellen, die im Laufe der Zeit aktualisiert wird, um Änderungen an den zugrunde liegenden Daten widerzuspiegeln. Zusätzliche Streamverarbeitungstools oder benutzerdefinierte ETL-Jobs sind nicht erforderlich.
- Sekundäre Zugriffsmuster: Kontinuierliche materialisierte Ansichten erstellen eine alternative Darstellung Ihrer Daten. Diese Darstellung kann für Abfragen mit anderen Suchmustern als denen optimiert werden, die Sie in Abfragen für die Quelltabelle verwenden. Dadurch sind kontinuierliche materialisierte Ansichten ein leistungsstarkes Tool, um einen asynchronen sekundären Index für Ihre Daten zu erstellen. Weitere Informationen zu diesen Mustern finden Sie unter Asynchronen sekundären Index erstellen.
Einen Vergleich von kontinuierlichen materialisierten Ansichten mit anderen Arten von Bigtable-Ansichten finden Sie unter Tabellen und Ansichten.
Wann sollten Zähler verwendet werden?
Eine weitere Möglichkeit, Ihre Daten vorab zu aggregieren, ist das Erstellen von verteilten Zählern mit Aggregatzellen.
Schreibvorgänge in Aggregatzellen können sofort aus dem Cluster gelesen werden, in das sie geschrieben wurden. Kontinuierliche materialisierte Ansichten werden verarbeitet, nachdem Daten geschrieben wurden, und werden schließlich mit der Quelltabelle konsistent.
Verwenden Sie Zähler anstelle von kontinuierlichen materialisierten Ansichten für Folgendes:
- Aggregationen, für die keine Filter erforderlich sind und die nicht zeilenübergreifend sein müssen
- Wenn Sie Ihre Schreibvorgänge sofort aus dem Cluster lesen müssen, in das sie geschrieben wurden
Verwenden Sie kontinuierliche materialisierte Ansichten, wenn Sie Folgendes tun möchten:
- Einen anderen Schlüssel für Abfragen für Ihre Aggregationen generieren
- Änderungen an der Basistabelle in Ihren Aggregationen sehen
- Daten automatisch über mehrere Zeilen hinweg kombinieren
Verwenden Sie eine Kombination aus Zählern und kontinuierlichen materialisierten Ansichten für Anwendungsfälle wie die folgenden:
- Aktuelle Messwerte in einer Aggregatzelle erfassen, aber bisherige Roll-ups dieser Messwerte beibehalten
- Messwerte in einer kontinuierlichen materialisierten Ansicht kombinieren
Ressourcenbereitstellung und Leistung
Die laufende Verarbeitung für kontinuierliche materialisierte Ansichten erfolgt als Hintergrundjob mit niedriger Priorität. Daher hat sie nur minimale Auswirkungen auf die Anwendungsleistung und die Latenzzeiten für Lese- und Schreibvorgänge in der Quelltabelle, sofern Ihre Cluster ausreichend dimensioniert sind.
Als Best Practice sollten Sie Autoscaling für die Cluster in der Instanz aktivieren, die Ihre kontinuierliche materialisierte Ansicht enthält, damit die Daten in der kontinuierlichen materialisierten Ansicht immer aktuell sind. Autoscaling fügt automatisch genügend Knoten hinzu, um den Verarbeitungsaufwand zu bewältigen, und entfernt sie dann wieder, wenn sie nicht mehr benötigt werden. So ist sichergestellt, dass während der Ausführung der kontinuierlich laufenden SQL-Abfrage genügend Rechenkapazität zur Verfügung steht. Autoscaling kann auch dafür sorgen, dass Sie genügend Knoten haben, um den Speicherbedarf Ihrer kontinuierlichen materialisierten Ansichten zu decken.
Kontinuierliche materialisierte Ansichten werden auf das Limit von 1.000 Tabellen pro Instanz angerechnet.
Kontinuierliche materialisierte Ansichten für vorhandene Tabellen erstellen
Wenn Sie eine kontinuierliche materialisierte Ansicht für eine vorhandene Tabelle erstellen, startet Bigtable einen einmaligen Prozess, bei dem die Ansicht mit vorhandenen Tabellendaten gefüllt wird. Wie lange diese anfängliche Befüllung dauert, hängt von der Größe der Tabelle und der Komplexität der Abfrage ab. Während dieser Zeit kann die Ansicht nicht abgefragt werden. Diese anfängliche Datenbefüllung wird als Hintergrundjob mit niedriger Priorität ausgeführt, um die Auswirkungen auf die Leistung Ihres Clusters zu minimieren. Bei großen Tabellen können Sie Ihrem Cluster vorübergehend weitere Knoten hinzufügen, um die Erstellung der Ansicht zu beschleunigen.
Das folgende Diagramm zeigt den Prozess zum Erstellen von kontinuierlichen materialisierten Ansichten:
Angenommen, Ihre Quelltabelle enthält Zeilen mit Schlüsseln, die dem Muster advertiser_id#region#ad_id folgen, und eine Spaltenfamilie data mit einem Spaltenqualifizierer spend_usd mit numerischen Daten, die die Werbeausgaben darstellen:
| Zeilenschlüssel | data:spend_usd |
|---|---|
adv1#us-east#ad1 |
100 |
adv1#us-west#ad2 |
150 |
adv2#us-east#ad3 |
200 |
Wenn Sie die folgende Abfrage verwenden, um eine kontinuierliche materialisierte Ansicht dieser Tabelle zu definieren, wird die anfängliche Befüllung von 1 TB Daten in einem Cluster mit 175 Knoten in etwa drei Stunden abgeschlossen.
SELECT
SPLIT(_key, "#")[SAFE_OFFSET(0)] AS advertiser_id,
count(*) AS count,
sum(cast(cast(data['spend_usd'] as string) as int64)) as sum_spend
FROM `$0`
GROUP BY advertiser_id
Da Bigtable linear skaliert, verarbeitet ein Cluster mit 175 Knoten 2 TB Daten in etwa sechs Stunden und 10 TB in etwa 30 Stunden, vorausgesetzt, die Daten haben eine ähnliche Form. Um die für die anfängliche Befüllung erforderliche Zeit zu verkürzen, können Sie Ihrem Cluster vorübergehend weitere Knoten hinzufügen oder, wenn Sie Autoscaling verwenden, die maximale Anzahl von Knoten vorübergehend erhöhen.
Speicher
Für jede kontinuierliche materialisierte Ansicht speichert Bigtable Folgendes:
- Die Daten in der kontinuierlichen materialisierten Ansicht
- Zwischenspeicher
Wie jede Bigtable-Tabelle ist eine kontinuierliche materialisierte Ansicht in allen Clustern der Instanz vorhanden, die sie enthält. Die Cluster in Ihrer Instanz müssen genügend Knoten haben, um die Quelltabelle und alle kontinuierlichen materialisierten Ansichten zu speichern, die auf der Tabelle basieren. Mit Autoscaling können Ihre Cluster je nach Speicherbedarf hoch- oder herunterskaliert werden.
Eine kontinuierliche materialisierte Ansicht muss in derselben Instanz wie die Quelltabelle erstellt werden, auch wenn der Speicher für die kontinuierliche materialisierte Ansicht von der Quelltabelle getrennt ist.
Speicher für kontinuierliche materialisierte Ansichten
Eine kontinuierliche materialisierte Ansicht enthält Daten, die aus der SQL-Abfrage stammen, auf der die kontinuierliche materialisierte Ansicht basiert. Das bedeutet, dass sie aggregierte Werte enthält, die durch Aggregationsklauseln in der SQL-Abfrage definiert werden, und nicht aggregierte Werte, die den Gruppierungsschlüssel definieren.
Zwischenspeicher
Um die Synchronisierung einer kontinuierlichen materialisierten Ansicht mit ihrer Quelltabelle zu unterstützen, verwendet Bigtable Zwischenspeicher, um Kopien der Daten zu speichern, die für die inkrementelle Aktualisierung der kontinuierlichen materialisierten Ansicht erforderlich sind.
Die Datenmenge im Zwischenspeicher entspricht in etwa der Datenmenge, die in der Quelltabelle gescannt wird, um das Ergebnis der SQL-Abfrage zu generieren, die die kontinuierliche materialisierte Ansicht definiert. Wenn Ihre Abfrage beispielsweise Daten in der gesamten Tabelle aggregiert, speichert Bigtable die gesamte Tabelle im Zwischenspeicher. Eine kontinuierliche materialisierte Ansicht, die auf einer Abfrage bestimmter Zeilenschlüsselbereiche oder Spalten basiert, speichert nur diese Zeilen oder Spalten im Zwischenspeicher.
Der Zwischenspeicher bleibt während der gesamten Lebensdauer der kontinuierlichen materialisierten Ansicht bestehen, um inkrementelle Aktualisierungen der Ansicht effizient zu unterstützen und Löschungen aus der Quelltabelle an die kontinuierliche materialisierte Ansicht weiterzugeben. Sie können die Daten im Zwischenspeicher nicht lesen. Informationen zur Speichernutzung des Zwischenspeichers finden Sie unter Messwerte für kontinuierliche materialisierte Ansichten.
Replikation
In Instanzen, die Replikation verwenden, werden kontinuierliche materialisierte Ansichten nicht auf dieselbe Weise wie Tabellen repliziert. Stattdessen verarbeitet jeder Cluster in einer Instanz die kontinuierliche materialisierte Ansicht unabhängig voneinander und verwendet dabei eine eigene Kopie der Quelltabelle. Das bedeutet beispielsweise, dass Daten, die in eine Quelltabelle in Cluster A geschrieben werden, in die Tabelle in Cluster B und dann in die kontinuierliche materialisierte Ansicht in Cluster B repliziert werden.
Kosten
Für die Verwendung von kontinuierlichen materialisierten Ansichten fallen keine Kosten pro Ressource an. Für die Erstellung und Synchronisierung von kontinuierlichen materialisierten Ansichten sind jedoch Verarbeitung und Speicher erforderlich, die zu den Standardpreisen in Rechnung gestellt werden. Wenn Sie eine kontinuierliche materialisierte Ansicht erstellen, können Sie mit folgenden Kostensteigerungen rechnen:
- Speicher : Ihnen werden die Kosten für das Speichern der Daten in der kontinuierlichen materialisierten Ansicht und für den Zwischenspeicher in Rechnung gestellt. Weitere Informationen finden Sie unter Speicher.
- Compute : Für die laufende Synchronisierung der Quelltabelle und der kontinuierlichen materialisierten Ansicht ist CPU-Verarbeitung erforderlich. Ihre Cluster benötigen möglicherweise mehr Knoten, um die zusätzliche Hintergrundarbeit zu bewältigen.
Gleichzeitig kann es zu einer Verringerung der Verarbeitung in der Quelltabelle kommen, z. B. wenn Sie keine Bereichsscans der Daten mehr durchführen, um wiederholte Berechnungen und andere weniger effiziente Abfragen auszuführen. Außerdem müssen Sie möglicherweise keine Pipelinejobs mehr ausführen, z. B. Dataflow oder Spark, um Quelldaten zu aggregieren und wieder in Bigtable zu schreiben.
Weitere Informationen zu den Preisen finden Sie unter Bigtable Preise. Messwerte, mit denen Sie die Nutzung Ihrer kontinuierlichen materialisierten Ansicht beobachten können, finden Sie unter Messwerte.
Messwerte
Eine kontinuierliche materialisierte Ansicht meldet mehrere wichtige Messwerte an Cloud Logging, mit denen Sie Ihre kontinuierlichen materialisierten Ansichten beobachten können.
| Messwert | Beschreibung |
|---|---|
materialized_view/max_delay |
Obergrenze der Verarbeitungsverzögerung für die kontinuierliche materialisierte Ansicht |
materialized_view/storage |
Für den Speicher der kontinuierlichen materialisierten Ansicht verwendete Datenmenge in Byte |
materialized_view/intermediate_storage |
Für die Zwischenverarbeitung der kontinuierlichen materialisierten Ansicht verwendete Datenmenge in Byte |
table/materialized_view_intermediate_storage |
Für die Zwischenverarbeitung von kontinuierlichen materialisierten Ansichten, die für diese Tabelle definiert wurden, verwendete Datenmenge |
materialized_view/user_errors |
Anzahl der Fehler aus Nutzerdaten für die kontinuierliche materialisierte Ansicht. Nutzerfehler verhindern, dass Daten an die Ansicht weitergegeben werden. |
materialized_view/system_errors |
Anzahl der Fehler aus dem System für die kontinuierliche materialisierte Ansicht |
Sie können auch viele Bigtable-Tabellenmesswerte verwenden, um eine kontinuierliche materialisierte Ansicht zu beobachten. Verwenden Sie dazu die ID der kontinuierlichen materialisierten Ansicht anstelle der Tabellen-ID. Insbesondere sind kontinuierliche materialisierte Ansichten in
der Aufschlüsselung für CPU-Messwerte enthalten, was
Ihnen helfen kann, ihre Auswirkungen zu verstehen. Bigtable-Messwerte für Anfragen pro Sekunde, Latenz und Durchsatz werden generiert, wenn Sie eine kontinuierliche materialisierte Ansicht mit der ReadRows-Methode der Data API lesen. Weitere
Informationen finden Sie unter Messwerte.
Informationen zu den ersten Schritten mit Cloud Logging finden Sie unter Übersicht über das Abfragen und Anzeigen von Logs.
Beschränkungen
- Sie können bis zu fünf kontinuierliche materialisierte Ansichten pro Tabelle erstellen. Bei Bedarf können Sie eine Erhöhung dieses Limits über Cloud Customer Care anfordern.
- Wenn Sie eine Ansicht ohne Angabe von
_keyerstellen, dürfen die ausgewählten Spalten in der Quelltabelle nichtNULLsein. Weitere Informationen finden Sie unter Zeilenschlüssel, die durch die Anweisung definiert werden.GROUP BY - Sie können die SQL-Abfrage, die eine kontinuierliche materialisierte Ansicht definiert, nicht ändern. Sie müssen die kontinuierliche materialisierte Ansicht löschen und eine neue mit Ihren Änderungen erstellen.
- Sie können keine kontinuierliche materialisierte Ansicht einer anderen kontinuierlichen materialisierten Ansicht oder einer logischen Ansicht erstellen.
- Sie können keine Richtlinien für die automatische Speicherbereinigung für eine kontinuierliche materialisierte Ansicht konfigurieren. Alle Datenaufbewahrungsfristen unterliegen den Richtlinien für die automatische Speicherbereinigung für die Quelltabelle. Die automatische Speicherbereinigung der Quelle wird automatisch in der kontinuierlichen materialisierten Ansicht berücksichtigt.
Nächste Schritte
- Abfrage für kontinuierliche materialisierte Ansichten
- Kontinuierliche materialisierte Ansichten erstellen und verwalten
- Asynchronen sekundären Index erstellen
- Best Practices für Schemadesign
- Verteiltes Zählen in Bigtable