Accéder au contenu principal

Tutoriel du Snowflake pour les débutants : De l'architecture à l'exploitation des bases de données

Apprenez les principes fondamentaux de la gestion d'un entrepôt de données dans le cloud à l'aide de Snowflake. Snowflake est une plateforme basée sur le cloud qui offre des avantages significatifs aux entreprises souhaitant extraire un maximum d'informations de leurs données aussi rapidement et efficacement que possible.
Actualisé 16 janv. 2025  · 12 min de lecture

Qu'est-ce que Snowflake ?

Si l'on me demandait de décrire Snowflake en aussi peu de mots que possible, je choisirais ceux-ci :

  • Entrepôts de données
  • Données à grande échelle
  • Multi-Cloud
  • Séparation
  • Évolutif
  • Flexible
  • Simple

S'ils voulaient que je développe, j'enchaînerais les mots comme suit :

Snowflake est une plateforme de gestion d'entrepôts de données basée sur le cloud massivement populaire. Il se distingue de ses concurrents par sa capacité à traiter des données et des charges de travail à grande échelle plus rapidement et plus efficacement. Ses performances supérieures sont dues à son architecture unique, qui utilise des couches de stockage et de calcul séparées, ce qui lui permet d'être incroyablement flexible et évolutive. De plus, il s'intègre nativement avec plusieurs fournisseurs de cloud. Malgré ces caractéristiques avancées, il reste simple à apprendre et à mettre en œuvre.

S'ils demandent encore plus de détails, alors j'écrirai ce tutoriel. Si vous êtes totalement novice en la matière, le cours Introduction à Snowflake de DataCamp est un excellent point de départ.

Pourquoi utiliser Snowflake ?

Snowflake sert plus de 8900 clients dans le monde entier et traite 3,9 milliards de requêtes chaque jour. Ce type de statistiques d'utilisation n'est en aucun cas une coïncidence.

Vous trouverez ci-dessous les meilleurs avantages de Snowflake qui ont tant d'attrait :

1. Architecture basée sur le cloud

Snowflake fonctionne dans les clouds, ce qui permet aux entreprises d'augmenter ou de réduire les ressources en fonction de la demande sans se soucier de l'infrastructure physique (matériel). La plateforme prend également en charge les tâches de maintenance de routine telles que les mises à jour logicielles, la gestion du matériel et l'optimisation des performances. Les entreprises sont ainsi déchargées du fardeau de la maintenance, ce qui leur permet de se concentrer sur l'essentiel : la valorisation des données.

2. Elasticité et évolutivité

Snowflake sépare les couches de stockage et de calcul, ce qui permet aux utilisateurs de faire évoluer leurs ressources informatiques indépendamment de leurs besoins de stockage. Cette élasticité permet de gérer efficacement diverses charges de travail avec des performances optimales et sans coûts inutiles.

3. Concurrence et performance

Snowflake gère facilement une forte concurrence : plusieurs utilisateurs peuvent accéder aux données et les interroger sans perte de performance.

4. Partage des données

Les garanties de sécurité de Snowflake permettent le partage des données entre d'autres organisations, départements internes, partenaires externes, clients ou autres parties prenantes. Aucun transfert de données complexe n'est nécessaire.

5. Voyage dans le temps

Snowflake utilise un terme fantaisiste, le "Time Travel", pour désigner le versionnage des données. Chaque fois qu'une modification est apportée à la base de données, Snowflake prend un instantané. Cela permet aux utilisateurs d'accéder à des données historiques à différents moments.

6. Rentabilité

Snowflake propose un modèle de paiement à l'usage en raison de sa capacité à faire évoluer les ressources de manière dynamique. Vous ne payez que ce que vous utilisez.

Tous ces avantages combinés font de Snowflake un outil de gestion d'entrepôt de données hautement souhaitable.

Voyons maintenant l'architecture sous-jacente de Snowflake qui permet de débloquer ces fonctionnalités.

Devenez ingénieur en données

Devenez un ingénieur de données grâce à l'apprentissage avancé de Python
Commencez À Apprendre Gratuitement

Qu'est-ce qu'un entrepôt de données ?

Avant de nous plonger dans l'architecture de Snowflake, passons en revue les entrepôts de données pour nous assurer que nous sommes tous sur la même longueur d'onde.

Un entrepôt de données est un référentiel centralisé qui stocke de grandes quantités de données structurées et organisées provenant de diverses sources pour une entreprise. Différents personas (employés) dans les organisations utilisent les données à l'intérieur pour obtenir des informations différentes.

