Snowpipe Streaming : architecture à haute performance¶
L’architecture haute performance de Snowpipe Streaming est conçue pour les organisations modernes à forte intensité de données qui exigent des informations en temps quasi réel. Cette architecture de nouvelle génération fait considérablement progresser le débit, l’efficacité et la flexibilité pour l’ingestion en temps réel dans Snowflake.
Pour obtenir des informations sur l’architecture classique, consultez Snowpipe Streaming - Architecture classique. Pour découvrir les différences entre le SDK classique et le SDK hautes performances, consultez Comparaison entre le SDK classique et le SDK hautes performances.
Exigences du logiciel¶
Java
Nécessite Java 11 ou supérieur.
- Référentiel SDK Maven : SDK Java Snowpipe Streaming 
- Référence d’API : Référence du SDK Java 
Python
Requiert la version 3.9 de Python ou une version ultérieure.
- Référentiel SDK PyPI : SDK Python Snowpipe Streaming 
- Référence d’API : Référence du SDK Python 
Fonctionnalités clés¶
- Débit et temps de latence : - Débit élevé : Conçu pour prendre en charge des vitesses d’ingestion allant jusqu’à 10 GB/s par table. 
- Informations en temps quasi réel : Réalise des temps de latence de bout en bout entre l’acquisition et la requête dans un délai de 5 à 10 secondes. 
 
- Facturation : - Facturation simplifiée, transparente et basée sur le débit. Pour plus d’informations, voir Architecture haute performance de Snowpipe Streaming : Comprendre vos coûts. 
 
- Ingestion flexible : - SDK Java et SDK Python : Utilisez le nouveau SDK - snowpipe-streamingavec un noyau client basé sur Rust pour améliorer les performances côté client et réduire l’utilisation des ressources.
- REST API : Fournit un chemin d’ingestion direct, simplifiant l’intégration pour les charges de travail légères, les données des appareils de l’IoT et les déploiements de bord. 
 - Note - Nous vous recommandons de commencer par le SDK Snowpipe Streaming sur l’API REST pour bénéficier de l’amélioration des performances et de l’expérience de démarrage. 
- Optimisation du traitement des données : - Transformations en vol : Prise en charge du nettoyage et du remodelage des données pendant l’ingestion à l’aide de la syntaxe de commande COPY dans l’objet PIPE. 
- Amélioration de la visibilité des canaux : Meilleure connaissance du statut de l’ingestion, principalement grâce à la vue de l’historique du canal dans Snowsight et à une nouvelle API - GET_CHANNEL_STATUS.
 
Cette architecture est recommandée pour :
- L’ingestion cohérente de charges de travail en flux à haut volume. 
- Des analyses et des tableaux de bord en temps réel pour une prise de décision rapide. 
- L’intégration efficace des données provenant des appareils IoT et des déploiements en périphérie. 
- Les organisations qui recherchent des prix transparents, prévisibles et basés sur le débit pour l’ingestion de flux. 
Nouveaux concepts : L’objet PIPE¶
Tout en héritant des concepts de base tels que les canaux et les jetons de décalage de Snowpipe Streaming Classic, cette architecture introduit l’objet PIPE en tant qu’élément central.
L’objet PIPE est un objet Snowflake nommé qui sert de point d’entrée et de niveau de définition pour toutes les données en flux reçues. Il fournit les éléments suivants :
- Définition du traitement des données : Définit la manière dont les données de flux sont traitées avant d’être validées dans la table cible, y compris la mise en mémoire tampon côté serveur pour les transformations ou le mappage de schémas. 
- Activation des transformations : Permet de manipuler les données en temps réel (par exemple, filtrage, réorganisation des colonnes, expressions simples) en incorporant une syntaxe de transformation des commandes COPY. 
- Prise en charge des fonctionnalités de table : Gère l’ingestion dans des tables avec des clés de clustering définies, des colonnes de valeurs DEFAULT et des colonnes AUTOINCREMENT (ou IDENTITY). 
- Gestion des schémas : Aide à définir le schéma attendu des données de flux entrantes et de son mappage vers les colonnes de la table cible, permettant ainsi la validation du schéma côté serveur.   
Pré-clustering de données lors de l’ingestion¶
Snowpipe Streaming peut regrouper les données en vol pendant l’ingestion, ce qui améliore les performances des requêtes sur vos tables cibles. Cette fonctionnalité trie vos données directement lors de l’ingestion avant leur validation. Le tri de vos données de cette manière optimise l’organisation pour des requêtes plus rapides.
Pour tirer parti du pré-clustering, votre table cible doit comporter des clés de clustering définies. Vous pouvez ensuite activer cette fonctionnalité en définissant le paramètre CLUSTER_AT_INGEST_TIME sur TRUE dans votre instruction COPY INTO lors de la création ou du remplacement de votre canal Snowpipe Streaming.
Pour plus d’informations, voir CLUSTER_AT_INGEST_TIME. Cette fonctionnalité n’est disponible que sur l’architecture hautes performances.
Important
Lorsque vous utilisez la fonctionnalité de pré-clustering, assurez-vous de ne pas désactiver la fonctionnalité de clustering automatique sur la table de destination. La désactivation du clustering automatique peut entraîner une dégradation des performances des requêtes au fil du temps.
Différences par rapport à Snowpipe Streaming Classic¶
Pour les utilisateurs habitués à l’architecture classique, l’architecture haute performance apporte les modifications suivantes :
- Nouveau SDK et nouvelles APIs : Exige le nouveau SDK - snowpipe-streaming(SDK Java et API REST), ce qui nécessite des mises à jour du code client pour la migration.
- Exigence de l’objet PIPE : L’ensemble de l’ingestion des données, de la configuration (par exemple, les transformations) et de la définition des schémas est géré par l’objet PIPE côté serveur, ce qui constitue un changement par rapport à la configuration plus axée sur le client de Classic. 
- Association de canaux : Les applications clientes ouvrent des canaux sur un objet PIPE spécifique, et non directement sur une table cible. 
- Validation du schéma : Passe d’une application principalement côté client (SDK classique) à une application côté serveur par Snowflake, basée sur l’objet PIPE. 
- Exigences en matière de migration : Exige de modifier le code de l’application client pour le nouveau SDK et de définir les objets PIPE dans Snowflake.