Vai al contenuto principale
Data Science

Introduzione a DuckDB: cos'è e perché dovresti usarlo

Scopri DuckDB, il database analitico veloce e facile da usare per Python e R. Conosci le sue caratteristiche principali, i casi d'uso e come ottimizza le attività di analisi dei dati.
Kurtis Pykes 's photo
Kurtis Pykes
Aggiornato · 7 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Crea il tuo account gratuito

Pratica and corso your progress.

Continua Con Google
Continuando, accetti i nostri Termini di utilizzo, la nostra Informativa sulla privacy e che i tuoi dati siano conservati negli Stati Uniti.

Nel mondo della data science e dell'analisi dei dati, estrarre insight dai dati comporta spesso una serie di passaggi, tipicamente eseguiti in Python con librerie come pandas. Pur essendo potente, pandas può incontrare problemi di performance con dataset di grandi dimensioni e operazioni ad alto consumo di risorse.

Puntando a un equilibrio tra funzionalità robuste ed efficienza, DuckDB emerge come un'ottima alternativa. Come database analitico ad alta velocità e facile da usare, DuckDB sta trasformando l'elaborazione dei dati in Python e R.

In questo articolo esploreremo:

  • Le caratteristiche e le funzionalità uniche di DuckDB
  • I vantaggi di DuckDB rispetto ai tradizionali strumenti di manipolazione dei dati
  • Casi d'uso pratici che mostrano il potenziale di DuckDB
  • Linee guida per lavorare con DuckDB in Python e R

Alla fine dell'articolo capirai perché DuckDB è uno strumento da considerare per le tue attività di analisi dei dati, indipendentemente dalla dimensione dei dati e dalla complessità delle operazioni coinvolte.

Che cos'è DuckDB?

DuckDB è un DBMS (DataBase Management System) gratuito, open source, incorporato, in-process, relazionale, per l'OLAP (OnLine Analytical Processing). Sono molte parole e acronimi, quindi vediamo di chiarire:

  • Per in-process intendiamo che le funzionalità del DBMS vengono eseguite all'interno dell'applicazione da cui stai accedendo, invece che come un processo esterno a cui l'applicazione si collega
  • OLAP significa che il database è progettato per la analisi dei dati. Esistono anche database OLTP (OnLine Transaction Processing), progettati per gestire grandi quantità di dati transazionali.

La principale differenza tra OLAP e OLTP riguarda il modo in cui i dati sono archiviati. I database OLTP in genere memorizzano i dati per record, assicurando che tutte le informazioni associate a un record siano conservate vicine tra loro in memoria. Sono inoltre ottimizzati per leggere e scrivere righe in modo efficiente.

Al contrario, i database OLAP sono comunemente orientati alle colonne, il che significa che i dati sono organizzati per colonne. Tutti i dati associati a una colonna sono archiviati vicini in memoria e il database è ottimizzato per leggere e calcolare in modo efficiente sulle colonne.

Poiché DuckDB è un database OLAP, qualsiasi dato archiviato è organizzato per colonne. Inoltre, DuckDB è ottimizzato per eseguire query complesse sui dati (ad esempio, join, aggregazioni, raggruppamenti, ecc.) – dai un'occhiata al percorso di competenze SQL Fundamentals per saperne di più.

Se conosci SQLite, il modo più semplice per immaginare DuckDB è come la sua replica orientata all'analisi. Questo spiega perché DuckDB è così popolare: unisce la semplicità di SQLite e le funzionalità di Snowflake sul tuo computer locale. DuckDB colma il bisogno di una soluzione di database incorporato per l'elaborazione analitica.

Caratteristiche principali di DuckDB

Vediamo alcune delle caratteristiche chiave di DuckDB.

Query analitiche veloci

DuckDB è incredibilmente veloce; questo può sorprendere chi è abituato a database che gestiscono carichi OLAP, come PostgreSQL. Tradizionalmente, i database OLAP tendono ad avere tempi di risposta lenti poiché in genere elaborano più dati.

Tuttavia, DuckDB si basa su un motore di query vettorializzato a colonne, che consente di utilizzare in modo efficiente la cache della CPU e velocizzare i tempi di risposta per i carichi di lavoro di query analitiche.

Supporta SQL e integrazione con altri linguaggi di programmazione

DuckDB consente di eseguire query SQL complesse e fornisce API per Java, C, C++ e altro. È anche profondamente integrato in Python e R, permettendo analisi dei dati interattive ed efficienti; puoi quindi interagire con DuckDB dal tuo linguaggio di programmazione preferito. Sono disponibili anche parole chiave SQL aggiuntive che rendono le query più facili da scrivere, come EXCLUDE, REPLACE e ALL.

Nota: DuckDB non ha dipendenze esterne, quindi non devi preoccuparti di problemi di dipendenze.

Gratuito e open source

