Introduction à Snowpipe

Snowpipe permet de charger les données des fichiers dès qu’elles sont disponibles dans une zone de préparation. Cela signifie que vous pouvez charger des données à partir de fichiers dans des micro-lots, les rendant disponibles aux utilisateurs en quelques minutes, plutôt que d’exécuter manuellement des instructions COPY sur un calendrier pour charger de plus gros lots.

Dans ce chapitre :

Comment fonctionne Snowpipe ?

Snowpipe charge les données des fichiers dès qu’elles sont disponibles dans une zone de préparation. Les données sont chargées conformément à l’instruction COPY définie dans un canal référencé.

Un canal est un objet Snowflake nommé, de première classe, qui contient une instruction COPY utilisée par Snowpipe. L’instruction COPY identifie l’emplacement source des fichiers de données (c.-à-d. une zone de préparation nommée) et une table cible. Tous les types de données sont pris en charge, y compris les types de données semi-structurées tels que JSON et Avro.

Différents mécanismes de détection des fichiers mis en zone de préparation sont disponibles :

Automatisation de Snowpipe à l’aide de la messagerie Cloud

Les chargements de données automatisés exploitent les notifications d’événement pour le stockage dans le Cloud pour informer Snowpipe de l’arrivée de nouveaux fichiers de données à charger. Snowpipe copie les fichiers dans une file d’attente, à partir de laquelle ils sont chargés dans la table cible de manière continue, sans serveur, en fonction de paramètres définis dans un objet de canal spécifié.

Snowflake prend actuellement en charge les types de compte de stockage suivants :

  • Amazon Web Services (AWS)

    • Amazon S3

  • Microsoft Azure

    • Stockage d’objets blob

    • Data Lake Storage Gen2 — Pris en charge en tant que fonctionnalité préliminaire.

    • Usage général v2

Pour plus d’informations, voir Automatisation du chargement continu des données à l’aide de la messagerie Cloud.

Appel des points de terminaison REST de Snowpipe

Votre application cliente appelle un point de terminaison public REST avec une liste de noms de fichiers de données et un nom de canal. Si de nouveaux fichiers de données correspondant à la liste sont découverts dans la zone de préparation et référencés par l’objet de canal, ils sont mis en file d’attente pour le chargement. Les ressources de calcul fournies par Snowflake chargent les données de la file d’attente dans une table Snowflake en fonction des paramètres définis dans le canal.

  • Amazon Web Services (AWS)

    • Amazon S3

  • Google Cloud Platform

    • Stockage Cloud

  • Microsoft Azure

    • Stockage d’objets blob

    • Data Lake Storage Gen2 — Pris en charge en tant que fonctionnalité préliminaire.

    • Usage général v2

Pour plus d’informations, voir Appeler des points de terminaison REST Snowpipe pour charger les données.

En quoi Snowpipe se distingue du chargement de données en masse ?

Cette section décrit brièvement les principales différences entre Snowpipe et un workflow de chargement des données en masse à l’aide de la commande COPY. Des détails supplémentaires sont fournis tout au long de la documentation de Snowpipe.

Authentification

Chargement de données en masse

Repose sur les options de sécurité prises en charge par le client pour l’authentification et le lancement d’une session utilisateur.

Snowpipe

Lorsque vous appelez les points de terminaison REST : Nécessite l’authentification par paire de clés avec jeton Web JSON (JWT). Les JWTs sont signés à l’aide d’une paire de clés publiques/privées avec chiffrement RSA.

Historique de chargement

Chargement de données en masse

Stocké dans les métadonnées de la table cible pour 64 jours. Disponible à la fin de l’instruction COPY en tant que sortie de l’instruction.

Snowpipe

Stocké dans les métadonnées du canal pendant 14 jours. Doit être demandé à Snowflake via un point de terminaison REST, une fonction de table SQL ou une vue ACCOUNT_USAGE.

Important

Pour éviter de recharger des fichiers (et de dupliquer des données), nous vous recommandons de charger des données à partir d’un ensemble spécifique de fichiers en utilisant soit le chargement de données en masse soit Snowpipe mais pas les deux.

Transactions

Chargement de données en masse

Les chargements sont toujours effectués en une seule transaction. Les données sont insérées dans la table à côté de toute autre instruction SQL soumise manuellement par les utilisateurs.

Snowpipe

Les charges sont combinées ou divisées en une ou plusieurs transactions en fonction du nombre et de la taille des lignes de chaque fichier de données. Les lignes de fichiers partiellement chargés (basées sur le paramètre de l’option de copie ON_ERROR) peuvent également être combinées ou divisées en une ou plusieurs transactions.

Ressources de calcul

Chargement de données en masse

Nécessite un entrepôt spécifié par l’utilisateur pour exécuter les instructions COPY.

Snowpipe

Utilise les ressources de calcul fournies par Snowflake.

Coût

Chargement de données en masse

Facturé pour la durée d’activité de chaque entrepôt virtuel.

Snowpipe

Facturé selon les ressources de calcul utilisées dans l’entrepôt de Snowpipe lors du chargement des fichiers.

Ordre de chargement des fichiers de données

Snowflake établit une file d’attente unique pour séquencer les fichiers de données en attente de chargement pour chaque objet de canal. Lorsque de nouveaux fichiers de données sont découverts dans une zone de préparation, Snowpipe les ajoute à la file d’attente. Cependant, plusieurs processus extraient des fichiers de la file d’attente. Par conséquent, bien que Snowpipe charge généralement les fichiers les plus anciens en premier, il n’y a aucune garantie que les fichiers sont chargés dans le même ordre de classement.

Duplication des données

Snowflake utilise des métadonnées de chargement de fichiers associés à chaque objet de canal pour éviter de recharger les mêmes fichiers (et de dupliquer les données) dans une table. Ces métadonnées stockent le chemin (préfixe) et le nom de chaque fichier chargé, et empêchent le chargement de fichiers portant le même nom même s’ils ont été modifiés ultérieurement (c.-à-d. qu’ils portent un eTag différent).

Estimation de la latence de Snowpipe

Étant donné le nombre de facteurs permettant de différencier les charges Snowpipe, il est très difficile pour Snowflake d’estimer la latence. Les formats et les tailles de fichier, ainsi que la complexité des instructions COPY (y compris l’instruction SELECT utilisée pour les transformations), ont tous une incidence sur le temps requis pour le chargement de Snowpipe.

Nous vous suggérons d’effectuer des tests en effectuant un ensemble typique de chargements pour estimer la latence moyenne.

DDL Snowpipe

Pour faciliter la création et la gestion des canaux, Snowflake fournit l’ensemble suivant de commandes DDL spéciales :

De plus, les fournisseurs peuvent afficher, accorder ou révoquer l’accès aux objets de base de données nécessaires pour Snowpipe en utilisant le DDL de contrôle d’accès standard suivant :