DuckDB 0.6.0 ya fue liberado e incluye mejoras de escritura en disco, carga de datos y mas
Se dio a conocer el lanzamiento de la nueva versión del DBMS DuckDB 0.6.0, version en la cual se ha mejorado la compresión de datos, ademas de que se han añadido nuevas funciones, asi como tambien mejoras en el almacenamiento, entre otras cosas más.
DuckDB combina propiedades de SQLite como la compacidad, la capacidad de conectarse en forma de biblioteca integrada, el almacenamiento de la base de datos en un solo archivo y una conveniente interfaz CLI, con herramientas y optimizaciones para realizar consultas analíticas cubriendo una parte significativa de los datos almacenados, por ejemplo, que realizan la agregación de todo el contenido de las tablas o fusionan varias tablas grandes.
Principales novedades de DuckDB 0.6.0
En esta nueva versión que se presenta se destaca que se continuó trabajando en la mejora del formato de almacenamiento, ademas de que se ha implementado un modo de escritura de disco, en el que cuando se carga un gran conjunto de datos en una transacción, los datos se comprimen y se transmiten a un archivo desde la base de datos sin esperar a que el comando COMMIT confirme la transacción.
Otro de los cambios que se destaca de la nueva version, es que se agregó soporte para la carga paralela de datos en tablas separadas, lo que puede aumentar significativamente la velocidad de carga en sistemas multinúcleo. Por ejemplo, en la versión anterior, cargar una base de datos con 150 millones de filas en una CPU de 10 núcleos tomó 91 segundos, y en la nueva versión, esta operación toma 17 segundos. Hay dos modos de carga paralela: con conservación del orden de los registros y sin conservación del orden.
Para la compresión de datos, se utiliza el algoritmo FSST (tabla rápida de símbolos estáticos), que le permite empaquetar datos dentro de filas utilizando un diccionario común de coincidencias de tipos. La aplicación del nuevo algoritmo permitió reducir el tamaño de la base de datos de prueba de 761 MB a 251 MB.
Para comprimir números (DOUBLE y FLOAT) se proponen los algoritmos Chimp y Patas. En comparación con el algoritmo Gorillas anterior, Chimp proporciona un mayor nivel de compresión y una descompresión más rápida. El algoritmo Patas va a la zaga de Chimp en términos de compresión, pero es significativamente más rápido en la velocidad de descompresión, que es casi lo mismo que leer datos sin comprimir.
Tambien se destaca que se agregó una capacidad experimental para cargar datos de archivos CSV en varios flujos paralelos (SET experimental_parallel_csv=true), lo que reduce significativamente el tiempo de carga para archivos CSV grandes. Por ejemplo, cuando la opción estaba habilitada, el tiempo de descarga de un archivo CSV de 720 MB se redujo de 3,5 a 0,6 segundos.
De los demás cambios que se destacan de esta nueva versión:
- Se ha implementado la posibilidad de ejecución paralela de operaciones de creación y gestión de índices.
- SQL brinda la capacidad de formar consultas que comienzan con la palabra «FROM» en lugar de «SELECT». En este caso, se supone que la consulta comienza con «SELECT *».
- Se agregó soporte para la expresión «COLUMNAS» en SQL, lo que le permite realizar una operación en varias columnas sin duplicar la expresión.
- Consumo de memoria optimizado. De forma predeterminada en la plataforma Linux, la biblioteca jemalloc se utiliza para la gestión de la memoria. Rendimiento significativamente mejorado de las operaciones de fusión de hash cuando la memoria es limitada.
- Se agregó el modo de salida «.mode duckbox» a la CLI, descartando las columnas centrales en función de las líneas de ancho de la ventana del terminal). Con el parámetro «.maxrows X», también puede limitar el número de filas de salida.
- La CLI proporciona autocompletado de entrada teniendo en cuenta el contexto (se completa la entrada de palabras clave, nombres de tablas, funciones, nombres de columnas y nombres de archivos).
- La CLI está habilitada de forma predeterminada para mostrar un indicador de progreso de consulta.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.