Saltar a contenido

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