DuckDB 2.0 «Cinnamon Teal»¶
Qué es esto 🧐🧐
Taller de 2–3 horas para estudiantes de Ingeniería de Datos. Recorre las novedades de DuckDB 2.0 que más afectan al trabajo diario: el motor cliente-servidor (Quack), la integración con Polars, MySQL/MariaDB, CSV, JSON y Parquet (incluido Hive partitioning), el nuevo dialecto SQL y el tipo VARIANT.
Cada módulo consta de una nota teórica y un cuaderno Jupyter que la acompaña.
🗺️ Mapa del taller¶
flowchart TD
A["01 · DuckDB 2.0 en 10'<br/>¿Qué cambia y por qué?"] --> B["02 · SQL<br/>Dialecto, lambdas, CTEs"]
B --> C["03 · Polars + DuckDB<br/>Arrow como frontera"]
C --> D["04 · CSV y JSON"]
D --> E["05 · Parquet y Hive<br/>Particiones y metadatos"]
E --> F["06 · MySQL / MariaDB<br/>Pushdown remoto"]
F --> G["07 · Quack<br/>Cliente-Servidor"]
G --> H["08 · VARIANT<br/>JSON con esteroides 💪💪"]
classDef base fill:#1f3a5f,stroke:#7fb2f0,color:#e6f0ff
classDef server fill:#4a2b52,stroke:#c58fe0,color:#f6e9ff
class A,B,C,D,E base
class F,G,H server
📚 Módulos del taller¶
| # | Módulo | Cuaderno | Tiempo |
|---|---|---|---|
| 01 | 01 - DuckDB 2.0 en 10 minutos | cuadernos/00_entorno.ipynb |
15 min |
| 02 | 02 - SQL que merece la pena | cuadernos/01_sql.ipynb |
20 min |
| 03 | 03 - DuckDB y Polars | cuadernos/02_polars.ipynb |
20 min |
| 04 | 04 - CSV y JSON | cuadernos/03_csv_json.ipynb |
15 min |
| 05 | 05 - Parquet y Hive partitioning | cuadernos/04_parquet_hive.ipynb |
20 min |
| 06 | 06 - MySQL y MariaDB | cuadernos/05_mysql_mariadb.ipynb |
20 min |
| 07 | 07 - Quack cliente-servidor | cuadernos/06_quack_servidor.ipynb + cuadernos/07_quack_cliente.ipynb |
15 min |
| 08 | 08 - VARIANT | cuadernos/08_variant.ipynb |
10 min |
| — | 09 - Guion de la sesión | — | planificación |
| — | 10 - Anexo migración | — | consulta |
Orden de ejecución
Los cuadernos son independientes entre sí salvo el par de Quack: 06_quack_servidor.ipynb debe quedar ejecutándose mientras se usa 07_quack_cliente.ipynb.
🧩 Arquitectura Conceptual¶
flowchart LR
subgraph local["Proceso (thread) Python"]
PY["Polars / pandas"]
DU["DuckDB in-process"]
PY <-->|"Arrow, cero copias"| DU
end
subgraph files["Ficheros Locales"]
CSV[("CSV")]
JSON[("JSON / NDJSON")]
PQ[("Parquet<br/>+ Hive")]
end
subgraph remote["Datos Remotos (BDs)"]
MY[("MySQL / MariaDB")]
QK["Servidor Quack"]
end
DU --> CSV
DU --> JSON
DU --> PQ
DU <-->|"CONNECT + pushdown"| MY
DU <-->|"ATTACH + CONNECT"| QK
La idea que resume el taller: DuckDB no sustituye a tu base de datos, se sienta encima de todas tus fuentes — pero a partir de la 2.0 también puede transladar el cómputo fuera del proceso.
📎 Fuentes y Material de Apoyo¶
- Documentación Oficial DuckDB 💎💎: DuckDB v2.0
- Moodle Asignatura
- Guía Polars: UPMdrive
- Dataset Eurotrains
- CSVs
- Parquet
- Base de Datos MariaDB/MySQL