DuckDB — Misión
Secciones
Ajustes de lectura
Voz natural grabada para este curso, la misma en todos los navegadores.
Ninguna voz para este idioma en este navegador.
Más voces
Código y términos técnicos en inglés
Desactivado: la voz de la página lo lee todo, sin pausa entre dos voces.
Ninguna voz para este idioma en este navegador.
Más voces
Más voces: Microsoft Edge ofrece voces naturales en línea, y Windows (Configuración › Hora e idioma › Voz), macOS y Android instalan otras.
Por qué estoy aprendiendo esto
Sección titulada «Por qué estoy aprendiendo esto»Cada pregunta que me hago sobre la CI de este sitio — qué workflow falla más, cuánto tardan los jobs de Windows, qué step se volvió más lento — acaba en un montón de JSON salido de gh run list y gh api. Lo leo con jq, o lo pego en una hoja de cálculo. DuckDB promete responder a esas preguntas con SQL, directamente desde los archivos, sin instalar ningún servidor.
A quién va dirigido este curso
Sección titulada «A quién va dirigido este curso»Conoces el SQL de SQL Server, PostgreSQL o SQLite: SELECT, JOIN, GROUP BY. Escribes C# o Java. No necesitas saber nada de analítica ni de ingeniería de datos.
Qué es DuckDB, en una tabla
Sección titulada «Qué es DuckDB, en una tabla»| SQL Server / PostgreSQL | SQLite | DuckDB | |
|---|---|---|---|
| Se ejecuta | como un servidor | dentro de tu proceso | dentro de tu proceso |
| Pensado para | transacciones (OLTP) | transacciones, aplicaciones pequeñas | analítica (OLAP): recorridos, agregaciones, joins sobre muchas filas |
| Almacenamiento | por filas | por filas | por columnas |
| Base de datos | una instancia de servidor | un archivo | un archivo, o ninguno: también consulta directamente archivos CSV, JSON y Parquet |
| Desde .NET | Microsoft.Data.SqlClient, Npgsql |
Microsoft.Data.Sqlite |
DuckDB.NET (ADO.NET) |
| Desde Java | driver JDBC | driver JDBC | driver JDBC |
La primera fila de la tabla, en imagen: SQL Server y PostgreSQL se ejecutan como un servidor, en un proceso propio, mientras que DuckDB se ejecuta dentro de tu proceso, junto a los archivos que lee.
flowchart LR subgraph p1["tu proceso"] app1["código C# o Java"] --> driver["driver"] end subgraph p2["proceso servidor"] server["SQL Server o PostgreSQL"] end driver --> server subgraph p3["tu proceso"] app2["código C# o Java"] --> duck["DuckDB, mediante DuckDB.NET o JDBC"] end dbfile[("un archivo de base de datos, o ninguno")] files[("archivos CSV, JSON y Parquet")] duck --> dbfile duck --> filesLos datos
Sección titulada «Los datos»El curso consulta una instantánea del historial de GitHub Actions de este mismo repositorio, exportada el 2026-09-14 en code/duckdb/data:
runs.json: 125 ejecuciones de workflows, obtenidas congh run list --limit 1000 --json databaseId,workflowName,event,status,conclusion,createdAt,updatedAt,startedAt,headBranch,headSha,attempt;jobs.json: los 315 jobs de esas ejecuciones, con sus steps, obtenidos de la API REST de GitHub.
Son las ejecuciones que produjo el curso de GitHub Actions: fallos reales, tiempos reales, tres sistemas operativos.
Al final de este curso, sabré
Sección titulada «Al final de este curso, sabré»- consultar archivos CSV, JSON y Parquet con SQL desde la CLI de DuckDB;
- usar las extensiones SQL de DuckDB para escribir consultas analíticas más cortas;
- aplanar JSON anidado con
STRUCT,LISTyunnest; - convertir entre formatos y leer muchos archivos a la vez;
- usar DuckDB desde C# y desde Java;
- leer un plan de consulta y saber cuándo DuckDB no es la herramienta adecuada.
| # | Lección | Si conoces SQL Server |
|---|---|---|
| 1 | Primeras consultas | sqlcmd, OPENROWSET, SELECT INTO |
| 2 | Friendly SQL: fechas, ventanas, QUALIFY, PIVOT |
funciones de ventana, PIVOT |
| 3 | Datos anidados: STRUCT, LIST, unnest |
OPENJSON, CROSS APPLY |
| 4 | Archivos: CSV, Parquet, globs, archivos remotos | BULK INSERT, tablas externas |
| 5 | DuckDB desde C# | ADO.NET |
| 6 | DuckDB desde Java | JDBC |
| 7 | Rendimiento: planes y almacenamiento por columnas | planes de ejecución, índices columnstore |
| 8 | Persistencia, transacciones y concurrencia | aislamiento, bloqueos |
| — | Diario |
Recursos
Sección titulada «Recursos»- Documentación de DuckDB
- Por qué DuckDB
- CLI de DuckDB
- Friendly SQL: las extensiones al SQL estándar
- Código fuente de DuckDB