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:

  • Flexible Aufnahme:

    • Java-SDK: Verwendet das neue snowpipe-streaming SDK, mit einem Rust-basierten Client-Kern für verbesserte clientseitige Leistung und geringeren Ressourcenverbrauch.

    • REST API: Bietet einen direkten Aufnahmepfad, der die Integration für leichtgewichtige Workloads, IoT-Gerätedaten und Edge-Implementierungen vereinfacht.

  • 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.

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 das SDK unter Linux verwenden, muss auf Ihrem System mindestens die Version 2.18 der glibc-Bibliothek installiert sein.

  • Bereitstellungsumgebung: Es werden nur AWS-Implementierungen unterstützt.

  • Privater Link: PrivateLink wird nicht 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 für leere Nutzlasten: Das SDK und die REST API unterstützen nicht die Übermittlung von Rowsets, die eine leere Nutzlast enthalten. Die Einreichungen müssen mindestens eine Datenzeile enthalten, um erfolgreich aufgenommen zu werden.

  • Sichtbarkeit von Fehlermeldungen: Während Fehlermeldungen in der Kanalstatus-Antwort verfügbar sind, werden sie in der neuen Kanalverlaufsansicht nicht angezeigt.