DuckDB 0.9.0 «Undulata» llega con mejoras en almacenamiento, soporte y mas
Se dio a conocer el lanzamiento de la nueva versión de DuckDB 0.9.0 con nombre clave «Undulata» en honor pato de pico amarillo originario de África. La nueva edición se destaca por incluir el de hash Out-Of-Core, mejoras en el rendimiento de los agregados de hash, mejoras en el rendimiento y 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.9.0 «Undulata»
Una de las principales novedades de la nueva versión de DuckDB 0.9.0, es tal vez la mejora de rendimiento con Out-Of-Core hash, ya que ahora al agregar grandes conjuntos de datos al procesar consultas. Se menciona que al utilizar un motor de ejecución de transmisión y un administrador de búfer, DuckDB admite muchas operaciones en conjuntos de datos que superan la memoria.
En esta versión, la compatibilidad con disk-spillingse amplía aún más mediante la compatibilidad con agregados de hash fuera del núcleo. Lo que resuelve el problema de que la operación finalice debido a la falta de memoria en situaciones en las que los datos utilizados para agregar la tabla hash no caben en la RAM.
Otra de las novedades que se destaca es que se ha implementado el soporte para la compresión de cadenas y tipos de números enteros justo antes de que los datos entren en los operadores de clasificación y agregación agrupados lo que ha reducido significativamente el consumo de memoria.
Ademas de ello, también podremos encontrar la carga automática de extensiones confiables y opcionalmente se instalarán cuando se utilicen en una consulta. Se menciona que el conjunto de extensiones de carga automática se limita a las extensiones oficiales distribuidas por DuckDB Labs.
Hablando de extensiones, también en DuckDB 0.9.0 «Undulata» se agregó un complemento para AWS que proporciona capacidades que utilizan el SDK de AWS. Esta extensión contiene una función «LOAD_AWS_CREDENTIALS» que utiliza AWS para obtener y configurar credenciales automáticamente.
También en esta versión se agrega soporte para extensiones cargables a DuckDB-WASM. Anteriormente, cualquier extensión que quisiera usar con el cliente WASM tenía que estar integrada. Con esta versión, las extensiones se pueden cargar dinámicamente. Cuando se carga una extensión, se descarga el paquete WASM y se habilita la funcionalidad de la extensión.
De los demás cambios que se destacan de esta nueva versión:
- Se habilitó la limpieza automática de grupos de filas completos al realizar una operación DELETE. También se implementa la opción de truncar el archivo de la base de datos (reduciendo su tamaño) después de eliminar datos si los grupos de líneas eliminados estaban al final del archivo.
- Se mejoró la eficiencia del almacenamiento de índices ART utilizados para verificar la unicidad o claves primarias y externas. Por ejemplo, en comparación con la versión anterior, el tamaño del índice de prueba disminuyó de 278 MB a 78 MB.
- Arreglar la regresión y arreglar el mecanismo de borrador
- Se corrigió el error de segmentación al agregar datos de la lista
- Prueba ART y refactorización comparativa
- Se aumento el límite de memoria en la prueba para evitar fallas de CI no deterministas
- Se agregó un complemento experimental para leer datos del almacenamiento de Azure.Esta extensión permite que DuckDB lea de forma nativa datos almacenados en Azure, de manera similar a cómo puede leer datos almacenados en S3.
- Configuración de Jemalloc, más asignador de búfer y eliminación de la copia de cadenas redundantes en el diccionario parquet
- El cliente ha agregado soporte experimental para la API PySpark.
- Se agregó un complemento experimental para leer tablas en formato Apache Iceberg .
- Actualización de Julia a 0.8.1
- Se añadio conn.interrupt() a la API de Python de DuckDB
- Arrelgo en los parámetros de regresión x/y intercambiados
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.