Par exemple, les analystes de données, en collaboration avec l'équipe marketing, peuvent effectuer un test A/B pour une nouvelle campagne marketing en utilisant le tableau des ventes. Les spécialistes des ressources humaines peuvent interroger les informations sur les salariés pour en suivre les performances.

Ce sont là quelques exemples de la manière dont les entreprises du monde entier utilisent les entrepôts de données pour stimuler la croissance. Mais sans une mise en œuvre et une gestion appropriées à l'aide d'outils tels que Snowflake, les entrepôts de données restent des concepts élaborés.

Vous pouvez en apprendre davantage sur le sujet grâce à notre cours Data Warehousing .

Architecture Snowflake

L'architecture unique de Snowflake, conçue pour des requêtes analytiques plus rapides, provient de la séparation des couches de stockage et de calcul. Cette distinction contribue aux avantages que nous avons mentionnés précédemment.

Couche de stockage

Dans Snowflake, la couche de stockage est un composant essentiel, qui stocke les données de manière efficace et évolutive. Voici les principales caractéristiques de cette couche :

  1. Basé sur le cloud : Snowflake s'intègre de manière transparente aux principaux fournisseurs de cloud, tels qu'AWS, GCP et Microsoft Azure.
  2. Format en colonnes : Snowflake stocke les données dans un format en colonnes, optimisé pour les requêtes analytiques. Contrairement aux formats traditionnels basés sur les lignes utilisés par des outils tels que Postgres, le format en colonnes est bien adapté à l'agrégation des données. Dans le stockage en colonnes, les requêtes n'accèdent qu'aux colonnes spécifiques dont elles ont besoin, ce qui les rend plus efficaces. En revanche, les formats basés sur les lignes nécessitent l'accès à toutes les lignes en mémoire pour des opérations simples telles que le calcul des moyennes.
  3. Micro-partitionnement : Snowflake utilise une technique appelée micropartitionnement qui permet de stocker les tableaux en mémoire par petits morceaux. Chaque bloc est généralement immuable et ne fait que quelques mégaoctets, ce qui rend l'optimisation et l'exécution des requêtes beaucoup plus rapides.
  4. Clonage sans copie : Snowflake dispose d'une fonctionnalité unique qui lui permet de créer des clones virtuels de données. Le clonage est instantané et ne consomme pas de mémoire supplémentaire jusqu'à ce que des modifications soient apportées à la nouvelle copie.
  5. Échelle et élasticité : La couche de stockage évolue horizontalement, ce qui signifie qu'elle peut gérer des volumes de données croissants en ajoutant des serveurs supplémentaires pour répartir la charge. De plus, cette mise à l'échelle se fait indépendamment des ressources informatiques, ce qui est idéal lorsque vous souhaitez stocker de grands volumes de données mais n'en analyser qu'une petite partie.

Examinons maintenant la couche de calcul.

Couche de calcul

Comme son nom l'indique, la couche de calcul est le moteur qui exécute vos requêtes. Elle travaille en collaboration avec la couche de stockage pour traiter les données et effectuer diverses tâches de calcul. Vous trouverez ci-dessous plus de détails sur le fonctionnement de cette couche :

  1. Entrepôts virtuels : Vous pouvez considérer les entrepôts virtuels comme des équipes d'ordinateurs (nœuds de calcul) conçues pour traiter les requêtes. Chaque membre de l'équipe traite une partie différente de la requête, ce qui rend l'exécution extrêmement rapide et parallèle. Snowflake propose des entrepôts virtuels de différentes tailles et, par conséquent, à différents prix (les tailles comprennent XS, S, M, L, XL).
  2. Architecture multi-clusters, multi-nœuds : La couche informatique utilise plusieurs grappes avec plusieurs nœuds pour une concurrence élevée, ce qui permet à plusieurs utilisateurs d'accéder aux données et de les interroger simultanément.
  3. Optimisation automatique des requêtes : Le système de Snowflake analyse toutes les requêtes et identifie les modèles à optimiser à l'aide des données historiques. Les optimisations courantes comprennent l'élagage des données inutiles, l'utilisation de métadonnées et le choix du chemin d'exécution le plus efficace.
  4. Cache des résultats : La couche de calcul comprend un cache qui stocke les résultats des requêtes fréquemment exécutées. Lorsque la même requête est exécutée à nouveau, les résultats sont renvoyés presque instantanément.

Ces principes de conception de la couche de calcul contribuent tous à la capacité de Snowflake à gérer des charges de travail différentes et exigeantes dans le cloud.

Couche de services cloud

