Einführung in materialisierte Ansichten
Materialisierte Ansichten in BigQuery sind vorab berechnete Tabellen, die die Abfrageleistung optimieren und die Ausführungskosten für häufig ausgeführte, vorhersehbare Abfragen senken. Durch das regelmäßige Speichern der Ergebnisse einer Abfrage lösen materialisierte Ansichten Probleme mit der Abfragelatenz und hohen Scankosten, die beim wiederholten Abfragen großer Datasets mit vorhersehbaren Aggregationsmustern auftreten. Durch das automatische Zusammenführen vorab berechneter Daten mit den letzten Änderungen in den Basistabellen garantieren materialisierte Ansichten aktuelle Abfrageergebnisse, ohne dass manuelle Datenpipelines erforderlich sind.
Dieses Dokument richtet sich an Data Engineers, Datenbankadministratoren und Business Intelligence (BI)-Entwickler, die leistungsstarke Analysepipelines entwerfen. Um materialisierte Ansichten erfolgreich zu implementieren, sollten Sie mit den BigQuery-Datasetstrukturen, GoogleSQL-Aggregationsfunktionen und Abfragekostenstrukturen vertraut sein.
Vorteile von materialisierten Ansichten
In den folgenden Anwendungsfällen wird der Wert von materialisierten Ansichten erläutert:
- Daten vorverarbeiten. Verbessern Sie die Abfrageleistung, indem Sie Aggregate, Filter, Joins und Cluster vorbereiten.
- Dashboard-Beschleunigung. Unterstützen Sie BI-Tools wie Looker, die häufig dieselben aggregierten Messwerte abfragen, z. B. täglich aktive Nutzer.
- Echtzeitanalysen für große Streams. Bieten Sie schnellere Antworten auf Tabellen, die Streamingdaten mit hoher Geschwindigkeit empfangen.
- Kostenverwaltung. Reduzieren Sie die Kosten für wiederholte, teure Abfragen für große Datasets.
Wichtige Merkmale
Materialisierte Ansichten haben folgende Hauptmerkmale:
- Keinerlei Wartung erforderlich. BigQuery berechnet materialisierte Ansichten im Hintergrund vor, wenn sich Basistabellen ändern. BigQuery fügt materialisierten Ansichten automatisch inkrementelle Datenänderungen aus Basistabellen hinzu, ohne dass der Nutzer eingreifen muss.
Aktuelle Daten. Materialisierte Ansichten geben aktuelle Daten zurück. Wenn Änderungen an Basistabellen die materialisierte Ansicht ungültig machen, liest BigQuery die Daten direkt aus den Basistabellen. Wenn die Änderungen an den Basistabellen die materialisierte Ansicht nicht entwerten, liest BigQuery die restlichen Daten aus der materialisierten Ansicht und nur die Änderungen aus den Basistabellen.
Das folgende Diagramm zeigt die Logik, die zum Zusammenführen von Echtzeitdatenänderungen verwendet wird:
Intelligente Feinabstimmung. Wenn ein Teil einer Abfrage gegen eine Basistabelle durch die Abfrage der materialisierten Ansicht gelöst werden kann, leitet BigQuery die Abfrage um, um die materialisierte Ansicht für eine bessere Leistung und Effizienz zu verwenden. Informationen dazu, wie und wann die intelligente Feinabstimmung Abfragen verbessern kann, finden Sie unter Materialisierte Ansichten verwenden.
Das folgende Diagramm zeigt den Workflow für die Abfrageumleitung bei der intelligenten Feinabstimmung:
Arten von materialisierten Ansichten
Es gibt zwei grundlegende Arten von materialisierten Ansichten:
- Inkrementelle materialisierte Ansichten unterstützen eine begrenzte Anzahl von Funktionen. Weitere Informationen zur unterstützten SQL-Syntax für materialisierte Ansichten finden Sie unter Materialisierte Ansichten erstellen. Nur inkrementelle materialisierte Ansichten können die intelligente Feinabstimmung nutzen.
- Nicht inkrementelle materialisierte Ansichten unterstützen die meisten Syntaxen, die von inkrementellen materialisierten Ansichten nicht unterstützt werden.
Wenn Sie materialisierte Ansichten erstellen, können Sie in BigQuery standardmäßig nur Ansichten erstellen, die auf inkrementellen Abfragen basieren. Wenn Sie eine nicht inkrementelle Ansicht erstellen möchten, können Sie in der Definition der materialisierten Ansicht allow_non_incremental_definition = true angeben.
Welche Art von materialisierter Ansicht am besten geeignet ist, hängt von Ihrer Situation ab. In der folgenden Tabelle werden die Funktionen von inkrementellen und nicht inkrementellen materialisierten Ansichten verglichen:
| Kategorie | Inkrementell | Nicht inkrementell |
|---|---|---|
| Abfrage wird unterstützt | Begrenzt | Die meisten Abfragen |
| Wartung | Kann die Kosten für häufig verwendete Abfragen senken. Informationen zum Aktualisieren von materialisierten Ansichten finden Sie unter inkrementelle Aktualisierungen. | Bei jeder Aktualisierung wird die vollständige Abfrage ausgeführt. |
| Unterstützung für intelligente Feinabstimmung | Für die meisten Ansichtsabfragen unterstützt. | Nein |
| Immer aktuelle Ergebnisse | Unterstützt. Inkrementelle Ansichten geben aktuelle Abfrageergebnisse zurück, auch wenn sich die Basistabellen seit der letzten Aktualisierung geändert haben. | Nein |
Autorisierte materialisierte Ansichten
Sie können eine autorisierte materialisierte Ansicht erstellen, um eine Teilmenge der Daten aus einem Quelldataset für eine Ansicht in einem sekundären Dataset freizugeben. Anschließend können Sie diese Ansicht für bestimmte Nutzer und Gruppen (Principals) freigeben. Principals können die Daten abfragen, die Sie in einer Ansicht bereitstellen, aber nicht direkt auf das Quelldataset zugreifen.
Autorisierte Ansichten und autorisierte materialisierte Ansichten werden auf dieselbe Weise autorisiert. Weitere Informationen finden Sie unter Autorisierte Ansichten.
Interaktion mit anderen BigQuery-Features
Die folgenden BigQuery-Features funktionieren transparent mit materialisierten Ansichten:
Erklärung durch Abfrageplan. Der Abfrageplan gibt an, welche materialisierten Ansichten gescannt wurden (sofern vorhanden) und wie viele Byte aus der materialisierten Ansicht und den Basistabellen insgesamt gelesen werden.
Abfrage-Caching. Die Ergebnisse einer Abfrage, die von BigQuery mit einer materialisierten Ansicht neu geschrieben werden, können im Rahmen der üblichen Beschränkungen (Verwendung deterministischer Funktionen, kein Streaming in die Basistabellen usw.) im Cache gespeichert werden.
Kosteneinschränkung. Wenn Sie einen Wert für die maximal in Rechnung gestellten Byte festlegen und eine Abfrage Daten über dieses Limit hinaus liest, schlägt die Abfrage fehl, ohne dass dafür Kosten anfallen. Dies ist unabhängig davon, ob für die Abfrage materialisierte Ansichten, die Basistabellen oder beides verwendet wurde.
Kostenschätzung mit Probelauf. Bei einem Probelauf wird die Logik für das Neuschreiben der Abfrage anhand der verfügbaren materialisierten Ansichten wiederholt und eine Kostenschätzung bereitgestellt. Mit dieser Funktion können Sie testen, ob eine bestimmte Abfrage materialisierte Ansichten verwendet.
Regionenübergreifende Datenreplikation. Materialisierte Ansichten können für BigQuery-Tabellen erstellt werden, für die die regionenübergreifende Replikation aktiviert ist, aber nur in der primären Region. Wenn Sie die sekundäre Region verwenden, kann die folgende Fehlermeldung auftreten:
The dataset replica of the cross region dataset {PROJECT}:{DATASET} in region {REGION} is read-only because it's not the primary replica.
Zusätzlich zu diesen Funktionen können Sie materialisierte Ansichten für Tabellen mit bestimmten Funktionen erstellen, wie in den folgenden Abschnitten beschrieben.
Tabellen mit aktivem Change Data Capture
Sie können materialisierte Ansichten für Tabellen mit aktivem
Change Data Capture (CDC) erstellen. Dies ist ein Muster, das verwendet wird,
um Datenbank- oder Tabellenänderungen kontinuierlich aufzunehmen. Diese materialisierten Ansichten funktionieren wie materialisierte Ansichten für BigQuery-Tabellen, einschließlich der Vorteile einer automatischen Aktualisierung. Materialisierte Ansichten können keine
Merge-Abfragen zur Laufzeit ausführen,
daher müssen Sie materialisierte Ansichten mit einem ausreichend hohen Wert für max_staleness konfigurieren, um
Merge-Jobs zur Laufzeit zu vermeiden. Weitere Informationen finden Sie unter
Einschränkungen von materialisierten Ansichten für Tabellen mit aktivem Change Data Capture.
Preise für materialisierte Ansichten
Für materialisierte Ansichten fallen auf folgende Weise Kosten an:
- Abfragen von materialisierten Ansichten.
- Pflegen von materialisierten Ansichten, z. B. wann materialisierte Ansichten aktualisiert werden. Die Kosten für die automatische Aktualisierung werden dem Projekt in Rechnung gestellt, in dem sich die Ansicht befindet. Die Kosten für die manuelle Aktualisierung werden dem Projekt in Rechnung gestellt, in dem der manuelle Aktualisierungsjob ausgeführt wird. Weitere Informationen zur Kostenkontrolle für Wartungen finden Sie unter Jobwartung aktualisieren.
- Speichern von Tabellen materialisierter Ansichten.
In der folgenden Tabelle sind die Preisbestandteile für materialisierte Ansichten aufgeführt:
| Komponente | On-Demand-Preise | Kapazitätsbasierte Preise |
|---|---|---|
| Abfragen | Byte, die von materialisierten Ansichten verarbeitet werden, und alle erforderlichen Teile der Basistabellen.1 | Slots werden während der Abfrage verbraucht. |
| Wartung | Während der Aktualisierung verarbeitete Byte. | Slots werden während der Aktualisierung benötigt. |
| Speicher | In materialisierten Ansichten gespeicherte Byte. | In materialisierten Ansichten gespeicherte Byte. |
1 Nach Möglichkeit liest BigQuery nur die Änderungen seit der letzten Aktualisierung der Ansicht. Weitere Informationen finden Sie unter Inkrementelle Aktualisierungen.
Details zu den Speicherkosten
Die Art und Weise, wie BigQuery bestimmte Aggregatwerte speichert, wirkt sich auf die Berechnung der Speichergröße aus. Bei aggregierten Werten des Typs AVG, ARRAY_AGG und APPROX_COUNT_DISTINCT in einer materialisierten Ansicht wird der endgültige Wert nicht direkt gespeichert. BigQuery speichert stattdessen
intern eine materialisierte Ansicht als Zwischen
skizze. Diese wird verwendet, um den endgültigen Wert zu generieren.
Sehen Sie sich als Beispiel eine materialisierte Ansicht an, die mit dem folgenden Befehl erstellt wurde:
CREATE MATERIALIZED VIEW project-id.my_dataset.my_mv_table AS SELECT date, AVG(net_paid) AS avg_paid FROM project-id.my_dataset.my_base_table GROUP BY date
Während die Spalte avg_paid als NUMERIC oder FLOAT64 angezeigt wird, wird sie intern als BYTES gespeichert. Der Inhalt ist dabei eine Zwischenskizze in einem proprietären Format. Für die Berechnung der Datengröße,
wird die Spalte als BYTES behandelt.
Workflow für die ersten Schritte
Die Einrichtung von materialisierten Ansichten umfasst den folgenden Workflow:
- Abfrage entwerfen und überprüfen. Entwerfen Sie Ihre Aggregationsabfrage gemäß den GoogleSQL-Richtlinien.
- Materialisierte Ansicht erstellen. Führen Sie die
CREATE MATERIALIZED VIEWAnweisung mit der Google Cloud Console, dem bq-Befehlszeilentool oder der BigQuery API aus. - Intelligente Feinabstimmung ausführen. BigQuery leitet Abfragen für die Basistabelle automatisch um, um die materialisierte Ansicht zu verwenden. Für Abfragen oder Anwendungen müssen keine Ziele neu geschrieben werden.
Informationen zum Erstellen finden Sie unter Materialisierte Ansichten erstellen.