Abfrageleistung von dynamischen Tabellen¶
In diesem Abschnitt erfahren Sie, wie Sie Ihre Pipeline so gestalten, dass Sie eine gute Abfrage-Performance erzielen. Ihre Daten nehmen verschiedene Formen an, während sie verschiedene Systeme durchlaufen:
Quelldaten: Ursprünglich werden die Daten von realen Personen generiert und in Frontline-Systemen gesammelt. Diese Daten werden dann über ETL-Prozesse in Snowflake aufgenommen.
Rohdaten: Nach der Aufnahme werden die Daten in Snowflake-Tabellen gespeichert, wo sie in eine für die Analyse besser geeignete Form transformiert werden.
Modellierte Daten: Diese Transformationen führen zu einer Reihe von Modellen, die den Verbrauchern vertraute Konzepte für die Analyse präsentieren.
Ihre Pipeline umfasst diese Schritte. Dynamische Tabellen funktionieren in den Transformationsschritten, aber Sie sollten ihre Leistung im Zusammenhang mit Ihrer gesamten Pipeline betrachten.
Erläuterungen zur Materialisierung¶
Die Leistung von Abfragen zur Datenanalyse wird durch das Design und die Implementierung der Transformationen von Rohdaten in modellierte Daten bestimmt. Die Definition dieser Transformationen als eine Menge von Ansichten auf Rohdaten ist zwar technisch korrekt, entspricht aber möglicherweise nicht den Leistungs- und Kostenanforderungen.
Um dieses Problem zu lösen, müssen einige oder alle Datenmodelle materialisiert werden, indem ihre Ergebnisse vorberechnet, für einen schnellen Zugriff gespeichert und auf dem neuesten Stand gehalten werden. Dynamische Tabellen machen diese Materialisierung einfach, aber Sie müssen immer noch entscheiden, welche Ihrer Modelle materialisiert werden sollen.
Grenze der Materialisierung¶
Die Trennung zwischen dem materialisierten und dem nicht materialisierten Teil der Transformation wird als Materialisierungsgrenze bezeichnet. Bei der Entscheidung über die Materialisierungsgrenze sind in der Regel die folgenden Faktoren von Bedeutung:
Verzögerung oder Aktualität: Die Aktualität oder Frische der von Ihnen bereitgestellten Daten, d. h. wie veraltet Ihre Ergebnisse sind. Die Materialisierungsgrenze hat normalerweise keinen großen Einfluss auf diesen Faktor.
Antwortzeit: Die Materialisierung einer größeren Menge Ihrer Pipeline verkürzt die Antwortzeit. Die Aktualität ist immer mindestens so lang wie die Antwortzeit Ihrer Abfragen, kann aber auch viel länger sein.
Kosten: Die Kosten für Ihren Workload sind mit den folgenden Punkten verbunden:
Kosten der Materialisierung: Diese Kosten hängen von der Menge der Daten in den Quellen und der Komplexität der Transformationen ab.
Kosten für Computing der nicht materialisierten Transformationen während der Analyse: Diese Kosten skalieren mit der Anzahl der analytischen Abfragen und deren Komplexität.
Kosten für die Speicherung: Diese Kosten umfassen sowohl die Rohdaten als auch die materialisierten Daten.
Das Materialisieren von mehr modellierten Daten beschleunigt die Antwortzeiten und senkt die Analysekosten, kann aber die Materialisierungskosten erhöhen. Um die beste Materialisierungsgrenze zu finden, müssen die oben genannten Faktoren gegeneinander abgewogen werden. In der Regel können Sie gute Ergebnisse erzielen, indem Sie die geringste Datenmenge materialisieren, die noch Ihren Anforderungen an die Reaktionszeit entspricht.
Materialisierung durchführen¶
Nachdem Sie Ihre Materialisierungsgrenze festgelegt haben, können Sie entsprechend dynamische Tabellen und Ansichten erstellen. Sie können die Leistung der nicht materialisierten Transformationen genau wie jede andere Snowflake-Abfrage optimieren. Nach der Abfrage verhalten sich reguläre und dynamische Tabellen ähnlich, sodass Sie Standardtechniken wie Normalisierung, Voraggregation und Clustering verwenden können, um die Leistung zu steigern.
Weitere Ideen finden Sie in der Checkliste zur Abfrageleistung.