DuckDB è open source e ha diversi contributori attivi, il che significa che sviluppi e miglioramenti possono essere implementati rapidamente. È anche gratuito, sebbene potrebbe non rimanere gratuito per sempre.

Casi d'uso di DuckDB

I due casi d'uso più comuni per DuckDB sono l'analisi dei dati interattiva e l'edge computing.

Vediamo ciascuno di essi a turno.

Analisi dei dati interattiva

L'analisi dei dati descrive la serie di passaggi coinvolti nell'elaborazione e nella modellazione dei dati. Lo scopo dell'analisi dei dati è scoprire informazioni utili per guidare conclusioni e decisioni basate sui dati.

Oggi le aziende impiegano data scientist e analisti che si occupano di questa responsabilità utilizzando tecnologie come i linguaggi di programmazione Python e R per condurre le loro analisi.

DuckDB offre una valida alternativa a chi preferisce usare SQL per lo sviluppo locale rispetto a SQLite, che fatica a gestire carichi OLAP a causa della mancanza di funzionalità per l'analisi dei dati.

Edge computing

I database incorporabili, come DuckDB, consentono di analizzare i dati in edge. L'edge computing è un paradigma emergente di calcolo distribuito, che si riferisce a una gamma di reti e dispositivi portati presso o più vicino alla posizione in cui sono necessari.

Elaborare i dati più vicino a dove sono richiesti consente di migliorare i tempi di risposta e preservare la larghezza di banda.

Per iniziare con DuckDB

L'ambiente determina i passaggi necessari per installare DuckDB, ma la guida completa all'installazione è disponibile nella documentazione di DuckDB.

Per lo più è abbastanza semplice. Ti servono solo poche righe di codice, dato che DuckDB è una soluzione incorporata. Non richiede alcun server e non ha dipendenze esterne.

Ecco un esempio di come installeremmo DuckDB usando Python:

pip install duckdb==0.8.0

E in R:

install.packages("duckdb")

Ora, vediamo alcuni esempi di codice.

Lavorare con DuckDB in Python

Una volta installato DuckDB, iniziare è piuttosto semplice. Ti basta import duckdb nel tuo ambiente, poi connetterti a un database esistente o crearne uno nuovo se necessario.

Per esempio:

import duckdb 
connection = duckdb.connect()

Poiché non è stato passato alcun file di database come parametro al metodo connect(), verrà creato un nuovo database.

Tuttavia, il modo più semplice per iniziare a eseguire query SQL con DuckDB è usare il metodo sql().

# Source: Basic API usage - https://duckdb.org/docs/api/python/overview.html
import duckdb
duckdb.sql('SELECT 42').show()

L'esecuzione di questo comando farà girare un database in memoria archiviato globalmente nel modulo Python e restituirà una relation, che è essenzialmente una rappresentazione simbolica della query.

Nota: la query non viene eseguita finché il risultato non viene richiesto esplicitamente, come segue:

# Source: Execute SQL - https://duckdb.org/docs/guides/python/execute_sql.html
results = duckdb.sql('SELECT 42').fetchall()
print(results)

"""
[(42,)]
"""

Possiamo anche usare il metodo df() per convertire i dati in un DataFrame Pandas:

results_df = duckdb.sql('SELECT 42').df()
print(results) 

"""
    42
0   42
"""

Oppure puoi usare uno dei tanti metodi di ingestione dati per leggere i dati in memoria:

# Source: Python API - https://duckdb.org/docs/api/python/overview.html 
import duckdb
duckdb.read_csv('example.csv') # read a CSV file into a Relation
duckdb.read_parquet('example.parquet')# read a Parquet file into a Relation
duckdb.read_json('example.json') # read a JSON file into a Relation

duckdb.sql('SELECT * FROM "example.csv"')     # directly query a CSV file

Avvertenza: Se usi il metodo sql() senza prima connetterti a un database esistente, qualsiasi dato memorizzato nei file andrà perso dopo la chiusura del programma. Puoi evitarlo stabilendo una connessione usando il metodo connect() di cui abbiamo parlato all'inizio della sezione.

Conclusioni e risorse aggiuntive

DuckDB è un database OLAP utilizzato da professionisti dei dati, come data scientist e analisti, per analizzare i dati in modo rapido ed efficiente. Sfrutta un motore di esecuzione di query SQL capace di eseguire query complesse su dataset di grandi dimensioni.

DuckDB ha anche integrazioni con molti altri linguaggi di programmazione, quindi è possibile accedervi dal tuo linguaggio preferito.

Per continuare ad approfondire, dai un'occhiata alla cheat sheet SQL di base e a come DuckDB ha reso SQL un cittadino di prima classe in DataLab.


Kurtis Pykes 's photo
Author
Kurtis Pykes
LinkedIn
Argomenti
Data Science
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

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.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra altro