Corso
Che cos'è Snowflake?
Se qualcuno mi chiedesse di descrivere Snowflake nel minor numero di parole possibile, sceglierei queste:
- Data warehouse
- Dati su larga scala
- Multi-cloud
- Separazione
- Scalabile
- Flessibile
- Semplice
Se volessero che approfondissi, le metterei insieme così:
Snowflake è una piattaforma AI data cloud estremamente popolare. Si distingue dalla concorrenza per la capacità di gestire dati e carichi di lavoro su larga scala in modo più rapido ed efficiente. Le sue prestazioni superiori derivano da un'architettura unica che separa i livelli di storage e compute, rendendolo incredibilmente flessibile e scalabile. Inoltre, si integra nativamente con più provider cloud. Nonostante queste funzionalità avanzate, è semplice da imparare e implementare.
Se chiedessero ancora più dettagli, beh, allora scriverei questo tutorial. Se sei alle prime armi, il nostro corso Introduzione a Snowflake è un ottimo punto di partenza.
Perché usare Snowflake?
Snowflake serve più di 8.900 clienti in tutto il mondo ed elabora 3,9 miliardi di query ogni giorno. Statistiche d'uso del genere non sono certo una coincidenza.
Di seguito trovi i principali vantaggi di Snowflake che lo rendono così attraente:
1. Architettura basata sul cloud
Snowflake opera nel cloud, consentendo alle aziende di aumentare o ridurre le risorse in base alla domanda senza preoccuparsi dell'infrastruttura fisica (hardware). La piattaforma gestisce anche attività di manutenzione ordinaria come aggiornamenti software, gestione dell'hardware e tuning delle prestazioni. Questo riduce l'onere della manutenzione, permettendo alle organizzazioni di concentrarsi su ciò che conta: estrarre valore dai dati.
2. Elasticità e scalabilità
Snowflake separa i livelli di storage e compute, consentendo agli utenti di scalare le risorse di calcolo in modo indipendente dalle esigenze di archiviazione. Questa elasticità permette di gestire in modo efficiente carichi di lavoro eterogenei con prestazioni ottimali e senza costi inutili.
3. Concorrenza e prestazioni
Snowflake gestisce con facilità un'elevata concorrenza: più utenti possono accedere e interrogare i dati senza perdita di prestazioni.
4. Condivisione dei dati
Le misure di sicurezza di Snowflake consentono la condivisione dei dati con altre organizzazioni, reparti interni, partner esterni, clienti o altri stakeholder. Niente trasferimenti di dati complessi.
5. Time Travel
Snowflake usa il termine altisonante “Time Travel” per il versioning dei dati. Ogni volta che viene apportata una modifica al database, Snowflake scatta uno snapshot. Ciò consente agli utenti di accedere ai dati storici in vari momenti nel tempo.
6. Convenienza economica
Snowflake offre un modello pay-as-you-go grazie alla capacità di scalare dinamicamente le risorse. Pagherai solo ciò che usi.
Tutti questi vantaggi combinati rendono Snowflake una piattaforma AI data cloud altamente desiderabile.
Ora, diamo un'occhiata all'architettura sottostante di Snowflake che rende possibili queste funzionalità.
Che cos'è un Data Warehouse?
Prima di immergerci nell'architettura di Snowflake, rivediamo i data warehouse per assicurarci di essere tutti allineati.
Un data warehouse è un repository centralizzato che archivia grandi quantità di dati strutturati e organizzati provenienti da varie fonti per un'azienda. Diverse figure (dipendenti) nelle organizzazioni usano i dati al suo interno per ricavare insight differenti.
Per esempio, i data analyst, in collaborazione con il team marketing, possono eseguire un test A/B per una nuova campagna utilizzando la tabella delle vendite. Gli specialisti HR possono interrogare le informazioni sui dipendenti per monitorarne le prestazioni.
Questi sono alcuni esempi di come le aziende in tutto il mondo usano i data warehouse per favorire la crescita. Ma senza un'implementazione e una gestione adeguate con strumenti come Snowflake, i data warehouse restano concetti elaborati.
Puoi approfondire l'argomento con il nostro corso Data Warehousing.
Architettura di Snowflake
L'architettura unica di Snowflake, progettata per query analitiche più veloci, deriva dalla separazione dei livelli di storage e compute. Questa distinzione contribuisce ai vantaggi che abbiamo menzionato prima.
Livello di storage
In Snowflake, il livello di storage è una componente fondamentale che archivia i dati in modo efficiente e scalabile. Ecco alcune caratteristiche chiave di questo livello:
- Basato sul cloud: Snowflake si integra perfettamente con i principali provider cloud come AWS, GCP e Microsoft Azure.
- Formato colonnare: Snowflake archivia i dati in formato colonnare, ottimizzato per le query analitiche. A differenza dei formati basati su righe usati da strumenti come Postgres, il formato colonnare è adatto all'aggregazione dei dati. Nello storage colonnare, le query accedono solo alle colonne specifiche di cui hanno bisogno, risultando più efficiente. I formati basati su righe, invece, richiedono di caricare in memoria tutte le righe anche per operazioni semplici come il calcolo delle medie.
- Micro-partitioning: Snowflake utilizza una tecnica chiamata micro-partitioning che archivia le tabelle in memoria in piccoli blocchi. Ogni blocco è in genere immutabile e di pochi megabyte, il che rende l'ottimizzazione e l'esecuzione delle query molto più veloci.
- Zero-copy cloning: Snowflake ha una funzionalità unica che consente di creare cloni virtuali dei dati. Il cloning è istantaneo e non consuma memoria aggiuntiva finché non si apportano modifiche alla nuova copia.
- Scala ed elasticità: Il livello di storage scala orizzontalmente, il che significa che può gestire volumi di dati crescenti aggiungendo più server per distribuire il carico. Inoltre, questo scaling avviene in modo indipendente dalle risorse di compute, ideale quando desideri archiviare grandi volumi di dati ma analizzarne solo una piccola frazione.
Ora, diamo un'occhiata al livello di compute.
Livello di compute
Come suggerisce il nome, il livello di compute è il motore che esegue le tue query. Funziona in combinazione con il livello di storage per elaborare i dati ed eseguire varie attività computazionali. Ecco alcuni dettagli in più su come opera questo livello:
- Virtual warehouse: Puoi pensare ai Virtual Warehouse come a squadre di computer (nodi di calcolo) progettate per gestire l'elaborazione delle query. Ogni membro della squadra gestisce una parte diversa della query, rendendo l'esecuzione sorprendentemente veloce e parallela. Snowflake offre Virtual Warehouse di diverse dimensioni e, di conseguenza, a prezzi differenti (le dimensioni includono XS, S, M, L, XL).
- Architettura multi-cluster, multi-nodo: Il livello di compute utilizza più cluster con più nodi per un'elevata concorrenza, consentendo a diversi utenti di accedere e interrogare i dati simultaneamente.
- Ottimizzazione automatica delle query: Il sistema di Snowflake analizza tutte le query e identifica pattern da ottimizzare utilizzando dati storici. Le ottimizzazioni comuni includono la potatura dei dati non necessari, l'uso dei metadati e la scelta del percorso di esecuzione più efficiente.
- Cache dei risultati: Il livello di compute include una cache che memorizza i risultati delle query eseguite più frequentemente. Quando la stessa query viene rieseguita, i risultati vengono restituiti quasi istantaneamente.
Questi principi progettuali del livello di compute contribuiscono tutti alla capacità di Snowflake di gestire carichi di lavoro diversi e impegnativi nel cloud.
Livello dei servizi cloud
L'ultimo livello è quello dei servizi cloud. Poiché questo livello si integra in ogni componente dell'architettura di Snowflake, ci sono molti dettagli sul suo funzionamento. Oltre alle funzionalità legate agli altri livelli, ha le seguenti responsabilità aggiuntive:
- Sicurezza e controllo degli accessi: Questo livello applica misure di sicurezza, inclusi autenticazione, autorizzazione e crittografia. Gli amministratori usano il controllo degli accessi basato sui ruoli (RBAC) per definire e gestire ruoli e permessi degli utenti.
- Condivisione dei dati: Questo livello implementa protocolli di condivisione sicura dei dati tra account diversi e persino con organizzazioni terze. I consumer dei dati possono accedervi senza spostamento dei dati, favorendo la collaborazione e la monetizzazione dei dati.
- Supporto per dati semi-strutturati: Un altro vantaggio unico di Snowflake è la capacità di gestire dati semi-strutturati, come JSON e Parquet, pur essendo una piattaforma di gestione di data warehouse. Può interrogare facilmente dati semi-strutturati e integrare i risultati con le tabelle esistenti. Questa flessibilità non si riscontra in altri strumenti RDBMS.
Ora che abbiamo una visione di alto livello dell'architettura di Snowflake, scriviamo un po' di SQL sulla piattaforma.
Configurare Snowflake SQL
Snowflake ha una sua versione di SQL chiamata Snowflake SQL. La differenza tra questa e altri dialetti SQL è paragonabile alla differenza tra accenti inglesi.
Molte delle query analitiche che esegui in dialetti come PostgreSQL non cambiano, ma ci sono alcune discrepanze nei comandi DDL (Data Definition Language).
Ora, vediamo come eseguire alcune query!
Snowsight: interfaccia web

