Una guida completa al data warehousing su AWS con Redshift
Questa guida a AWS Redshift copre la configurazione e la gestione di un data warehouse cloud, il caricamento dei dati, l’esecuzione di query complesse, l’ottimizzazione delle prestazioni, l’integrazione con strumenti BI e fornisce best practice e suggerimenti di troubleshooting per avere successo.
I dati sono la base delle organizzazioni moderne, ma l’enorme volume di informazioni raccolte e archiviate può essere difficile da gestire. La chiave del successo sta nell’organizzare e analizzare efficacemente questi dati per scoprire insight preziosi che guidino decisioni informate.
Qui entra in gioco il data warehousing. È una soluzione potente che consente alle aziende di consolidare e ottimizzare i propri dati per un’analisi efficiente. E quando si parla di data warehousing, AWS Redshift si distingue come una delle scelte migliori.
In questo articolo esploreremo nel dettaglio AWS Redshift, insieme alle sue caratteristiche principali, ai benefici e alle best practice per configurazione, caricamento dei dati, interrogazione, tuning delle prestazioni, sicurezza e integrazioni.
Che tu sia un professionista dei dati o un decision maker che vuole sfruttare al massimo i propri dati, questo articolo ti fornirà conoscenze e strumenti per avere successo con AWS Redshift.
Che cos’è il Data Warehousing?
Il data warehousing è il processo di raccolta, archiviazione e gestione di grandi quantità di dati strutturati provenienti da varie fonti all’interno di un’organizzazione.
L’obiettivo principale di un data warehouse è fornire un repository centralizzato di informazioni facilmente accessibili, analizzabili e utilizzabili per reportistica e decision making.
I data warehouse sono progettati per supportare query complesse e analisi dei dati, consentendo alle aziende di ricavare insight di valore dai propri dati.
L’importanza del data warehousing
Adottare un data warehouse può offrire alle organizzazioni numerosi vantaggi:
Importanza del data warehousing
Decisioni informate: Il data warehousing consente di prendere decisioni guidate dai dati offrendo un facile accesso ai dati e alle tendenze storiche.
Migliore qualità dei dati: I data warehouse integrano e ripuliscono dati da più fonti, garantendo coerenza e accuratezza per insight affidabili.
Maggiore efficienza: Gli utenti possono accedere e interrogare rapidamente grandi quantità di dati senza impattare sui sistemi operativi, favorendo decisioni tempestive.
Vantaggio competitivo: Gli insight ottenuti dal data warehousing aiutano a identificare nuove opportunità, ottimizzare i processi e ottenere un vantaggio competitivo.
Scalabilità e prestazioni: I data warehouse sono progettati per gestire grandi volumi di dati e supportare query complesse, assicurando prestazioni costanti con la crescita delle esigenze.
Panoramica di AWS Redshift
Che cos’è AWS Redshift?
AWS Redshift è un servizio di data warehousing completamente gestito e basato sul cloud che consente di archiviare e analizzare dataset su scala petabyte. Con AWS Redshift Serverless, puoi accedere e analizzare i dati senza dover configurare manualmente un data warehouse con capacità preallocata.
Il servizio effettua automaticamente il provisioning delle risorse e scala in modo intelligente la capacità del data warehouse per garantire prestazioni rapide, anche per carichi di lavoro molto esigenti e imprevedibili. Paghi solo per le risorse effettivamente utilizzate, perché non ci sono addebiti quando il data warehouse è inattivo.
AWS Redshift consente di caricare i dati e iniziare subito a interrogare usando Amazon Redshift query editor v2 o il tuo strumento di business intelligence (BI) preferito. Il servizio offre il miglior rapporto prezzo/prestazioni e funzionalità SQL familiari in un ambiente semplice, senza necessità di amministrazione.
Indipendentemente dalle dimensioni del dataset, AWS Redshift garantisce prestazioni di query elevate utilizzando gli stessi strumenti basati su SQL e le stesse applicazioni BI comunemente in uso oggi.
Caratteristiche e vantaggi principali di AWS Redshift
AWS Redshift offre numerose funzionalità e vantaggi per aiutare le organizzazioni a archiviare, gestire e analizzare in modo efficiente grandi volumi di dati. Alcune delle caratteristiche e dei benefici chiave sono illustrati di seguito:
Caratteristiche e vantaggi di AWS Redshift
Caratteristiche principali
Scalabilità: Redshift può scalare da poche centinaia di gigabyte fino a un petabyte o più.
Archiviazione colonnare e compressione: Utilizza archiviazione colonnare e compressione dei dati per ottimizzare le prestazioni delle query.
Completamente gestito: Elimina la necessità di setup, configurazione e manutenzione manuali.
Sicurezza: Offre solide funzionalità di sicurezza, tra cui crittografia a riposo e in transito, integrazione con VPC e ruoli IAM.
Interfaccia SQL familiare: Offre un’interfaccia SQL familiare e compatibilità con i principali strumenti BI.
Vantaggi principali
Prestazioni: Abilita un’analisi rapida dei dati grazie a query ottimizzate.
Convenienza economica: Paghi solo per lo storage e le risorse di calcolo che consumi.
Semplicità d’uso: Consente di iniziare rapidamente a interrogare e visualizzare i dati.
Scalabilità: Accoglie le crescenti esigenze di dati senza interventi manuali.
Integrazione: Facilita soluzioni dati end-to-end integrandosi con vari strumenti e servizi.
Configurare AWS Redshift
Le sezioni precedenti si sono concentrate soprattutto sulla comprensione generale di Redshift. Ora passiamo agli aspetti tecnici.
Questa sezione illustra prima i prerequisiti principali per configurare correttamente AWS Redshift, poi guida passo passo nella creazione di un cluster Redshift. L’ultima parte si concentra su una spiegazione dettagliata delle impostazioni chiave del cluster, come tipi di nodo, numero di nodi e configurazione della sicurezza.
Prerequisiti
Prima di addentrarci nei dettagli del caso d’uso, rivediamo i prerequisiti necessari per un’implementazione di successo:
Account AWS: necessario per accedere ai servizi AWS; può essere creato dal sito web di AWS.
Competenze SQL: necessarie per estrarre e organizzare i dati; il nostro corso Introduction to SQL è un ottimo punto di partenza.
AWS IAM: È necessario comprendere AWS Identity and Access Management (IAM) per impostare le autorizzazioni corrette per le funzioni Lambda utilizzate.
Conoscenze di base dei servizi AWS: Familiarità con AWS EC2 e S3 è necessaria per lo scopo di questo articolo.
Competenze di coding: Basi di Python per usare librerie e strumenti per interagire con Redshift.
Creazione e configurazione di un cluster Redshift
Questa sezione fornisce tutti i passaggi per creare un cluster Redshift tramite la Console di gestione AWS in 11 semplici step, come illustrato di seguito:
1. Cerca Redshift dalla console e seleziona “Amazon Redshift”:
Cerca e seleziona Redshift dalla Management Console
2. Seleziona il pulsante “Create Cluster” per iniziare a creare un cluster.
Pulsante di creazione del cluster
3. Da questa azione possiamo configurare il cluster fornendo informazioni come identificatore del cluster, dimensione del cluster, tipo di nodo, scelta della zona di disponibilità, numero di nodi.
Configurazione del cluster in 8 passaggi
4. Invece di usare i dati di esempio suggeriti nella stessa pagina, useremo dati da un bucket S3 per caricarli in Redshift.
Ignora l’opzione di caricamento dei dati di esempio
5. È possibile definire le autorizzazioni dei cluster fornendo ruoli IAM. Questa sezione può essere ignorata e affrontata in seguito.
Ignora i permessi del cluster e i ruoli IAM
6. Lascia le configurazioni predefinite per rete, sicurezza, backup, manutenzione e seleziona il pulsante “Create cluster” per creare il cluster.
Creazione del cluster
7. Dopo l’azione precedente, verrai reindirizzato a una nuova pagina che mostra il cluster appena creato. La creazione potrebbe richiedere alcuni minuti; lo stato passa da “Creating” a “Available”.
Stato del cluster da “Creating” a “Available”
Caricare i dati in Redshift
Abbiamo creato con successo i nostri cluster Redshift. Questa sezione ti guida attraverso tutti i passaggi, dalla scelta del dataset sul PIL (Prodotto Interno Lordo) per Paese, Regione e Mondo disponibile sul nostro DataLab fino al caricamento in un bucket S3.
Informazioni sui dati
I nostri dati provengono originariamente dal dataset della Banca Mondiale. Riguardano il PIL di paesi, regioni e mondo, misurato in dollari USA correnti ($). Le regioni si riferiscono a insiemi di paesi, come Europa e Asia centrale.
Le prime dieci osservazioni dei dati sono così:
Prime dieci osservazioni dei dati sul PIL
Usare AWS S3 per caricare i dati
Per un’interazione corretta tra S3 e Redshift dobbiamo prima creare un ruolo IAM e poi creare un bucket S3 per archiviare i dati.
Creare un ruolo IAM
Il vantaggio di creare un ruolo IAM è che stabilisce una connessione tra il nostro cluster Redshift e il bucket S3 che contiene i dati.
La creazione del ruolo IAM avviene così:
Dalla Management Console, cerca “IAM” e seleziona il logo “IAM” dai risultati.
Servizio IAM dalla Management Console
Seleziona “Roles” per visualizzare tutti i ruoli possibili e scegli “Create role” per crearne uno nuovo.
Inizio creazione di un nuovo ruolo
Scegli “AWS service” nel campo “Trusted entity type”, poi “Redshift” come “Use case” e “Next” per continuare.
Passaggi 5–8 della creazione del ruolo AMI
Trova “S3FullAccess” dalla barra di ricerca, spunta l’opzione e seleziona “Next”.
Passaggi 9–10 della creazione del ruolo AMI
Infine, assegna un nome al ruolo, rivedi i dettagli e scegli il pulsante “Create role” per completare la creazione.
Passaggi 11–12 della creazione del ruolo AMI
Una volta andato tutto a buon fine, nell’angolo in alto comparirà il seguente messaggio verde di conferma della creazione del ruolo.
Messaggio di conferma creazione ruolo
Collegare il ruolo IAM a Redshift
Ora che abbiamo il ruolo IAM, possiamo collegarlo al cluster Redshift creato inizialmente, come segue:
Dalla sezione dei cluster, seleziona il cluster datacamp creato e, sotto “Actions”, scegli “Manage IAM roles”.
Collegare il ruolo IAM a Redshift: passaggi 1–2
In questa sezione, scegli il ruolo IAM creato in precedenza e salva le modifiche.
Collegare il ruolo IAM a Redshift: passaggi 3–4
Connettersi con Redshift Query Editor
Per interrogare i dati in Redshift si possono usare vari strumenti, interni ad AWS o esterni. In questo tutorial usiamo il query editor dalla Dashboard di Redshift.
Per usarlo dobbiamo prima creare una connessione al Query editor, partendo dall’opzione “Query in query editor” nella scheda “Query data”:
Query editor dalla scheda Query data
Questa azione porta alla pagina seguente, dove possiamo connetterci al database dopo avergli assegnato un nome e un nome utente come segue:
Connessione al database dal query editor
Creare una tabella per i dati
Dopo aver premuto “Connect”, vediamo la scheda verde “Connected” in alto e le informazioni del database a sinistra.
Risultato dopo la connessione al database
Come si vede sopra, nel database non sono ancora disponibili risorse/dati. Prima di importare i dati, dobbiamo creare una tabella con le stesse caratteristiche dei dati da importare.
Corrispondenza tra prime 10 osservazioni e formato delle colonne della tabella
La tabella viene creata con la seguente query SQL:
CREATETABLE gdp_data (
id INTEGERPRIMARYKEY,
country_name VARCHAR(255),
country_code VARCHAR(10),yearINTEGER,valueDECIMAL(20,2));Offerto da
Ecco una spiegazione della query SQL, un punto per ogni colonna:
id INTEGER PRIMARY KEY: Crea una colonna chiamata "id" di tipo INTEGER e la imposta come chiave primaria della tabella, garantendo valori univoci per ogni riga.
country_name VARCHAR(255): Crea una colonna chiamata "country_name" di tipo VARCHAR, che consente di archiviare stringhe fino a 255 caratteri.
country_code VARCHAR(10): Crea una colonna chiamata "country_code" di tipo VARCHAR, che consente di archiviare stringhe fino a 10 caratteri.
year INTEGER: Crea una colonna chiamata "year" di tipo INTEGER, adatta a memorizzare numeri interi (in questo caso, gli anni).
value DECIMAL(20,2): Crea una colonna chiamata "value" di tipo DECIMAL, che consente di archiviare numeri decimali con una precisione di 20 cifre e 2 decimali.
Ora eseguiamo la query per creare la tabella:
Query per creare la tabella
Questa query crea una tabella chiamata "gdp_data" con le colonne specificate per archiviare i dati sul PIL, come mostrato di seguito:
Tabella dei dati sul PIL creata dalla query SQL
Creare una tabella per i dati
I dati verranno importati nella tabella da un bucket S3. In questa sezione copriamo tutti i passaggi per creare il bucket e caricare i dati.
Trova il servizio S3 dalla Management Console, seleziona il relativo logo e assegnagli un nome lasciando tutto il resto predefinito:
Creazione del bucket S3
Una volta creato, il bucket sarà disponibile nell’elenco di tutti i bucket creati in passato.
Il bucket appena creato
Da qui possiamo selezionare il nome del bucket e caricare i dati sul PIL scaricati in locale in formato CSV.
Pagina per caricare i dati nel bucket
Dopo aver importato correttamente i dati, questi saranno disponibili come mostrato di seguito:
Il CSV caricato nel bucket
Comando COPY: sintassi ed esempi
Complimenti per essere arrivato fin qui!
Questa sezione illustra come copiare i dati da S3 in Redshift come segue.
COPY gdp_data (id, country_name, country_code, year, value): Specifica la tabella e le colonne in cui copiare i dati.
FROM 's3://gdp-data-bucket/gdp/gdp_data.csv': Indica il file di origine nel bucket S3.
IAM_ROLE 'arn:aws:iam::654654631565:role/RedshiftS3FullAccess': Utilizza il ruolo IAM specificato per accedere al bucket S3.
CSV: Indica che il formato del file è CSV (Comma-Separated Values).
IGNOREHEADER 1: Istruisce Redshift a ignorare la prima riga, di solito l’intestazione.
Lo stesso codice dall’editor è riportato di seguito e l’operazione di copia è stata completata con successo dopo pochi secondi:
Attività COPY completata
Per semplicità, invece di caricare tutti i dati del CSV originale, è stato caricato solo un campione casuale di cento osservazioni. Possiamo avere un’anteprima dei dati selezionando l’opzione “Preview data” come segue:
Anteprima delle 100 osservazioni caricate casualmente
Interrogare i dati in Redshift
L’anteprima dei dati mostra solo le prime dieci righe. Tuttavia, potremmo voler interagire di più con i nostri dati per ottenere insight: qui tornano utili le competenze SQL.
In questa sezione esploriamo i dati tramite alcune query SQL.
Query SQL di base
Useremo cinque query SQL per interagire con i dati nel nostro database, a partire dalla più comune: la selezione dei dati.
SELECT*FROM gdp_data
WHERE country_name ='Senegal';Offerto da
Risultato della seconda query
Calcolare il valore medio del PIL per un anno specifico:
SELECTyear,AVG(value)as average_gdp
FROM gdp_data
WHEREyear=2020GROUPBYyear;Offerto da
Risultato della terza query
Trovare i 5 paesi con il PIL più alto in un anno specifico:
SELECT country_name,valueFROM gdp_data
WHEREyear=2020ORDERBYvalueDESCLIMIT5;Offerto da
Risultato della quarta query
Contare il numero di record per anno:
SELECTyear,COUNT(*)as record_count
FROM gdp_data
GROUPBYyearORDERBYyear;Offerto da
Risultato della quinta query
Tecniche di query avanzate
Le query precedenti hanno fornito una comprensione di base dei dati; qui vediamo tre tecniche avanzate di interrogazione.
Funzioni finestra
Calcolo del totale progressivo: questa query calcola il totale progressivo dei valori del PIL per ciascun paese, ordinato per anno.
SELECT
country_name,year,value,SUM(value)OVER(PARTITIONBY country_name ORDERBYyear)as running_total
FROM gdp_data;Offerto da
Risultato del totale progressivo
Uso delle common table expressions (CTE)
CTE per filtraggio e aggregazione: questa query usa una CTE per filtrare i dati includendo solo i record dal 2020 in poi e calcolare quindi il PIL medio per ciascun paese.
WITH recent_data AS(SELECT
country_name,year,valueFROM gdp_data
WHEREyear>=2020)SELECT
country_name,AVG(value)as average_gdp
FROM gdp_data
GROUPBY country_name;Offerto da
Risultato dalle CTE
Uso dei self join
Calcolare la crescita del PIL anno su anno: con questa query calcoliamo la crescita anno su anno del PIL per ciascun paese.
SELECT
a.country_name,
a.year,
a.valueas current_year_value,
b.valueas previous_year_value,(a.value- b.value)/ b.value*100as growth_percentage
FROM gdp_data a
JOIN gdp_data b
ON a.country_name = b.country_name
AND a.year= b.year+1;Offerto da
Risultato della query con self join
Ottimizzazione delle prestazioni
Per garantire prestazioni ottimali e convenienza economica, è fondamentale comprendere i fattori che influenzano le prestazioni di Redshift e applicare le best practice per il tuning del nostro cluster.
In questa sezione analizzeremo gli aspetti chiave del tuning delle prestazioni su Redshift e forniremo spunti basati sulle informazioni del cluster indicato.
Comprendere le prestazioni di Redshift
Le prestazioni in Amazon Redshift sono influenzate da molteplici fattori, dalle configurazioni hardware alle tecniche di ottimizzazione delle query; comprenderli è essenziale per individuare colli di bottiglia e prendere decisioni migliori per migliorare le prestazioni del cluster.
Abbiamo configurato un cluster Redshift composto da due nodi ra3.4xlarge e i dati utilizzati pesano solo 391 KB.
Inoltre, l’immagine seguente mostra che l’utilizzo della CPU del cluster rimane vicino allo 0% per tutto il periodo, indicando che il cluster non è molto utilizzato e potrebbe essere sovradimensionato per il nostro carico attuale.
Utilizzo della CPU del nostro cluster
Alcuni fattori chiave che impattano le prestazioni di Redshift includono:
Configurazione del cluster: Il tipo di nodo e il numero di nodi del cluster incidono significativamente sulle prestazioni. È essenziale scegliere la configurazione appropriata in base ai requisiti del carico.
Distribuzione dei dati e skew: Distribuire uniformemente i dati tra i nodi e minimizzare lo skew aiuta a ottimizzare le performance riducendo i movimenti di dati durante l’esecuzione delle query.
Complessità e ottimizzazione delle query: Scrivere query efficienti e sfruttare le funzionalità di ottimizzazione di Redshift può migliorare notevolmente le prestazioni.
Gestione del carico di lavoro: Gestire e dare priorità ai carichi di lavoro assicura che le query critiche ricevano le risorse necessarie e mantengano prestazioni ottimali.
Best practice per l’ottimizzazione
Per ottimizzare le prestazioni del nostro cluster è importante seguire le best practice nella progettazione delle tabelle e nella gestione dei dati. Anche con un dataset piccolo, applicarle pone basi solide per la crescita futura e l’efficienza.
Stili e chiavi di distribuzione: Scegliere lo stile e la chiave di distribuzione corretti è fondamentale per distribuire uniformemente i dati tra i nodi e minimizzare i movimenti durante l’esecuzione delle query. Con un dataset piccolo e due nodi come nel nostro scenario, l’impatto può essere minore, ma resta una best practice per garantire scalabilità.
Chiavi di ordinamento (sort keys): Selezionare sort key appropriate in base alle colonne usate spesso per ordinamenti, filtri e join può migliorare sensibilmente le prestazioni. Ordinando i dati in fase di ingest, Redshift può organizzarli in modo da ottimizzare l’esecuzione delle query.
Encoding di compressione: Applicare l’encoding di compressione alle colonne in base al tipo di dato e alla cardinalità può ridurre lo spazio occupato e migliorare le prestazioni. Redshift offre l’encoding automatico quando si usa il comando COPY o CREATE TABLE AS SELECT, campionando i dati per scegliere l’encoding ottimale.
Monitoraggio e manutenzione
Il monitoraggio e la manutenzione regolari del cluster sono essenziali per garantire prestazioni ottimali ed efficienza dei costi. L’immagine seguente mostra il dettaglio dei nostri costi mensili su Redshift, evidenziando opportunità di ottimizzazione.
Grafico di costi e utilizzo per l’attuale caso d’uso Redshift
In base all’immagine sopra, il nostro cluster Redshift sembra sovradimensionato per il dataset attuale, con bassa utilizzazione e inefficienze sui costi.
Utilizzando strumenti AWS come Amazon CloudWatch e la Console di gestione AWS, possiamo monitorare metriche chiave come utilizzo della CPU e prestazioni delle query. Queste informazioni aiutano a individuare problemi e a prendere decisioni data-driven per l’ottimizzazione del cluster.
Dato il basso utilizzo del cluster, possiamo considerare le seguenti strategie di ottimizzazione dei costi:
Mettere in pausa il cluster quando non in uso tramite il Cost Optimization Hub
Ridimensionare verso un tipo di istanza più piccolo in linea con i requisiti del carico
Valutare Amazon Redshift Serverless se il carico è intermittente o imprevedibile
Con l’aumentare del volume dei dati e l’evoluzione del carico, monitora continuamente le prestazioni del cluster e rivaluta dimensionamento e strategie di ottimizzazione di conseguenza.
Sicurezza e conformità
Quando si lavora con dati sensibili in Amazon Redshift, garantire i più alti standard di sicurezza e conformità è importante. Con requisiti normativi in crescita e la necessità di proteggere informazioni sensibili, implementare solide misure di sicurezza e rispettare le linee guida di conformità diventa cruciale nella gestione del cluster Redshift.
Conformità e best practice per la sicurezza dei dati
La conformità a normative specifiche di settore e leggi sulla protezione dei dati è una priorità per le organizzazioni che trattano dati sensibili. Amazon Redshift offre funzionalità e capacità per aiutarci a soddisfare efficacemente tali requisiti.
Oltre alla conformità, implementare best practice per la sicurezza dei dati in Amazon Redshift è fondamentale per proteggere le informazioni sensibili da accessi non autorizzati e potenziali violazioni.
Best practice per la sicurezza dei dati
Audit regolari
Eseguire audit di sicurezza regolari è essenziale per identificare vulnerabilità, valutare l’efficacia delle misure esistenti e garantire la conformità continua. Prendi in considerazione le seguenti pratiche di audit:
Rivedi regolarmente i privilegi di accesso degli utenti e rimuovi le autorizzazioni non necessarie
Monitora e analizza i log per attività sospette o tentativi di accesso non autorizzati
Esegui scansioni di vulnerabilità e penetration test per individuare potenziali debolezze
Verifica la conformità a policy interne di sicurezza e regolamenti esterni
Data masking
Il data masking è una tecnica che prevede l’offuscamento di elementi sensibili mantenendo la struttura e il formato dei dati. Mascherando le informazioni sensibili, possiamo proteggerle da accessi non autorizzati e preservare la privacy. Ecco alcuni approcci per il masking dei dati in Amazon Redshift:
Dynamic data masking: Maschera i dati sensibili in tempo reale in base a ruoli e permessi
Static data masking: Crea copie mascherate dei dati da usare in ambienti non di produzione
Tokenizzazione: Sostituisce i dati sensibili con token irreversibili per proteggerne la riservatezza
Controllo degli accessi
Implementare solidi meccanismi di controllo degli accessi è fondamentale per garantire che solo gli utenti autorizzati possano accedere ai dati sensibili nel nostro cluster Amazon Redshift. Tali meccanismi possono essere applicati così:
Usa AWS Identity and Access Management (IAM) per gestire autenticazione e autorizzazione degli utenti.
Implementa il controllo degli accessi basato sui ruoli (RBAC) per concedere permessi in base a ruoli e responsabilità.
Abilita la multi-factor authentication (MFA) per un ulteriore livello di sicurezza
Rivedi e aggiorna regolarmente le policy di accesso per garantire il principio del privilegio minimo.
Conclusione
In questo articolo abbiamo esplorato gli aspetti fondamentali e avanzati dell’uso di Amazon Redshift per il data warehousing. Siamo partiti dall’importanza del data warehousing e da come Amazon Redshift offra una soluzione potente, scalabile ed economica per analizzare grandi dataset con SQL.
Abbiamo poi visto il processo di configurazione di un cluster Amazon Redshift, inclusi prerequisiti, creazione del cluster e impostazioni di configurazione. Abbiamo approfondito anche il caricamento dei dati in Redshift usando AWS S3 e il comando COPY, con esempi di sintassi e spiegazioni.
Inoltre, abbiamo trattato le basi dell’interrogazione dei dati in Redshift, dalle query SQL di base a tecniche avanzate come funzioni finestra e join complessi. Abbiamo discusso anche il tuning delle prestazioni, evidenziando best practice per ottimizzare le query, come stili di distribuzione, sort key ed encoding di compressione.
Infine, abbiamo sottolineato l’importanza di sicurezza e conformità in Amazon Redshift, trattando funzionalità come crittografia e controllo degli accessi, oltre agli aspetti di compliance.
Prossimi passi
Se vuoi ampliare conoscenze e competenze su Amazon Redshift e AWS, vale la pena esplorare le seguenti risorse DataCamp:
Analyzing Ticket Sales Data with Amazon Redshift: Questo code-along pratico ti guida nell’analisi dei dati di vendita dei biglietti con Amazon Redshift, offrendo esperienza concreta su query e visualizzazioni.
Introduction to AWS: Un corso introduttivo completo ai servizi e ai concetti AWS, per costruire basi solide per lavorare con AWS e Redshift.
Introduction to Redshift: Approfondisci Amazon Redshift con questo corso dedicato, che copre temi avanzati come caricamento dati, ottimizzazione delle query e troubleshooting.
Padroneggiando Amazon Redshift e sfruttandone le capacità, potrai ottenere insight di valore dai tuoi dati e prendere decisioni guidate dai dati.
Un data scientist poliedrico che ama condividere le proprie conoscenze e restituire valore agli altri, Zoumana è un content creator su YouTube e un top writer tech su Medium. Trova soddisfazione nel parlare in pubblico, programmare e insegnare. Zoumana ha due lauree magistrali: la prima in informatica con specializzazione in Machine Learning conseguita a Parigi, Francia, e la seconda in Data Science alla Texas Tech University negli Stati Uniti. Ha iniziato la sua carriera come Software Developer presso Groupe OPEN in Francia, per poi passare a IBM come Machine Learning Consultant, dove ha sviluppato soluzioni di IA end-to-end per compagnie assicurative. Successivamente, è entrato in Axionable, la prima startup di Sustainable AI con sede a Parigi e Montréal. Lì ha lavorato come Data Scientist e ha implementato prodotti di IA, principalmente casi d’uso di NLP, per clienti in Francia, Montréal, Singapore e Svizzera. Inoltre, ha dedicato il 5% del suo tempo ad attività di Ricerca e Sviluppo. Attualmente lavora come Senior Data Scientist presso IFC - World Bank Group.
Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Acquisisci le competenze più richieste per ingerire, pulire e gestire i dati in modo efficiente e per programmare e monitorare le pipeline, distinguendoti nel campo dell'ingegneria dei dati.
I dati sono la base delle organizzazioni moderne, ma l’enorme volume di informazioni raccolte e archiviate può essere difficile da gestire. La chiave del successo sta nell’organizzare e analizzare efficacemente questi dati per scoprire insight preziosi che guidino decisioni informate.
Qui entra in gioco il data warehousing. È una soluzione potente che consente alle aziende di consolidare e ottimizzare i propri dati per un’analisi efficiente. E quando si parla di data warehousing, AWS Redshift si distingue come una delle scelte migliori.
In questo articolo esploreremo nel dettaglio AWS Redshift, insieme alle sue caratteristiche principali, ai benefici e alle best practice per configurazione, caricamento dei dati, interrogazione, tuning delle prestazioni, sicurezza e integrazioni.
Che tu sia un professionista dei dati o un decision maker che vuole sfruttare al massimo i propri dati, questo articolo ti fornirà conoscenze e strumenti per avere successo con AWS Redshift.
Che cos’è il Data Warehousing?
Il data warehousing è il processo di raccolta, archiviazione e gestione di grandi quantità di dati strutturati provenienti da varie fonti all’interno di un’organizzazione.
L’obiettivo principale di un data warehouse è fornire un repository centralizzato di informazioni facilmente accessibili, analizzabili e utilizzabili per reportistica e decision making.
I data warehouse sono progettati per supportare query complesse e analisi dei dati, consentendo alle aziende di ricavare insight di valore dai propri dati.
L’importanza del data warehousing
Adottare un data warehouse può offrire alle organizzazioni numerosi vantaggi:
Importanza del data warehousing
Panoramica di AWS Redshift
Che cos’è AWS Redshift?
AWS Redshift è un servizio di data warehousing completamente gestito e basato sul cloud che consente di archiviare e analizzare dataset su scala petabyte. Con AWS Redshift Serverless, puoi accedere e analizzare i dati senza dover configurare manualmente un data warehouse con capacità preallocata.
Amazon Redshift (Fonte)
Il servizio effettua automaticamente il provisioning delle risorse e scala in modo intelligente la capacità del data warehouse per garantire prestazioni rapide, anche per carichi di lavoro molto esigenti e imprevedibili. Paghi solo per le risorse effettivamente utilizzate, perché non ci sono addebiti quando il data warehouse è inattivo.
AWS Redshift consente di caricare i dati e iniziare subito a interrogare usando Amazon Redshift query editor v2 o il tuo strumento di business intelligence (BI) preferito. Il servizio offre il miglior rapporto prezzo/prestazioni e funzionalità SQL familiari in un ambiente semplice, senza necessità di amministrazione.
Indipendentemente dalle dimensioni del dataset, AWS Redshift garantisce prestazioni di query elevate utilizzando gli stessi strumenti basati su SQL e le stesse applicazioni BI comunemente in uso oggi.
Caratteristiche e vantaggi principali di AWS Redshift
AWS Redshift offre numerose funzionalità e vantaggi per aiutare le organizzazioni a archiviare, gestire e analizzare in modo efficiente grandi volumi di dati. Alcune delle caratteristiche e dei benefici chiave sono illustrati di seguito:
Caratteristiche e vantaggi di AWS Redshift
Caratteristiche principali
Vantaggi principali
Configurare AWS Redshift
Le sezioni precedenti si sono concentrate soprattutto sulla comprensione generale di Redshift. Ora passiamo agli aspetti tecnici.
Questa sezione illustra prima i prerequisiti principali per configurare correttamente AWS Redshift, poi guida passo passo nella creazione di un cluster Redshift. L’ultima parte si concentra su una spiegazione dettagliata delle impostazioni chiave del cluster, come tipi di nodo, numero di nodi e configurazione della sicurezza.
Prerequisiti
Prima di addentrarci nei dettagli del caso d’uso, rivediamo i prerequisiti necessari per un’implementazione di successo:
Creazione e configurazione di un cluster Redshift
Questa sezione fornisce tutti i passaggi per creare un cluster Redshift tramite la Console di gestione AWS in 11 semplici step, come illustrato di seguito:
1. Cerca Redshift dalla console e seleziona “Amazon Redshift”:
Cerca e seleziona Redshift dalla Management Console
2. Seleziona il pulsante “Create Cluster” per iniziare a creare un cluster.
Pulsante di creazione del cluster
3. Da questa azione possiamo configurare il cluster fornendo informazioni come identificatore del cluster, dimensione del cluster, tipo di nodo, scelta della zona di disponibilità, numero di nodi.
Configurazione del cluster in 8 passaggi
4. Invece di usare i dati di esempio suggeriti nella stessa pagina, useremo dati da un bucket S3 per caricarli in Redshift.
Ignora l’opzione di caricamento dei dati di esempio
5. È possibile definire le autorizzazioni dei cluster fornendo ruoli IAM. Questa sezione può essere ignorata e affrontata in seguito.
Ignora i permessi del cluster e i ruoli IAM
6. Lascia le configurazioni predefinite per rete, sicurezza, backup, manutenzione e seleziona il pulsante “Create cluster” per creare il cluster.
Creazione del cluster
7. Dopo l’azione precedente, verrai reindirizzato a una nuova pagina che mostra il cluster appena creato. La creazione potrebbe richiedere alcuni minuti; lo stato passa da “Creating” a “Available”.
Stato del cluster da “Creating” a “Available”
Caricare i dati in Redshift
Abbiamo creato con successo i nostri cluster Redshift. Questa sezione ti guida attraverso tutti i passaggi, dalla scelta del dataset sul PIL (Prodotto Interno Lordo) per Paese, Regione e Mondo disponibile sul nostro DataLab fino al caricamento in un bucket S3.
Informazioni sui dati
I nostri dati provengono originariamente dal dataset della Banca Mondiale. Riguardano il PIL di paesi, regioni e mondo, misurato in dollari USA correnti ($). Le regioni si riferiscono a insiemi di paesi, come Europa e Asia centrale.
Le prime dieci osservazioni dei dati sono così:
Prime dieci osservazioni dei dati sul PIL
Usare AWS S3 per caricare i dati
Per un’interazione corretta tra S3 e Redshift dobbiamo prima creare un ruolo IAM e poi creare un bucket S3 per archiviare i dati.
Creare un ruolo IAM
Il vantaggio di creare un ruolo IAM è che stabilisce una connessione tra il nostro cluster Redshift e il bucket S3 che contiene i dati.
La creazione del ruolo IAM avviene così:
Dalla Management Console, cerca “IAM” e seleziona il logo “IAM” dai risultati.
Servizio IAM dalla Management Console
Seleziona “Roles” per visualizzare tutti i ruoli possibili e scegli “Create role” per crearne uno nuovo.
Inizio creazione di un nuovo ruolo
Scegli “AWS service” nel campo “Trusted entity type”, poi “Redshift” come “Use case” e “Next” per continuare.
Passaggi 5–8 della creazione del ruolo AMI
Trova “S3FullAccess” dalla barra di ricerca, spunta l’opzione e seleziona “Next”.
Passaggi 9–10 della creazione del ruolo AMI
Infine, assegna un nome al ruolo, rivedi i dettagli e scegli il pulsante “Create role” per completare la creazione.
Passaggi 11–12 della creazione del ruolo AMI
Una volta andato tutto a buon fine, nell’angolo in alto comparirà il seguente messaggio verde di conferma della creazione del ruolo.
Messaggio di conferma creazione ruolo
Collegare il ruolo IAM a Redshift
Ora che abbiamo il ruolo IAM, possiamo collegarlo al cluster Redshift creato inizialmente, come segue:
Dalla sezione dei cluster, seleziona il cluster datacamp creato e, sotto “Actions”, scegli “Manage IAM roles”.
Collegare il ruolo IAM a Redshift: passaggi 1–2
In questa sezione, scegli il ruolo IAM creato in precedenza e salva le modifiche.
Collegare il ruolo IAM a Redshift: passaggi 3–4
Connettersi con Redshift Query Editor
Per interrogare i dati in Redshift si possono usare vari strumenti, interni ad AWS o esterni. In questo tutorial usiamo il query editor dalla Dashboard di Redshift.
Per usarlo dobbiamo prima creare una connessione al Query editor, partendo dall’opzione “Query in query editor” nella scheda “Query data”:
Query editor dalla scheda Query data
Questa azione porta alla pagina seguente, dove possiamo connetterci al database dopo avergli assegnato un nome e un nome utente come segue:
Connessione al database dal query editor
Creare una tabella per i dati
Dopo aver premuto “Connect”, vediamo la scheda verde “Connected” in alto e le informazioni del database a sinistra.
Risultato dopo la connessione al database
Come si vede sopra, nel database non sono ancora disponibili risorse/dati. Prima di importare i dati, dobbiamo creare una tabella con le stesse caratteristiche dei dati da importare.
Corrispondenza tra prime 10 osservazioni e formato delle colonne della tabella
La tabella viene creata con la seguente query SQL:
Ecco una spiegazione della query SQL, un punto per ogni colonna:
id INTEGER PRIMARY KEY: Crea una colonna chiamata "id" di tipo INTEGER e la imposta come chiave primaria della tabella, garantendo valori univoci per ogni riga.country_name VARCHAR(255): Crea una colonna chiamata "country_name" di tipo VARCHAR, che consente di archiviare stringhe fino a 255 caratteri.country_code VARCHAR(10): Crea una colonna chiamata "country_code" di tipo VARCHAR, che consente di archiviare stringhe fino a 10 caratteri.year INTEGER: Crea una colonna chiamata "year" di tipo INTEGER, adatta a memorizzare numeri interi (in questo caso, gli anni).value DECIMAL(20,2): Crea una colonna chiamata "value" di tipo DECIMAL, che consente di archiviare numeri decimali con una precisione di 20 cifre e 2 decimali.Ora eseguiamo la query per creare la tabella:
Query per creare la tabella
Questa query crea una tabella chiamata "gdp_data" con le colonne specificate per archiviare i dati sul PIL, come mostrato di seguito:
Tabella dei dati sul PIL creata dalla query SQL
Creare una tabella per i dati
I dati verranno importati nella tabella da un bucket S3. In questa sezione copriamo tutti i passaggi per creare il bucket e caricare i dati.
Trova il servizio S3 dalla Management Console, seleziona il relativo logo e assegnagli un nome lasciando tutto il resto predefinito:
Creazione del bucket S3
Una volta creato, il bucket sarà disponibile nell’elenco di tutti i bucket creati in passato.
Il bucket appena creato
Da qui possiamo selezionare il nome del bucket e caricare i dati sul PIL scaricati in locale in formato CSV.
Pagina per caricare i dati nel bucket
Dopo aver importato correttamente i dati, questi saranno disponibili come mostrato di seguito:
Il CSV caricato nel bucket
Comando COPY: sintassi ed esempi
Complimenti per essere arrivato fin qui!
Questa sezione illustra come copiare i dati da S3 in Redshift come segue.
Vediamo cosa succede qui:
Lo stesso codice dall’editor è riportato di seguito e l’operazione di copia è stata completata con successo dopo pochi secondi:
Attività COPY completata
Per semplicità, invece di caricare tutti i dati del CSV originale, è stato caricato solo un campione casuale di cento osservazioni. Possiamo avere un’anteprima dei dati selezionando l’opzione “Preview data” come segue:
Anteprima delle 100 osservazioni caricate casualmente
Interrogare i dati in Redshift
L’anteprima dei dati mostra solo le prime dieci righe. Tuttavia, potremmo voler interagire di più con i nostri dati per ottenere insight: qui tornano utili le competenze SQL.
In questa sezione esploriamo i dati tramite alcune query SQL.
Query SQL di base
Useremo cinque query SQL per interagire con i dati nel nostro database, a partire dalla più comune: la selezione dei dati.
Selezionare tutti i dati
Risultato della prima query
Selezionare i dati per un paese specifico:
Risultato della seconda query
Calcolare il valore medio del PIL per un anno specifico:
Risultato della terza query
Trovare i 5 paesi con il PIL più alto in un anno specifico:
Risultato della quarta query
Contare il numero di record per anno:
Risultato della quinta query
Tecniche di query avanzate
Le query precedenti hanno fornito una comprensione di base dei dati; qui vediamo tre tecniche avanzate di interrogazione.
Funzioni finestra
Calcolo del totale progressivo: questa query calcola il totale progressivo dei valori del PIL per ciascun paese, ordinato per anno.
Risultato del totale progressivo
Uso delle common table expressions (CTE)
CTE per filtraggio e aggregazione: questa query usa una CTE per filtrare i dati includendo solo i record dal 2020 in poi e calcolare quindi il PIL medio per ciascun paese.
Risultato dalle CTE
Uso dei self join
Calcolare la crescita del PIL anno su anno: con questa query calcoliamo la crescita anno su anno del PIL per ciascun paese.
Risultato della query con self join
Ottimizzazione delle prestazioni
Per garantire prestazioni ottimali e convenienza economica, è fondamentale comprendere i fattori che influenzano le prestazioni di Redshift e applicare le best practice per il tuning del nostro cluster.
In questa sezione analizzeremo gli aspetti chiave del tuning delle prestazioni su Redshift e forniremo spunti basati sulle informazioni del cluster indicato.
Comprendere le prestazioni di Redshift
Le prestazioni in Amazon Redshift sono influenzate da molteplici fattori, dalle configurazioni hardware alle tecniche di ottimizzazione delle query; comprenderli è essenziale per individuare colli di bottiglia e prendere decisioni migliori per migliorare le prestazioni del cluster.
Abbiamo configurato un cluster Redshift composto da due nodi ra3.4xlarge e i dati utilizzati pesano solo 391 KB.
Inoltre, l’immagine seguente mostra che l’utilizzo della CPU del cluster rimane vicino allo 0% per tutto il periodo, indicando che il cluster non è molto utilizzato e potrebbe essere sovradimensionato per il nostro carico attuale.
Utilizzo della CPU del nostro cluster
Alcuni fattori chiave che impattano le prestazioni di Redshift includono:
Best practice per l’ottimizzazione
Per ottimizzare le prestazioni del nostro cluster è importante seguire le best practice nella progettazione delle tabelle e nella gestione dei dati. Anche con un dataset piccolo, applicarle pone basi solide per la crescita futura e l’efficienza.
Monitoraggio e manutenzione
Il monitoraggio e la manutenzione regolari del cluster sono essenziali per garantire prestazioni ottimali ed efficienza dei costi. L’immagine seguente mostra il dettaglio dei nostri costi mensili su Redshift, evidenziando opportunità di ottimizzazione.
Grafico di costi e utilizzo per l’attuale caso d’uso Redshift
In base all’immagine sopra, il nostro cluster Redshift sembra sovradimensionato per il dataset attuale, con bassa utilizzazione e inefficienze sui costi.
Utilizzando strumenti AWS come Amazon CloudWatch e la Console di gestione AWS, possiamo monitorare metriche chiave come utilizzo della CPU e prestazioni delle query. Queste informazioni aiutano a individuare problemi e a prendere decisioni data-driven per l’ottimizzazione del cluster.
Dato il basso utilizzo del cluster, possiamo considerare le seguenti strategie di ottimizzazione dei costi:
Con l’aumentare del volume dei dati e l’evoluzione del carico, monitora continuamente le prestazioni del cluster e rivaluta dimensionamento e strategie di ottimizzazione di conseguenza.
Sicurezza e conformità
Quando si lavora con dati sensibili in Amazon Redshift, garantire i più alti standard di sicurezza e conformità è importante. Con requisiti normativi in crescita e la necessità di proteggere informazioni sensibili, implementare solide misure di sicurezza e rispettare le linee guida di conformità diventa cruciale nella gestione del cluster Redshift.
Conformità e best practice per la sicurezza dei dati
La conformità a normative specifiche di settore e leggi sulla protezione dei dati è una priorità per le organizzazioni che trattano dati sensibili. Amazon Redshift offre funzionalità e capacità per aiutarci a soddisfare efficacemente tali requisiti.
Oltre alla conformità, implementare best practice per la sicurezza dei dati in Amazon Redshift è fondamentale per proteggere le informazioni sensibili da accessi non autorizzati e potenziali violazioni.
Best practice per la sicurezza dei dati
Audit regolari
Eseguire audit di sicurezza regolari è essenziale per identificare vulnerabilità, valutare l’efficacia delle misure esistenti e garantire la conformità continua. Prendi in considerazione le seguenti pratiche di audit:
Data masking
Il data masking è una tecnica che prevede l’offuscamento di elementi sensibili mantenendo la struttura e il formato dei dati. Mascherando le informazioni sensibili, possiamo proteggerle da accessi non autorizzati e preservare la privacy. Ecco alcuni approcci per il masking dei dati in Amazon Redshift:
Controllo degli accessi
Implementare solidi meccanismi di controllo degli accessi è fondamentale per garantire che solo gli utenti autorizzati possano accedere ai dati sensibili nel nostro cluster Amazon Redshift. Tali meccanismi possono essere applicati così:
Conclusione
In questo articolo abbiamo esplorato gli aspetti fondamentali e avanzati dell’uso di Amazon Redshift per il data warehousing. Siamo partiti dall’importanza del data warehousing e da come Amazon Redshift offra una soluzione potente, scalabile ed economica per analizzare grandi dataset con SQL.
Abbiamo poi visto il processo di configurazione di un cluster Amazon Redshift, inclusi prerequisiti, creazione del cluster e impostazioni di configurazione. Abbiamo approfondito anche il caricamento dei dati in Redshift usando AWS S3 e il comando COPY, con esempi di sintassi e spiegazioni.
Inoltre, abbiamo trattato le basi dell’interrogazione dei dati in Redshift, dalle query SQL di base a tecniche avanzate come funzioni finestra e join complessi. Abbiamo discusso anche il tuning delle prestazioni, evidenziando best practice per ottimizzare le query, come stili di distribuzione, sort key ed encoding di compressione.
Infine, abbiamo sottolineato l’importanza di sicurezza e conformità in Amazon Redshift, trattando funzionalità come crittografia e controllo degli accessi, oltre agli aspetti di compliance.
Prossimi passi
Se vuoi ampliare conoscenze e competenze su Amazon Redshift e AWS, vale la pena esplorare le seguenti risorse DataCamp:
Padroneggiando Amazon Redshift e sfruttandone le capacità, potrai ottenere insight di valore dai tuoi dati e prendere decisioni guidate dai dati.