Lanzamiento de la base de datos DuckDB 1.2.0

Se ha publicado la versión 1.2.0 de la base de datos DuckDB, enfocada en la ejecución de consultas analíticas y conceptualmente similar a SQLite. DuckDB combina características de SQLite, como su compactibilidad, conectividad como una biblioteca integrada, almacenamiento en un solo archivo y una interfaz de línea de comandos, con capacidades y optimizaciones para ejecutar consultas analíticas que abarcan una parte significativa de los datos almacenados, como realizar agregaciones sobre todo el contenido de tablas o fusionar varias tablas grandes. El código del proyecto está escrito en C++ y se distribuye bajo la licencia MIT.

DuckDB proporciona un dialecto avanzado del lenguaje SQL, que incluye capacidades adicionales para manejar consultas muy complejas y de larga duración. Es posible utilizar tipos complejos (arreglos, estructuras, uniones) y ejecutar subconsultas correlacionadas arbitrarias y anidadas. Se admite la ejecución simultánea de múltiples consultas, así como la ejecución de consultas directamente desde archivos en formatos CSV y Parquet. También se encuentra disponible la importación desde bases de datos PostgreSQL.

El proyecto utiliza un shell basado en SQLite, un analizador de PostgreSQL, un componente de Date Math de MonetDB, su propia implementación de funciones de ventana (basada en el algoritmo Segment Tree Aggregation), un manejador de expresiones regulares basado en la biblioteca RE2, un optimizador de consultas propio, un mecanismo MVCC de control de concurrencia de versiones múltiples (Multi-Version Concurrency Control), así como un motor de ejecución de consultas vectorizado basado en el algoritmo Hyper-Pipelining Query Execution, que permite procesar grandes conjuntos de valores en una sola operación.

En la nueva versión:

  • Se ha implementado soporte para nuevos métodos de compresión, que no están habilitados por defecto para mantener la compatibilidad de archivos de base de datos con versiones anteriores de DuckDB. Para utilizar el formato mejorado de archivos de base de datos, se ha propuesto la opción de enlazar la base de datos a un número de versión: al abrir un archivo con el parámetro “STORAGE_VERSION”, ahora se puede establecer la versión mínima soportada de la base de datos (“ATTACH ‘file.db’ (STORAGE_VERSION ‘v1.2.0’);”). Para convertir el nuevo formato al antiguo, se puede utilizar el comando SQL COPY, por ejemplo: ATTACH ‘file1.db’; ATTACH ‘converted_file.db’ (STORAGE_VERSION ‘v1.0.0’); COPY FROM DATABASE file1 TO converted_file;
  • Se ha añadido soporte para el comando SQL “ALTER TABLE … ADD PRIMARY KEY” para agregar una clave primaria a una tabla existente.
  • Se ha eliminado la restricción que no permitía volver a agregar identificadores para los cuales existía un índice de unicidad, si esos identificadores habían sido eliminados en la transacción actual. Por ejemplo, el siguiente código SQL ahora no genera un error: CREATE TABLE students (id INTEGER PRIMARY KEY, name VARCHAR); INSERT INTO students VALUES (1, ‘John Doe’); BEGIN; DELETE FROM students WHERE id = 1; INSERT INTO students VALUES (1, ‘Jane Doe’);
  • Se ha añadido soporte para cargar archivos CSV en codificaciones Latin-1 y UTF-16 (anteriormente, solo se admitía la codificación UTF-8). FROM read_csv(‘cities-latin-1.csv’, encoding = ‘latin-1’);
  • Se ha añadido soporte para el uso de delimitadores multibyte en archivos CSV (hasta 4 bytes), lo que permite especificar emoji como delimitadores de columnas. a🦆b hello🦆world FROM read_csv(‘example.dsv’, sep = ‘🦆’);
  • Por defecto, el modo estricto del análisis de archivos CSV («strict_mode = true») está habilitado, lo que verifica la conformidad con el formato de la especificación RFC 4180. En modo estricto, solo se permite un carácter para la separación de líneas, lo que dará lugar a un error al intentar analizar archivos donde se utiliza no solo el carácter de nueva línea, sino también el retorno de carro («\r\n»).
  • El analizador CSV cuenta con un nuevo algoritmo de detección de nueva línea que admite la paralelización de operaciones. El uso del nuevo algoritmo ha acelerado el análisis de CSV en aproximadamente un 15%.
  • Se ha eliminado la limitación en el tamaño de la línea en archivos CSV (anteriormente, la línea no debía exceder 8 MB).
  • Al exportar datos en formato Parquet se implementó el soporte para hashes (diccionarios) y índices basados en filtros de Bloom. Se ha implementado el método de compresión DELTA_BINARY_PACKED, que permite reducir significativamente el tamaño de los archivos Parquet.
  • Se ha añadido un modo seguro en la interfaz de línea de comandos, que se activa mediante la opción «-safe» o el comando «.safe_mode». En este modo, se permite el acceso únicamente al archivo de base de datos especificado originalmente, y cualquier intento de abrir otros archivos resultará en un error.
  • En la interfaz de línea de comandos se ha mejorado el autocompletado de entrada. El código para el autocompletado se ha trasladado a un uso de PEG (Gramática de Expresión de Análisis).
  • Al ejecutar comandos en la interfaz de línea de comandos se ha implementado una visualización clara de grandes números, por ejemplo, al mostrar el número 100000000, se añadirá «(100 millones)».
  • En SQL se ha añadido soporte para una sintaxis en la que los nombres abreviados de tablas y expresiones pueden ser indicados antes de los valores a los que hacen referencia (en lugar de usar la sintaxis «expresión AS nombre»): SELECT e1: some_long_and_winding_expression, e2: t2.a_column_name FROM t1: long_schema.some_long_table_name, t2: short_s.tbl;
  • En el comando «SELECT» se ha implementado el soporte para la operación «RENAME» para renombrar campos que se muestran con la expresión «*»: SELECT * RENAME (col1 AS new_col1) FROM integers;
  • En el comando «SELECT» se permite el uso de las operaciones «LIKE» y «SIMILAR TO» al mostrar a través de «*»: SELECT * LIKE ‘val%’ FROM key_val;
  • Se ha mejorado la calidad de la generación de números pseudoaleatorios.
  • Se ha modernizado el optimizador de consultas. El rendimiento en la prueba TPC-H SF100 ha aumentado en un 13%.
  • Se presenta una nueva API similar a C para el desarrollo de complementos, que se puede utilizar, por ejemplo, para crear nuevas funciones agregadas o tabulares.
  • Se ha añadido soporte para sistemas con la biblioteca estándar de C Musl.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster