Snowflake : un Data Warehouse, mais pas que…
Omniprésent dans le paysage de la data, Snowflake est considéré comme un acteur incontournable des Modern Data Platforms en 2024. Bien que la solution soit initialement un data warehouse (un système de stockage de données centralisé et optimisé pour l'analyse), l’entreprise a par la suite largement développé son offre et son panel de fonctionnalités pour prendre en compte, en plus du stockage de données, de l’ingestion, de l’orchestration, de la transformation et même de la visualisation.
Snowflake, un acteur incontournable en 2024
Snowflake, lancé en 2012, est un data warehouse cloud en mode SaaS. Cette solution est devenue en quelques années un acteur central de la Modern Data Stack.
Snowflake est une plateforme de stockage et d'analyse de données offrant une architecture unique et flexible. Elle permet aux entreprises de stocker, traiter et analyser de grandes quantités de données avec une scalabilité dynamique (cela permet d’ajuster automatiquement les ressources de calculs assurant des performances optimales), une sécurité intégrée, et une gestion simplifiée des données, tout en supportant divers langages de programmation et outils d'analyse.
Le fonctionnement de Snowflake
L'architecture de Snowflake: un modèle hybride
Snowflake repose sur une architecture hybride distribuée, combinant les principes du "shared-nothing" et du "shared-disk".
Chaque nœud fonctionne de manière autonome, disposant de ses propres ressources dédiées telles que le processeur, la mémoire et le stockage.
Cette architecture offre plusieurs avantages :
- Indépendance des nœuds : Chaque nœud est capable de traiter des requêtes et d'effectuer des calculs de manière autonome.
- Pas de partage de ressources : Il n'y a pas de mémoire ou de disque partagé entre les nœuds.
- Évolutivité horizontale : De nouveaux nœuds peuvent être ajoutés au système pour augmenter la capacité de traitement.
- Tolérance aux pannes : La défaillance d'un nœud n'affecte pas les autres nœuds du système.
La couche centrale de stockage où les données sont micro partitionnées et compressées est accessible à tous les nœuds de calcul, permettant ainsi des actions parallèles et assurant à Snowflake une grande performance et une scalabilité remarquable.
Le stockage des données : une structure flexible et évolutive
Dans Snowflake, la donnée est organisée de manière hiérarchique, offrant une structure flexible et évolutive pour gérer les données.
Au sommet de cette hiérarchie se trouvent les entrepôts de données (warehouses), qui sont les environnements de traitement où les requêtes SQL sont exécutées. Les bases de données (databases) sont des conteneurs regroupant des schémas qui sont des espaces de noms logiques contenant des tables et d'autres objets propres à Snowflake.
En comparaison, dans BigQuery, la structure du schéma de données est plus simplifiée. Les tables, sont les principaux objets de stockage des données et sont organisées directement sous les datasets.
Snowflake offre donc un niveau supplémentaire pour organiser sa donnée, cela permet par exemple de gérer plusieurs environnements (dev, uat, prod …) ou de classer les données par besoins métiers (factures, utilisateurs, produits …).
La gestion des rôles sur Snowflake
La gestion des rôles sur Snowflake est cruciale pour garantir la sécurité des données stockées dans le data warehouse. Les rôles permettent de définir des autorisations précises pour les utilisateurs et les groupes, contrôlant ainsi leur accès aux données et leurs actions sur la plateforme. Avec Snowflake, les administrateurs peuvent créer des rôles personnalisés adaptés à différents niveaux d'accès et de responsabilités au sein de l'organisation.
Cas d’utilisation de Snowflake
Snowflake est plus adapté pour des usages de stockage et d'analyse de données (OLAP) plutôt qu'à des usages OLTP (traitement des transactions en ligne).
Bien que Snowflake puisse gérer certaines ingestions de données en temps réel et opérations de mise à jour de la donnée, il n'est pas optimisé pour ces cas d’usage à haute vitesse. Pour les systèmes OLTP, il est généralement préférable d'utiliser un système de base de données spécialement conçu tel que MySQL, PostgreSQL ou Oracle.
La facturation de Snowflake : un modèle transparent et flexible
La facturation dans Snowflake repose sur un modèle de tarification transparent et flexible à l’aide de crédits, conçu pour s'adapter aux besoins évolutifs des utilisateurs. Snowflake adopte une approche de “pay as you go”, où les utilisateurs sont facturés uniquement pour les ressources qu'ils consomment réellement. Les coûts sont calculés en fonction de 3 facteurs :
- Le stockage (fixe)
- La puissance de calcul
- Le temps d’utilisation
Cette flexibilité permet aux entreprises de contrôler leurs coûts en ajustant dynamiquement leurs ressources en fonction de leurs besoins changeants.
Les features additionnelles de Snowflake
Snowpipe
Snowpipe permet de charger des données à partir de fichiers dès qu'ils sont disponibles dans un stage. Cela signifie que vous pouvez charger des données à partir de fichiers par micro-batch, les rendant disponibles aux utilisateurs en quelques minutes, plutôt que d'exécuter manuellement des instructions COPY selon un calendrier pour charger des lots plus importants.
Stream
Un stream enregistre les changements faits sur les données dans une table (DML), y compris les insertions, les mises à jour et les suppressions, ainsi que les métadonnées sur chaque changement, afin que des actions puissent être prises à l'aide des données modifiées. Ce processus est appelé Change Data Capture (CDC).
Task
Les tasks Snowflake permettent d'exécuter différents types de code SQL :
- Instruction SQL unique
- Appel d'une procédure stockée
- Logique procédurale via Snowflake Scripting
Il existe 2 types de task dans Snowflake:
Tâches Serverless
- Utilité : Charges de travail légères et imprévisibles.
- Facturation : Payez uniquement pour les ressources utilisées (modèle de calcul serverless). Snowflake analyse l'historique des tâches pour dimensionner efficacement les ressources et les suspendre en cas d'inactivité, optimisant ainsi vos coûts. Un multiplicateur de 1.2x est appliqué pour couvrir la gestion de ces ressources.
- Contrôle : Contrôle limité sur les ressources de calcul.
Tâches gérées par l'utilisateur
- Utilité : Charges de travail prévisibles et volumineuses.
- Facturation : Basée sur la taille de l'entrepôt Snowflake utilisé pendant l'exécution de la tâche, similaire à l'exécution de requêtes SQL depuis un client ou l'interface web. La facturation à la seconde et la suspension automatique des entrepôts vous permettent de démarrer avec des entrepôts plus grands et d'ajuster ensuite leur taille en fonction de vos besoins.
- Contrôle : Meilleur contrôle sur les ressources de calcul, permettant un dimensionnement précis.
De plus, les tasks peuvent être combinées avec des streams pour créer des workflows ELT, traitant ainsi les lignes de table récemment modifiées. Cela permet de faire une orchestration des transformations automatiquement dans Snowflake sans passer par un orchestrateur externe.
Les tasks peuvent être planifiées à l’aide d’un CRON pour effectuer des mises à jour ou actions de manière périodique, mais également lancées à la suite d’une autre task, permettant de créer des Directed Acyclic Graph (DAG) d’un nombre maximum de 100 tasks connectées.
Snowpark Container Services
Snowpark Container Services (SPCS) permet d'exécuter des applications conteneurisées directement au sein de la plateforme Snowflake. On peut citer certains exemples comme une application Streamlit, une API qui interrogeant la base de données ou encore un modèle LLM.
Voici les atouts de Snowpark Container Services :
- Gestion de conteneurs simplifiée : Snowflake met à disposition un registre d’image dans lequel on peut les stocker de manière sécurisée. Par la suite, on crée le service à l’aide d’un fichier de spécification (au format yaml) et Snowflake s'occupe de tout. De la sécurité à la configuration, cela permet de se concentrer uniquement sur le développement des applications.
- Intégration transparente : Les applications accèdent directement à Snowflake, exécutent des requêtes SQL, traitent les données et accèdent aux fichiers des stages, le tout dans un environnement sécurisé.
Inconvénients
Coûts élevés
- Le prix de Snowflake peut être élevé, surtout pour les entreprises qui ont besoin de stocker de grandes quantités de données ou d'exécuter des requêtes complexes.
- La facturation est basée à la seconde, ce qui peut entraîner des coûts inattendus si vous n'êtes pas prudent.
Complexité
- Snowflake est une plateforme puissante, mais elle peut être complexe à configurer et à utiliser.
- Snowflake possède un grand nombre de paramètres et de fonctions uniques, la maîtrise de l’outil nécessite de la pratique et des connaissances préalables en SQL et DevOps.
Pour conclure, Snowflake est un data warehouse cloud très puissant et flexible qui offre de nombreux avantages aux entreprises. C'est une bonne option pour celles qui recherchent une plateforme évolutive, performante et facile à utiliser.
Cependant, il est important de comparer les différentes options avant de choisir un data warehouse pour votre entreprise. Lors de nos missions chez Modeo, nous accompagnons nos clients dans la construction de leur Modern Data Platform et le choix des outils les plus adaptés à leurs besoins. Nous les invitons notamment à se poser les questions suivantes :
Quels sont vos besoins en matière de stockage et de calcul ?
Quel est votre budget ?
Quel est votre niveau d'expertise technique ?
De quelles fonctionnalités avez-vous besoin ?
Quels autres outils doivent être intégrés ?
Si vous souhaitez implémenter Snowflake au sein de votre Data Platform ou savoir si cette solution est adaptée à vos besoin, contactez-nous et nous nous ferons un plaisir de vous accompagner dans votre projet !