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 über die klassische Architektur finden Sie unter Snowpipe Streaming – Klassische Architektur. Für die Unterschiede zwischen dem klassischen SDK und dem leistungsstarken SDK siehe Vergleich zwischen dem klassischen SDK und dem leistungsstarken SDK.
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-streaming
SDK, das über einen Rust-basierten Client-Core für verbesserte clientseitige Performance und geringeren Ressourcenverbrauch verfügt.REST API: Bietet einen direkten Aufnahmepfad, der die Integration für leichtgewichtige Workloads, IoT-Gerätedaten und Edge-Implementierungen vereinfacht.
Bemerkung
Wir empfehlen Ihnen, das
snowpipe-streaming
SDK als primäre und standardmäßige Wahl zu verwenden. Die REST API ist nicht für Szenarien mit hohem Durchsatz optimiert.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_STATUS
API.
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, einschließlich der serverseitigen Pufferung für Transformationen oder Schema-Zuordnungen.
Ermöglicht Transformationen: Ermöglicht die schwebende Datenmanipulation (z. B. Filtern, Umordnen von Spalten, einfache Ausdrücke) durch die Integration der COPY-Befehlssyntax für Transformationen.
Unterstützung von Tabellen-Features: Ermöglicht die Aufnahme von Tabellen mit definierten Gruppierungsschlüsseln, DEFAULT-Wertespalten und AUTOINCREMENT- (oder IDENTITY-) Spalten.
Schema-Management: Hilft bei der Definition des erwarteten Schemas der eingehenden Streaming-Daten und ihrer Zuordnung zu den Spalten der Zieltabelle und ermöglicht eine serverseitige Schemaüberprüfung.
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.
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-streaming
SDK (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.
Einschränkungen und Hinweise¶
Snowpipe ON_ERROR-Option: Die Option STREAMING Snowpipe ON_ERROR unterstützt nur CONTINUE.
Unterstützte Architekturen (Rust Core): Arm64 Mac, Windows, Arm64-linux und X86_64-linux.
Linux-Anforderungen: Wenn Sie die das SDK unter Linux verwenden, muss auf Ihrem System mindestens die Version 2.28 der glibc-Bibliothek installiert sein.
Bereitstellungsumgebung: Es werden nur AWS-Implementierungen unterstützt.
Geclusterte Tabellen (Aufnahme): Obwohl geclusterte Tabellen Zieltabellen sein können, wird während des Aufnahme-Prozesses kein Clustering durchgeführt.
Replikation: Replikation wird nicht unterstützt.
ALTER PIPE SET PIPE_EXECUTION_PAUSED = true
: Während openChannel bei einer Unterbrechung fehlschlägt, wird die Aufnahme möglicherweise nicht sofort beendet.Autorisierungsrolle: Die Standardrolle wird für die Autorisierung verwendet. Die Möglichkeit, andere Rollen anzugeben, ist für die Zukunft geplant.
Zeitzone: Das SDK verwendet automatisch UTC. Die Benutzer können diese Einstellung nicht ändern.
Einschränkung bei leerer Nutzlast: Das SDK und die REST API unterstützen nicht die Übermittlung von Rowsets, die eine leere Nutzlast enthalten. Die Übermittlungen müssen mindestens eine Datenzeile enthalten, um erfolgreich aufgenommen zu werden.
Sichtbarkeit von Fehlermeldungen: Obwohl Fehlermeldungen in der Kanalstatusantwort verfügbar sind, werden sie in der neuen Ansicht des Kanalverlaufs nicht angezeigt.