
Hace un par de años, si me hubieras dicho que iba a emocionarme con una base de datos embebida tipo SQLite, te habría dicho que estabas loco. Pero acá estoy, leyendo el anuncio de DuckDB 2.0 como quien lee la cartelera de un concierto. La wea es bacán, po.
DuckDB empezó como ese proyecto chico que todos usaban para transformar archivos CSV gigantes sin morir en el intento. Una base de datos in-process, sin servidor, sin configuraciones raras. La prendías, hacías tu consulta analítica y la apagabas. Perfecta para changas, scripts de una pega, o cuando necesitas procesar un Parquet de 20 GB en tu laptop sin que explote.
La vuelta de tuerca que nadie pidió pero todos necesitaban
Ahora, con la versión 2.0 —que los de DuckLabs bautizaron Cyanoptera, un pato color canela— la cosa cambió de piso. No es solo una mejora de performance, es un cambio de chip completo. Pasaron de «la base de datos que corre dentro de tu script» a «la base de datos que también puede ser tu servidor».
Y no es humo. El protocolo Quack y el nuevo comando CONNECT permiten que cualquier proceso DuckDB se comporte como servidor y que otro proceso se conecte remotamente a ejecutar consultas. Eso significa que puedes tener una instancia corriendo en tu VPS, recibiendo queries de otros lados, con MVCC y aislamiento de transacciones incluidos. Básicamente, le metieron pilas a algo que antes era de un solo usuario.
Lo que me hizo levantar una ceja
Primero, el nuevo tipo VARIANT. Piensa en JSON, pero rápido. Muy rápido. No es texto, es un formato binario que DuckDB «shreddea» automáticamente para comprimir y ejecutar queries sin que tú declares esquema. Ideal para logs, eventos, datos que cambian de forma cada rato. Si trabajas con pipelines de datos semi-estructurados, esto es oro puro.
Segundo, los triggers. Al fin. Audit tables sin depender de aplicaciones externas. BEFORE, AFTER, FOR EACH ROW, FOR EACH STATEMENT. Todo ahí. Si ya pensabas usar DuckDB como servicio largo, los triggers te dan la herramienta que te faltaba para que la base de datos misma registre cambios sin que un microservicio de Python lo haga por ella.
Tercero, y esto me gustó caleta: I/O asíncrono. Antes, cuando leías Parquet desde S3, el paralelismo estaba limitado por el acceso síncrono. Ahora desacoplaron la capa de I/O del procesamiento de queries. Resultado? Consultas desde object storage mucho más rápidas, especialmente si trabajas con lakehouses.
Números que duelen (en el buen sentido)
Pusieron un ejemplo que me dejó helado: un recursive CTE sobre un grafo de un millón de aristas. En DuckDB 1.5.4 corre en 4.9 segundos. En la preview de 2.0? 0.12 segundos. Es un 40× más rápido. Para la pega que hago con grafos y análisis de relaciones, eso es la diferencia entre un café y una siesta.
El parser nuevo: chau PostgreSQL, hola PEG
Otro detalle que parece técnico pero es simbólico: DuckDB usaba un parser derivado de PostgreSQL desde siempre. En 2.0 se mandaron con su propio parser PEG. ¿Por qué importa? Porque ahora las extensiones pueden meterse en la gramática misma. Eso abre la puerta a dialectos enteros corriendo sobre DuckDB. Imagina cargar una extensión que entienda sintaxis de Spark directamente, sin reescribir queries.
Mi opinión? DuckDB está cocinando algo grande
Hace unos meses el hype era «DuckDB como el lakehouse local». Ahora el mensaje es claro: quieren que DuckDB sea una alternativa real a PostgreSQL en workloads analíticos, pero sin la burocracia de instalar un servidor separado. La clave es que siempre fue transaccional, solo que nadie lo usaba así porque era in-process. Ahora que tiene modo servidor, se abre un mundo.
En mi caso, ya estoy pensando en reemplar algunos scripts de transformación de datos que hago en Python por procesos DuckDB corriendo en el VPS, conectados desde el dashboard. Menos código, más velocidad, misma flexibilidad. Y si el motor de storage nuevo es tan robusto como prometen, podría dejar de tenerle miedo a las tablas anchas.
El único pero: hay breaking changes. El formato de storage cambia, el parser cambia, la sintaxis de lambdas cambia. Si tienes bases en producción con DuckDB 1.x, planifica una migración. Pero hey, es un bump de major version. Se espera.
En resumen: si eres de los que procesan datos más allá de lo básico, DuckDB 2.0 es una señal de que la pega de analítica está cambiando. Y esta vez, el cambio viene con patos.
Fuente de inspiración: A Preview of DuckDB v2.0