Per iniziare con Snowsight, vai alla pagina della prova gratuita di 120 giorni di Snowflake e crea un account. Inserisci le tue informazioni personali e seleziona uno qualsiasi dei provider cloud elencati. Questo ti offre una prova gratuita di 120 giorni anziché la più comune prova di 30 giorni che trovi altrove. La prova include anche 400 $ di crediti.
Quando ti iscrivi a una prova, si consiglia agli utenti di scegliere AWS e la regione US-Oregon West. Tra le altre ragioni, l'Oregon è una delle regioni a costo più basso per l'infrastruttura AWS e, di conseguenza, i crediti della prova durano di più.
Dopo aver verificato la tua email, verrai reindirizzato alla pagina Worksheets. Le worksheet sono ambienti interattivi di live-coding in cui puoi scrivere, eseguire e visualizzare i risultati delle tue query SQL.

Per eseguire alcune query, ci servono un database e una tabella (non useremo i dati di esempio in Snowsight). Per iniziare, ti suggerisco di creare un nuovo database (potresti chiamarlo qualcosa come test_db) e una tabella utilizzando un file CSV locale. Puoi scaricare il file CSV eseguendo il codice in questa gist su GitHub nel tuo terminale.
Successivamente, verrai indirizzato a una nuova worksheet dove potrai eseguire qualsiasi query SQL tu voglia. Trovo che l'interfaccia delle worksheet sia piuttosto intuitiva e molto funzionale. Prenditi qualche minuto per familiarizzare con i pannelli, i pulsanti e le rispettive posizioni.
Conclusioni e approfondimenti
Uff! Siamo partiti da concetti semplici, ma verso la fine siamo davvero scesi nei dettagli più spinosi. Beh, questa è la mia idea di un buon tutorial.
Probabilmente avrai intuito che c'è molto di più in Snowflake rispetto a quanto abbiamo trattato. In effetti, la documentazione di Snowflake include guide di avvio rapido che durano ben 128 minuti! Ma prima di affrontarle, ti consiglio di fare pratica con qualche altra risorsa. Che ne dici di queste:
- Corso Introduzione a Snowflake
- Un webinar sulla modernizzazione dell'analisi delle vendite con Snowflake
- Analisi dei dati in Snowflake usando Python esercitazione guidata
- Guide utente ufficiali di Snowflake
- Snowflake Northstar per saperne di più sulla visione a lungo termine di Snowflake.
Grazie per la lettura!
Sono un creator di contenuti sulla data science con oltre 2 anni di esperienza e uno dei profili con più seguito su Medium. Mi piace scrivere articoli dettagliati su AI e ML con un pizzico di sarcasmo, perché qualcosa bisogna pur fare per renderli un po' meno noiosi. Ho pubblicato più di 130 articoli e anche un corso su DataCamp, con un altro in arrivo. I miei contenuti sono stati visti da oltre 5 milioni di occhi, e 20.000 di loro sono diventati follower sia su Medium che su LinkedIn.


