Foi apresentado o lançamento do SGBD DuckDB 0.10.0, que combina características do SQLite, como compactação, capacidade de conexão na forma de biblioteca incorporada, armazenamento de banco de dados em um único arquivo e uma interface CLI conveniente, com ferramentas e otimizações para executar consultas analíticas que abrangem uma parte significativa dos dados armazenados, como a agregação de todo o conteúdo de tabelas ou a fusão de várias tabelas grandes. O código do projeto é distribuído sob a licença MIT. O desenvolvimento ainda está na fase de formação de lançamentos experimentais, já que o formato de armazenamento ainda não está estabilizado e muda de versão para versão.
No DuckDB, é fornecido um dialeto expandido da linguagem SQL, incluindo recursos adicionais para processar consultas muito complexas e de longa execução. Suporta o uso de tipos complexos (arrays, estruturas, uniões) e a capacidade de executar subconsultas correlacionadas arbitrárias e aninhadas. Permite a execução simultânea de várias consultas, a execução de consultas diretamente de arquivos nos formatos CSV e Parquet. Há a possibilidade de importação de SGBDs PostgreSQL.
Além do código de shell do SQLite, o projeto utiliza um parser separado da biblioteca PostgreSQL, o componente Date Math do MonetDB, sua própria implementação de funções de janelas (baseada no algoritmo Segment Tree Aggregation), um manipulador de expressões regulares baseado na biblioteca RE2, seu próprio otimizador de consultas, um mecanismo de controle de concorrência de múltiplas versões (Multi-Version Concurrency Control), bem como um motor de execução de consultas vetorizado baseado no algoritmo Hyper-Pipelining Query Execution, permitindo processar grandes conjuntos de valores em uma única operação.
Entre as mudanças na nova versão:
- A performance da análise de dados no formato CSV foi significativamente aumentada. Por exemplo, a leitura de um arquivo CSV com 11 milhões de linhas na nova versão foi reduzida de 2,6 segundos para 1,15 segundos, e a execução da operação 'SELECT COUNT(*)' em cima do arquivo CSV foi reduzida de 1,8 segundos para 0,3 segundos.
- Adicionada a suporte a arrays de tamanho fixo, que se assemelham a listas contendo um número fixo de elementos ('CREATE TABLE vectors(v DOUBLE[3]);').
- Adicionada a compatibilidade com a conexão a bancos de dados MySQL, PostgreSQL e SQLite, permitindo carregar dados de bancos de dados externos para o DuckDB e transferi-los entre diferentes sistemas. O acesso aos bancos de dados externos é feito usando tabelas típicas. ATTACH 'postgres:dbname=postgresscanner' AS postgres; SELECT title, release_year, length FROM postgres.film LIMIT 5;
- Adicionada a compatibilidade com a expressão «COMMENT ON» para armazenar comentários sobre um objeto no banco de dados.
- Adicionada a compatibilidade com a expressão «COPY FROM DATABASE» para copiar todo o conteúdo de um banco de dados para outro.
- Adicionada a compatibilidade com o modificador «ALL» nas expressões EXCEPT e INTERSECT.
- Implementado o tipo »
Fonte: opennet.ru