La dernière couche est celle des services cloud. Comme cette couche s'intègre à chaque composant de l'architecture de Snowflake, il existe de nombreux détails sur son fonctionnement. En plus des caractéristiques liées aux autres couches, il a les responsabilités supplémentaires suivantes :

  1. Sécurité et contrôle d'accès : Cette couche applique des mesures de sécurité, notamment l'authentification, l'autorisation et le cryptage. Les administrateurs utilisent le contrôle d'accès basé sur les rôles (RBAC) pour définir et gérer les rôles et les autorisations des utilisateurs.
  2. Partage des données : Cette couche met en œuvre des protocoles de partage de données sécurisés entre différents comptes et même des organisations tierces. Les consommateurs de données peuvent accéder aux données sans avoir à les déplacer, ce qui favorise la collaboration et la monétisation des données.
  3. Prise en charge des données semi-structurées : Un autre avantage unique de Snowflake est sa capacité à gérer des données semi-structurées, telles que JSON et Parquet, bien qu'il s'agisse d'une plateforme de gestion d'entrepôt de données. Il peut facilement interroger des données semi-structurées et intégrer les résultats dans des tableaux existants. Cette flexibilité n'existe pas dans les autres outils de SGBDR.

Maintenant que nous avons une image de haut niveau de l'architecture de Snowflake, écrivons un peu de SQL sur la plateforme.

Configuration de SnowflakeSQL

Snowflake possède sa propre version de SQL, appelée SnowflakeSQL. La différence entre ce dialecte et les autres dialectes SQL est comparable à la différence entre les accents anglais.

La plupart des requêtes analytiques que vous effectuez dans des dialectes comme PostgreSQL ne changent pas, mais il y a quelques différences dans les commandes DDL (Data Definition Language).

Snowflake fournit deux interfaces pour exécuter SnowSQL :

  • L'œil de neige : Une interface web pour interagir avec la plateforme.
  • SnowSQL : Un client CLI (Command Line Interface) pour la gestion et l'interrogation des bases de données.

Nous allons voir comment configurer les deux et exécuter quelques requêtes !

L'œil de neige : Interface web

image3.png

Pour commencer avec Snowsight, rendez-vous sur la page d'accueil de Snowflake et sélectionnez "Démarrer gratuitement". Saisissez vos informations personnelles et sélectionnez n'importe quel fournisseur de cloud répertorié. Le choix n'a pas vraiment d'importance, puisque l'essai gratuit comprend 400 dollars de crédits pour l'une ou l'autre des options (vous n'aurez pas à configurer vous-même les informations d'identification pour le cloud).

Après avoir vérifié votre adresse électronique, vous serez redirigé vers la page Feuilles de travail. Les feuilles de travail sont des environnements de codage interactifs où vous pouvez écrire, exécuter et visualiser les résultats de vos requêtes SQL.

image8.png

Pour exécuter certaines requêtes, nous avons besoin d'une base de données et d'un tableau (nous n'utiliserons pas les données de l'échantillon dans Snowsight). Le GIF ci-dessous montre comment vous pouvez créer une nouvelle base de données nommée "test_db" et un tableau nommé "diamants" à l'aide d'un fichier CSV local. Vous pouvez télécharger le fichier CSV en exécutant le code de ce GitHub gist dans votre terminal.

image6.gif

Dans le GIF, Snowsight nous informe qu'il y a un problème avec l'un des noms de colonnes. Le mot "tableau" étant un mot-clé réservé, je l'ai mis entre guillemets.

Ensuite, vous serez dirigé vers une nouvelle feuille de calcul où vous pourrez exécuter n'importe quelle requête SQL. Comme le montre le GIF, l'interface de la feuille de calcul est assez simple et très fonctionnelle. Prenez quelques minutes pour vous familiariser avec les panneaux, les boutons et leurs emplacements respectifs.

SnowSQL : CLI

Rien ne vaut l'excitation de gérer et d'interroger une base de données complète à partir de votre terminal. C'est pourquoi SnowSQL existe !

Cependant, pour le rendre opérationnel, il y a quelques étapes à suivre, ce qui est un processus généralement plus lent que pour Snowsight.

Dans un premier temps, téléchargez le programme d'installation de SnowSQL à partir de la page de téléchargement des développeurs de Snowflake. Téléchargez le fichier correspondant. Comme j'utilise WSL2, je choisirai une version Linux :

image1.gif

Dans le terminal, je télécharge le fichier en utilisant le lien copié et je l'exécute avec bash:

$ curl -O https://sfc-repo.snowflakecomputing.com/snowsql/bootstrap/1.2/linux_x86_64/snowsql-1.2.31-linux_x86_64.bash
$ bash snowsql-1.2.31-linux_x86_64.bash

Pour les autres plateformes, vous pouvez suivre les étapes d'installation à partir de cette page de la documentation de Snowflake.

