Snowpipe Streaming: Hochleistungsarchitektur¶
Die High-Performance-Architektur für Snowpipe Streaming wurde für moderne, datenintensive Unternehmen entwickelt, die Einblicke in nahezu Echtzeit benötigen. Diese Architektur der nächsten Generation verbessert den Durchsatz, die Effizienz und die Flexibilität für die Echtzeit-Aufnahme in Snowflake erheblich.
Informationen zur klassischen Architektur finden Sie unter Snowpipe Streaming – Klassische Architektur. Erläuterungen zu den Unterschieden zwischen dem klassischen SDK und dem leistungsstarken SDK finden Sie unter Vergleich zwischen klassischem SDK und leistungsstarkem SDK.
Software-Anforderungen¶
Java
Erfordert Java 11 oder höher.
SDK-Maven-Repository: Snowpipe Streaming Java SDK
API-Referenz: Java SDK-Referenz
Python
Erfordert Python Version 3.9 oder höher.
SDK-PyPI-Repository: Snowpipe Streaming Python SDK
API-Referenz: Python-SDK-Referenz
Wichtige Funktionen¶
Durchsatz und Latenzzeit:
Hoher Durchsatz: Entwickelt, um Aufnahmegeschwindigkeiten von bis zu 10 GB/s pro Tabelle zu unterstützen.
Einblicke fast in Echtzeit: Erzielt End-to-End-Latenzen von der Aufnahme bis zur Abfrage innerhalb von 5 bis 10 Sekunden.
Abrechnung:
Vereinfachte, transparente, durchsatzbasierte Abrechnung. Weitere Informationen dazu finden Sie unter Snowpipe Streaming High-Performance-Architektur: Ihre Kosten verstehen.
Flexible Aufnahme:
Java SDK und Python SDK: Verwenden Sie das neue
snowpipe-streamingSDK, das über einen Rust-basierten Client-Core für verbesserte clientseitige Performance und geringeren Ressourcenverbrauch verfügt.REST API: Bietet einen direkten Datenaufnahmepfad, der die Integration für einfache Workloads, IoT-Gerätendaten und Edge-Bereitstellungen vereinfacht.
Bemerkung
Wir empfehlen, mit dem Snowpipe Streaming-SDK über die REST API zu beginnen, um von der verbesserten Leistung und dem einfacheren Einstieg zu profitieren.
Optimierte Datenverarbeitung:
Schwebende Transformationen: Unterstützt die Datenbereinigung und -umformung während der Aufnahme mit der COPY-Befehlssyntax innerhalb des PIPE-Objekts.
Verbesserte Kanalsichtbarkeit: Verbesserter Einblick in den Aufnahmestatus, vor allem durch die Ansicht Kanalverlauf in Snowsight und eine neue
GET_CHANNEL_STATUSAPI.
Diese Architektur wird empfohlen für:
Konsistente Aufnahme von Streaming-Workloads mit hohem Volumen.
Echtzeit-Analysen und Dashboards für zeitkritische Entscheidungen.
Effiziente Integration von Daten aus IoT-Geräten und Edge-Implementierungen.
Unternehmen, die transparente, vorhersehbare und durchsatzbasierte Preise für die Streaming-Aufnahme suchen.
Neue Konzepte: Das PIPE-Objekt¶
Während Kernkonzepte wie Kanäle und Offset-Tokens von Snowpipe Streaming Classic übernommen wurden, führt diese Architektur das PIPE-Objekt als zentrale Komponente ein.
Das PIPE-Endpunkt ist ein benanntes Snowflake-Objekt, das als Einstiegspunkt und Definitionsschicht für alle eingelesenen Streaming-Daten dient. Es bietet Folgendes:
Definition der Datenverarbeitung: Definiert, wie Streaming-Daten verarbeitet werden, bevor sie in die Zieltabelle übertragen werden. Dies schließt die serverseitige Pufferung für Transformationen oder Schemazuordnung ein.
Aktivieren von Transformationen: Ermöglicht eine Datenmanipulation während der Übertragung (z. B. Filtern, Neuordnen von Spalten, einfache Ausdrücke) durch Einbinden einer COPY-Syntax für die Befehlstransformation.
Unterstützte Tabellenfunktionen: Verarbeitet die Datenaufnahme in Tabellen mit definierten Clusteringschlüsseln, DEFAULTwert-Spalten und AUTOINCREMENT- (oder IDENTITY-)Spalten.
Verwalten von Schemas: Hilft bei der Definition des erwarteten Schemas der eingehenden Streaming-Daten und dessen Zuordnung zu Zieltabellenspalten und ermöglicht so eine serverseitige Schemavalidierung.
Vorab-Clustering von Daten während der Aufnahme¶
Snowpipe Streaming kann Daten während der Aufnahme clustern, was die Abfrageleistung der Zieltabellen verbessert. Dieses Feature sortiert die Daten direkt während der Aufnahme, bevor sie übertragen werden. Wenn Sie die Daten auf diese Weise sortieren, wird die Organisation für schnellere Abfragen optimiert.
Um das Vorab-Clustering nutzen zu können, müssen für Ihre Zieltabelle Gruppierungsschlüssel definiert sein. Sie können dieses Feature dann aktivieren, indem Sie den Parameter CLUSTER_AT_INGEST_TIME auf TRUE in der COPY INTO-Anweisung festlegen, wenn Sie die Snowpipe Streaming-Pipe erstellen oder ersetzen.
Weitere Informationen dazu finden Sie unter CLUSTER_AT_INGEST_TIME. Dieses Feature ist nur für die High-Performance-Architektur verfügbar.
Wichtig
Wenn Sie das Pre-Clustering-Feature verwenden, müssen Sie sicherstellen, dass Sie das Auto-Clustering-Feature für die Zieltabelle nicht deaktivieren. Das Deaktivieren von Auto-Clustering kann im Laufe der Zeit zu einer Beeinträchtigung der Abfrage führen.
Unterschiede zu Snowpipe Streaming Classic¶
Für Benutzer, die mit der klassischen Architektur vertraut sind, bringt die High-Performance-Architektur die folgenden Änderungen mit sich:
Neue SDK und APIs: Erfordert die neue
snowpipe-streamingSDK (Java-SDK und REST API), was eine Aktualisierung des Client-Codes für die Migration erforderlich macht.PIPE-Objektanforderung: Alle Datenaufnahmen, Konfigurationen (z. B. Transformationen) und Schemadefinitionen werden über das serverseitige PIPE-Objekt verwaltet, eine Abkehr von der eher clientgesteuerten Konfiguration von Classic.
Kanalzuordnung: Client-Anwendungen öffnen Kanäle gegen ein bestimmtes PIPE-Objekt, nicht direkt gegen eine Zieltabelle.
Schema-Validierung: Übergang von der primär clientseitigen (Classic-SDK) zur serverseitigen Durchsetzung durch Snowflake, basierend auf dem PIPE-Objekt.
Anforderungen für die Migration: Es ist erforderlich, den Code der Client-Anwendung für das neue SDK zu ändern und PIPE-Objekte in Snowflake zu definieren.