E foi lançado o DuckDB 0.6.0 com melhorias na gravação de disco, e muito mais. Confira as novidades e veja onde baixar para instalar.
DuckDB é um sistema de banco de dados analítico de alto desempenho. Ele foi projetado para ser rápido, confiável e fácil de usar. O DuckDB fornece um rico dialeto de SQL, com suporte muito além do SQL básico.
O DuckDB é escrito em C++, é gratuito e de código aberto sob a licença do MIT. Ele oferece suporte a subconsultas correlacionadas arbitrárias e aninhadas, funções de janela, agrupamentos, tipos complexos (matrizes, estruturas) e muito mais.
O DuckDB combina propriedades do SQLite, como compacidade, capacidade de se conectar como uma biblioteca integrada, armazenamento de banco de dados de arquivo único e uma interface CLI conveniente, com ferramentas e otimizações para realizar consultas analíticas que cobrem uma parte significativa dos dados armazenados, para exemplo, que executa a agregação de todo o conteúdo da tabela ou mescla várias tabelas grandes.
Entre suas principais características, destacam-se:
- instalação simples
- Integrado: sem gerenciamento de servidor
- Formato de armazenamento de arquivo único
- Processamento analítico rápido
- Transferência rápida entre R/Python e RDBMS
- Não depende de nenhum estado externo. Por exemplo, arquivos de configuração separados, variável de ambiente.
- Formato de armazenamento de arquivo único
- Interface combinável. API programática SQL fluente
- Totalmente ACID via MVCC
Agora, foi anunciado o lançamento da nova versão do DBMS DuckDB 0.6.0, versão em que a compressão de dados foi aprimorada, além de adicionar novas funções, bem como melhorias no armazenamento, entre outras coisas.
Novidades do DuckDB 0.6.0
No DuckDB 0.6.0, destaca-se que continuaram os trabalhos de melhoria do formato de armazenamento, para além do facto de ter sido implementado um modo de escrita em disco, em que quando é carregado um grande conjunto de dados numa transação, o Data é compactado e transmitido para um arquivo do banco de dados sem esperar que o comando COMMIT confirme a transação.
Outra das mudanças que se destacam na nova versão é que foi adicionado suporte para carregamento paralelo de dados em tabelas separadas, o que pode aumentar significativamente a velocidade de carregamento em sistemas multicore.
Por exemplo, na versão antiga, carregar um banco de dados com 150 milhões de linhas em uma CPU de 10 núcleos levava 91 segundos e, na nova versão, essa operação leva 17 segundos.
Existem dois modos de carregamento paralelo: com preservação de ordem de registro e sem preservação de ordem.
Para compactação de dados, o algoritmo FSST (Fast Static Symbol Table) é usado, o que permite agrupar dados em linhas usando um dicionário de correspondência de tipo comum. A aplicação do novo algoritmo permitiu reduzir o tamanho da base de dados de teste de 761 MB para 251 MB.
Para comprimir números (DOUBLE e FLOAT) são propostos os algoritmos Chimp e Patas. Comparado com o algoritmo Gorillas anterior, o Chimp fornece um nível mais alto de compactação e descompactação mais rápida.
O algoritmo Patas fica atrás do Chimp em termos de compactação, mas é significativamente mais rápido na velocidade de descompactação, que é quase o mesmo que ler dados não compactados.
Também digno de nota foi adicionado um recurso experimental para carregar dados de arquivos CSV em vários fluxos paralelos (SET experimental_parallel_csv=true), o que reduz significativamente o tempo de carregamento de grandes arquivos CSV.
Por exemplo, quando a opção foi ativada, o tempo de download de um arquivo CSV de 720 MB foi reduzido de 3,5 segundos para 0,6 segundos.
Das outras mudanças que se destacam nesta nova versão:
- Foi implementada a possibilidade de execução paralela de operações de criação e gerenciamento de índices.
- O SQL fornece a capacidade de formar consultas que começam com a palavra “FROM” em vez de “SELECT”. Nesse caso, presume-se que a consulta comece com “SELECT *”.
- Adicionado suporte para a expressão “COLUMNS” no SQL, permitindo que você execute uma operação em várias colunas sem duplicar a expressão.
- Consumo de memória otimizado. Por padrão na plataforma Linux, a biblioteca jemalloc é usada para gerenciamento de memória. Desempenho significativamente aprimorado de operações de mesclagem de hash quando a memória é limitada.
- Adicionado o modo de saída “.mode duckbox” à CLI, descartando as colunas centrais com base na largura das linhas da janela do terminal). Com o parâmetro “.maxrows X”, você também pode limitar o número de linhas de saída.
- A CLI fornece preenchimento automático de entrada com reconhecimento de contexto (palavras-chave, nomes de tabelas, funções, nomes de colunas e entrada de nomes de arquivos é concluída).
- A CLI é habilitada por padrão para exibir um indicador de progresso da consulta.
Para saber mais sobre essa versão do DuckDB 0.6.0, acesse a nota de lançamento.
Como instalar ou atualizar o DuckDB 0.6.0
É importante mencionar que a página inicial afirma claramente que não deve ser usada para “grandes instalações cliente/servidor para armazenamento centralizado de dados corporativos”.
O projeto está trabalhando no lançamento da versão 1.0, após a qual não serão mais possíveis modificações.
Os trabalhos dos acadêmicos do Center for Mathematics and Theoretical Computer Science Centrum Wiskunde & Informatica em Amsterdam, DuckDB estão integrados a um processo host, vale ressaltar que não há software servidor DBMS para instalar, atualizar ou manter.
Por exemplo, o pacote DuckDB Python pode executar consultas diretamente nos dados da biblioteca de software Python, sem importar ou copiar dados.
Você pode saber mais sobre ele, bem como consultar o manual de instalação, no seguinte endereço.