Une fois l'installation réussie, vous devriez obtenir le message suivant :

image4.png

Note : Sur les systèmes de type Unix, il est important de s'assurer que la commande snowsql est disponible dans toutes les sessions de terminal. Pour ce faire, vous devez ajouter le répertoire /home/username/bin à votre variable $PATH. Vous pouvez le faire en ajoutant la ligne suivante à vos fichiers .bashrc, .bash_profile ou .zshrc: export PATH=/home/yourusername/bin:$PATH. N'oubliez pas de remplacer yourusername par votre véritable nom d'utilisateur.

Le message nous invite à configurer les paramètres du compte pour se connecter à Snowflake. Il y a deux façons de procéder :

  1. Passez les détails du compte de manière interactive dans le terminal.
  2. Configurez les informations d'identification dans un fichier de configuration globale de Snowflake.

Étant donné qu'il s'agit d'une solution plus permanente et plus sûre, nous opterons pour la deuxième option. Pour des instructions spécifiques à la plate-forme, lisez la page Connecting through SnowSQL de la documentation. Les instructions ci-dessous concernent les systèmes de type Unix.

Tout d'abord, allez sur votre adresse e-mail et trouvez l'e-mail de bienvenue de Snowflake. Il contient votre nom de compte à l'intérieur du lien de connexion : account-name.snowflakecomputing.com. Copiez-le.

image9.png

Ensuite, ouvrez le fichier ~/.snowsql/config avec un éditeur de texte tel que VIM ou VSCode. Sous la section connections, décompressez les trois champs suivants :

  • Nom du compte
  • Nom d'utilisateur
  • Mot de passe

Remplacez les valeurs par défaut par le nom de compte que vous avez copié et par le nom d'utilisateur et le mot de passe que vous avez fournis lors de l'inscription. Après cela, enregistrez et fermez le fichier.

Retournez ensuite à votre terminal et entrez snowsql. Le client devrait se connecter automatiquement et vous fournir un éditeur SQL qui comprend des fonctionnalités telles que la mise en évidence du code et l'achèvement des tabulations. Voici à quoi il devrait ressembler :

image5.png

Connexion à une base de données existante dans SnowSQL

Pour l'instant, nous ne sommes connectés à aucune base de données. Corrigeons cela en nous connectant à la base de données test_db que nous avons créée avec Snowsight. Tout d'abord, vérifiez les bases de données disponibles à l'aide de SHOW DATABASES:

$ SHOW DATABASES
$ USE DATABASE TEST_DB

Ensuite, indiquez que vous utiliserez dorénavant la base de données test_db (insensible à la casse). Vous pouvez ensuite exécuter n'importe quelle requête SQL sur les tableaux de la base de données connectée.

$ SELECT COUNT(*) FROM DIAMONDS

image2.png

Création d'une nouvelle base de données et d'un nouveau tableau dans SnowSQL

Si vous faites partie d'une grande organisation, il peut arriver que la responsabilité de créer une base de données et de l'alimenter avec des données existantes repose sur vos épaules. Pour nous entraîner à ce scénario, essayons de télécharger le jeu de données Diamonds en tant que tableau dans SnowSQL à l'intérieur d'une nouvelle base de données. Voici les étapes que vous pouvez suivre :

1. Créez une nouvelle base de données :

CREATE DATABASE IF NOT EXISTS new_db;

2. Utilisez la base de données :

USE DATABASE new_db;

3. Créez un format de fichier pour CSV :

CREATE OR REPLACE FILE FORMAT my_csv_format -- Can be named anything
 TYPE = CSV
 FIELD_DELIMITER = ','
 SKIP_HEADER = 1;  -- Assuming the first row is a header

Nous devons définir manuellement un format de fichier et le nommer car Snowflake ne peut pas déduire le schéma et la structure des fichiers de données tels que CSV, JSON ou XML. Le format de fichier que nous avons défini ci-dessus convient au fichier diamonds.csv que nous avons (il est séparé par des virgules et comprend un en-tête).

4. Créez une scène interne :

CREATE OR REPLACE STAGE my_local_files;

Dans Snowflake, une étape est une zone de stockage où vous pouvez télécharger vos fichiers locaux. Il peut s'agir de fichiers de données structurés ou semi-structurés. Ci-dessus, nous créons une scène nommée my_local_files.

5. Placez le fichier CSV dans l'étape :

PUT file:///home/bexgboost/diamonds.csv @my_local_files;

6. Créez le tableau :

CREATE TABLE diamonds (
 carat FLOAT,
 cut VARCHAR(255),
 color VARCHAR(255),
 clarity VARCHAR(255),
 depth FLOAT,
 table FLOAT,
 price INTEGER,
 x FLOAT,
 y FLOAT,
 z FLOAT
);

