DuckDB 2.0, cuya versión alfa ya está disponible, introduce mejoras significativas en el rendimiento para usuarios que construyen pipelines de datos en lugar de motores de bases de datos. El artículo técnico detalla tres características clave que aceleran las consultas sin modificar el código SQL: el I/O asíncrono, las CTE recursivas y el tipo de dato VARIANT.
En cuanto al I/O asíncrono, la versión 2.0 permite leer archivos en AWS S3 hasta tres veces más rápido que la versión 1.5.5. Esto se logra mediante un pool de hilos dedicado que descarga datos por adelantado, manteniendo la CPU ocupada mientras se procesan los resultados. Por ejemplo, la lectura de un archivo Parquet de 2,2 GB redujo el tiempo de ejecución de 18,8 a 7,7 segundos en una máquina de prueba. La configuración por defecto activa esta función, aunque se puede desactivar con el parámetro read_ahead_depth.
Para las CTE recursivas, el motor de DuckDB 2.0 ha sido reescrito para optimizar la navegación por jerarquías profundas, como historiales de Git o árboles de archivos. En lugar de leer la tabla completa en cada iteración, el nuevo motor construye una tabla de búsqueda única y realiza consultas de punto único. Esto reduce drásticamente el tiempo de ejecución en datasets con miles de niveles de profundidad, permitiendo que consultas que antes requerían bases de datos de grafos se ejecuten en tiempo razonable.
Finalmente, el tipo VARIANT permite almacenar datos JSON de manera más eficiente mediante un proceso de 'shredding'. El sistema identifica campos consistentes entre filas y los convierte en columnas tipadas, mientras que los datos variables se almacenan en un residuo binario. Esta técnica reduce el uso de almacenamiento y mejora el rendimiento en consultas, especialmente en registros estructurados donde los campos clave son siempre del mismo tipo.
