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 interroge les notifications d’événements à partir d’une file d’attente. En utilisant les métadonnées de la file d’attente, Snowpipe charge les nouveaux fichiers de données dans la table cible de manière continue et sans serveur, en fonction des paramètres définis dans un objet canal spécifié.

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

Services de stockage Cloud pris en charge

Le tableau suivant indique le service de stockage Cloud pris en charge pour les appels API REST Snowpipe et Snowpipe automatisés à partir de comptes Snowflake hébergés sur chaque plateforme Cloud :

Hôte de compte Snowflake

Amazon S3

Google Cloud Storage

Stockage Microsoft Azure Blob

Microsoft Data Lake Storage Gen2

Microsoft Azure à usage général v2

Amazon Web Services

Google Cloud Platform

Microsoft Azure

Pour plus d’informations, voir Automatisation du chargement continu des données à l’aide de la messagerie Cloud et Présentation des points de terminaison REST Snowpipe pour charger les données.

Notez que les régions gouvernementales des fournisseurs Cloud n’autorisent pas l’envoi de notifications d’événements vers ou depuis d’autres régions commerciales. Pour plus d’informations, voir AWS GovCloud (US) et Azure Government.

Important

Snowflake recommande d’activer le filtrage des événements dans le Cloud pour Snowpipe afin de réduire les coûts, le bruit des événements et la latence. Pour plus d’informations sur la configuration du filtrage des événements pour chaque fournisseur de Cloud, consultez les pages suivantes :

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

Sécurité des canaux

Privilèges de contrôle d’accès

Création de canaux

La création et la gestion de canaux requièrent un rôle avec au minimum les privilèges suivants :

Objet

Privilège

Remarques

Base de données

USAGE

Schéma

USAGE, CREATE PIPE

Définition de la zone de préparation d’un canal

USAGE

Zones de préparation externes uniquement.

Définition de la zone de préparation d’un canal

READ

Zones de préparation internes uniquement.

Table dans la définition du canal

SELECT, INSERT

Possession de canaux

Après la création d’un canal, le propriétaire du canal (c’est-à-dire le rôle qui a le privilège OWNERSHIP sur le canal) doit avoir les privilèges suivants :

Objet

Privilège

Remarques

Base de données

USAGE

Schéma

USAGE

Canal

OWNERSHIP

Définition de la zone de préparation d’un canal

USAGE

Zones de préparation externes uniquement.

Définition de la zone de préparation d’un canal

READ

Zones de préparation internes uniquement.

Table dans la définition du canal

SELECT, INSERT

Mise en pause ou reprise de canaux

En plus du propriétaire du tuyau, un rôle qui possède les autorisations minimales suivantes peut suspendre ou reprendre le canal :

Objet

Privilège

Remarques

Base de données

USAGE

Schéma

USAGE

Canal

OPERATE

Définition de la zone de préparation d’un canal

USAGE

Zones de préparation externes uniquement.

Définition de la zone de préparation d’un canal

READ

Zones de préparation internes uniquement.

Table dans la définition du canal

SELECT, INSERT

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 :