7. Chargez les données de la scène dans le tableau :

COPY INTO diamonds
 FROM @my_local_files/diamonds.csv
 FILE_FORMAT = my_csv_format;

8. Vérifier :

SELECT COUNT(*) FROM diamonds;

Ces étapes permettent de créer une nouvelle base de données Snowflake, de définir un format de fichier CSV, de créer une étape pour stocker les fichiers locaux, de télécharger un fichier CSV vers l'étape, de créer un nouveau tableau, de charger les données CSV dans le tableau et, enfin, de vérifier l'opération en comptant le nombre de lignes dans le tableau.

Si le résultat renvoie le nombre de lignes, félicitations, vous avez réussi à créer une base de données et à y charger des données locales avec SnowSQL. Vous pouvez maintenant interroger le tableau comme bon vous semble.

Conclusion et formation continue

Ouf ! Nous avons commencé par des concepts simples, mais vers la fin, nous avons vraiment plongé dans les détails. Voilà l'idée que je me fais d'un tutoriel digne de ce nom.

Vous avez sans doute deviné que Snowflake ne se résume pas à ce que nous venons d'évoquer. En fait, la documentation de Snowflake comprend des guides de démarrage rapide qui durent 128 minutes ! Mais avant de vous y attaquer, je vous recommande de vous familiariser avec d'autres ressources. Que pensez-vous de ceux-ci ?

Merci de votre lecture !

Obtenez une certification pour le poste de Data Engineer de vos rêves

Nos programmes de certification vous aident à vous démarquer et à prouver aux employeurs potentiels que vos compétences sont adaptées à l'emploi.

Obtenez Votre Certification
Timeline mobile.png

Bex Tuychiev's photo
Author
Bex Tuychiev
LinkedIn

Je suis un créateur de contenu en science des données avec plus de 2 ans d'expérience et l'un des plus grands followings sur Medium. J'aime écrire des articles détaillés sur l'IA et la ML dans un style un peu sarcastıc, car il faut bien faire quelque chose pour les rendre un peu moins ennuyeux. J'ai produit plus de 130 articles et un cours DataCamp, et un autre est en cours d'élaboration. Mon contenu a été vu par plus de 5 millions de personnes, dont 20 000 sont devenues des adeptes sur Medium et LinkedIn. 

Sujets

Commencez dès aujourd'hui votre voyage dans les bases de données !

cours

Introduction to Snowflake

3 hr
23.8K
This course will take you from Snowflake's foundational architecture to mastering advanced SnowSQL techniques.
Afficher les détailsRight Arrow
Commencer Le Cours
Voir plusRight Arrow
Apparenté

blog

Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Vous êtes actuellement à la recherche d'un emploi qui utilise Snowflake ? Préparez-vous à répondre à ces 20 questions d'entretien sur le flocon de neige pour décrocher le poste !
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 min

blog

Les 32 meilleures questions d'entretien sur AWS et leurs réponses pour 2024

Un guide complet pour explorer les questions d'entretien AWS de base, intermédiaires et avancées, ainsi que des questions basées sur des situations réelles. Il couvre tous les domaines, garantissant ainsi une stratégie de préparation bien équilibrée.
Zoumana Keita 's photo

Zoumana Keita

30 min

blog

2022-2023 Rapport annuel DataCamp Classrooms

À l'aube de la nouvelle année scolaire, DataCamp Classrooms est plus motivé que jamais pour démocratiser l'apprentissage des données, avec plus de 7 650 nouveaux Classrooms ajoutés au cours des 12 derniers mois.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 min

blog

Célébration de Saghar Hazinyar : Une boursière de DataCamp Donates et une diplômée de Code to Inspire

Découvrez le parcours inspirant de Saghar Hazinyar, diplômée de Code to Inspire, qui a surmonté les défis en Afghanistan et s'est épanouie grâce à une bourse de DataCamp Donates.
Fereshteh Forough's photo

Fereshteh Forough

4 min

blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates a offert plus de 20k bourses d'études à nos partenaires à but non lucratif au deuxième trimestre 2023. Découvrez comment des apprenants défavorisés et assidus ont transformé ces opportunités en réussites professionnelles qui ont changé leur vie.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

blog

Nous avons fait don de bourses DataCamp Premium à un million de personnes, et ce n'est pas fini.

Réparties entre nos deux programmes d'impact social, DataCamp Classrooms et #DCDonates, les bourses offrent un accès illimité à tout ce que DataCamp Premium a à offrir.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

See MoreSee More