Se ha lanzado la versión 0.10.0 de la base de datos DuckDB, que combina características de SQLite, como la compactibilidad, la posibilidad de conectarse como una biblioteca incrustada, el almacenamiento de la base de datos en un solo archivo y una interfaz de línea de comandos conveniente, con herramientas y optimizaciones para realizar consultas analíticas que abarcan una parte significativa de los datos almacenados, por ejemplo, que realizan agregaciones de todo el contenido de las tablas o la fusión de varias tablas grandes. El código del proyecto se distribuye bajo la licencia MIT. El desarrollo aún está en fase de creación de lanzamientos experimentales, ya que el formato de almacenamiento todavía no está estabilizado y cambia de versión a versión.
DuckDB ofrece un dialecto SQL extendido que incluye funcionalidades adicionales para el procesamiento de consultas muy complejas y de larga duración. Se admite el uso de tipos complejos (arreglos, estructuras, uniones) y la posibilidad de ejecutar subconsultas correlacionadas de forma arbitraria y anidada. Se admite la ejecución simultánea de múltiples consultas, así como la ejecución de consultas directamente desde archivos en formato CSV y Parquet. También hay posibilidades de importación desde bases de datos PostgreSQL.
Además del código de la interfaz de SQLite, el proyecto utiliza un analizador extraído en una biblioteca separada de PostgreSQL, el componente Date Math de MonetDB, su propia implementación de funciones de ventana (basada en el algoritmo de agregación Segment Tree), un procesador de expresiones regulares basado en la biblioteca RE2, un optimizador de consultas propio, un mecanismo MVCC de control de concurrencia de múltiples versiones (Multi-Version Concurrency Control), así como un motor de ejecución de consultas vectorizado basado en el algoritmo de Ejecución de Consultas Hyper-Pipelining, que permite procesar grandes conjuntos de valores en una sola operación.
Entre los cambios en la nueva versión:
- Se ha incrementado significativamente el rendimiento del análisis de datos en formato CSV. Por ejemplo, la lectura de un archivo CSV con 11 millones de filas en la nueva versión se ha reducido de 2.6 segundos a 1.15 segundos, y la realización de la operación 'SELECT COUNT(*)' sobre el archivo CSV ha disminuido de 1.8 segundos a 0.3 segundos.
- Se ha añadido soporte para arreglos de tamaño fijo, que son similares a listas que contienen una cantidad fija de elementos ('CREATE TABLE vectors(v DOUBLE[3]);').
- Se ha añadido soporte para la conexión a bases de datos MySQL, PostgreSQL y SQLite, lo que permite cargar datos de bases de datos externas en DuckDB y moverlos entre diferentes sistemas. El acceso a bases de datos externas se realiza utilizando tablas estándar. ATTACH ‘postgres:dbname=postgresscanner’ AS postgres; SELECT title, release_year, length FROM postgres.film LIMIT 5;
- Se ha añadido soporte para la expresión «COMMENT ON» para guardar comentarios sobre objetos en la base de datos.
- Se ha añadido soporte para la expresión «COPY FROM DATABASE» para copiar todo el contenido de una base de datos a otra.
- Se ha añadido soporte para el modificador «ALL» en las expresiones EXCEPT e INTERSECT.
- Se ha implementado el tipo »
Fuente: opennet.ru
