DuckDB: SQLite per analytics, OLAP in-process

DuckDB (2022, Mark Raasveldt e Hannes Mühleisen, CWI Amsterdam): database analitico columnar in-process, zero dependency, fast su Parquet/CSV/JSON. L'equivalente OLAP di SQLite.

Open SourceR&D DuckDBOLAPAnalyticsColumnarCWIOpen Source

Un OLAP embedded

SQLite è il database relazionale in-process più diffuso al mondo (in ogni browser, smartphone, app). Ma è OLTP: progettato per transazioni, row-oriented. Per query analitiche pesanti è inefficiente.

DuckDB è il suo equivalente OLAP: database columnar in-process, fondato nel 2019 da Mark Raasveldt e Hannes Mühleisen al CWI Amsterdam (stesso istituto dove è nato Python). La versione 0.6 di novembre 2022 consolida produzione maturity. La 1.0 arriverà giugno 2024. Licenza MIT.

In-process analytics

Come SQLite: nessun server, nessuna installazione complessa. Una libreria compilata (C++) si integra nel processo dell’applicazione:

import duckdb
# Query diretto su Parquet files
result = duckdb.sql("""
    SELECT country, SUM(sales) as total
    FROM 's3://bucket/data/*.parquet'
    WHERE year = 2023
    GROUP BY country
    ORDER BY total DESC
""").df()

DuckDB legge nativamente:

  • Parquet (columnar) — streaming e predicate pushdown
  • CSV — parser ottimizzato
  • JSON, Arrow, SQLite, Postgres (via extension)
  • HTTP(S) URL remoti
  • S3, Azure Blob, GCS

Performance

DuckDB è competitivo con Spark/Polars/ClickHouse per query singolo-nodo su dataset fino a centinaia di GB. Vantaggio: zero overhead di deploy distribuito. Su laptop con SSD moderno, DuckDB gestisce query analitiche su GB di Parquet in secondi.

Uso

  • Analytics locale di data scientist senza infrastruttura
  • Notebook interattivi (Jupyter, Observable)
  • Embedded analytics in applicazioni (AI model training, ad-hoc exploration)
  • Testing di pipeline ETL
  • Data engineering — alternativa leggera a Spark locale

Ecosistema

  • Python, R, Node.js, Java, Go — bindings ufficiali
  • SQL dialetto PostgreSQL-compatibile + estensioni analytical
  • Extensions: httpfs, postgres_scanner, parquet, json, spatial

Nel contesto italiano

Adozione rapida nei team di data analytics e ML italiani dal 2023.


Riferimenti: DuckDB (2019+), Mark Raasveldt, Hannes Mühleisen, CWI Amsterdam. Licenza MIT. 1.0 (giugno 2024). In-process columnar database. Parquet/CSV/JSON native reading. SQL PostgreSQL-compatibile.

Vuoi supporto? Sei sotto attacco? Stato dei servizi
Vuoi supporto? Sei sotto attacco? Stato dei servizi