Lançamento do SGBD SQLite 3.42 e DuckDB 0.8.0. CG\/SQL com implementação de procedimentos armazenados para SQLite.

Foi lançada a versão 3.42 do SQLite, um sistema gerenciador de banco de dados leve, apresentado como uma biblioteca de link. O código-fonte do SQLite é distribuído como domínio público, ou seja, pode ser utilizado sem restrições e gratuitamente para qualquer finalidade. O suporte financeiro aos desenvolvedores do SQLite é fornecido por um consórcio especialmente criado, que inclui empresas como Adobe, Oracle, Mozilla, Bentley e Bloomberg.

Principais mudanças:

  • Para índices de texto completo FTS5, foi implementado o comando secure-delete, que realiza a limpeza completa de todos os dados residuais após a exclusão.
  • As funções de manipulação de dados em formato JSON agora suportam extensões JSON5.
  • O planejador de consultas foi aprimorado. A otimização 'count-of-view' agora está ativada por padrão. A manipulação de colunas não utilizadas em subconsultas foi excluída. A implementação da otimização push-down foi melhorada.
  • Na interface de linha de comando, foi adicionada a opção '--unsafe-testing', permitindo o uso de alguns comandos perigosos, como '.testctrl', destinados a testes. No modo seguro ('--safe'), é permitida a utilização dos comandos '.log on' e '.log off'. Foi adicionada a opção de separador '--', para argumentos após os quais a manipulação das opções é desativada. Foram adicionados os parâmetros ':inf' e ':nan', relacionados aos valores infinito e NaN.
  • Agora é permitido o cruzamento de nomes de funções SQL definidos no lado do aplicativo com palavras-chave CROSS, FULL, INNER, LEFT, NATURAL, OUTER e RIGHT.
  • As capacidades do PRAGMA integrity_check foram expandidas. Foi adicionado um verificador para a especificação de valores NaN em colunas que possuem a condição NOT NULL. A clareza das mensagens de erro foi melhorada.
  • Na extensão session, foi permitido capturar mudanças em tabelas sem ROWID.
  • Na função para trabalhar com tempo e datas, foi adicionado o modificador 'subsec' para permitir o uso de frações de segundo.
  • A profundidade de recursão para arrays e objetos JSON foi reduzida de 2000 para 1000 por padrão.

Além disso, foi lançado o banco de dados DuckDB 0.8.0, uma variante do SQLite, aprimorada com recursos e otimizações para execução de 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 grandes tabelas. Um dialeto SQL estendido é fornecido, incluindo recursos adicionais para processamento de consultas muito complexas e longas, além de suportar tipos complexos (arrays, estruturas, uniões), execução simultânea de várias consultas e execução de consultas diretamente de arquivos nos formatos CSV, JSON e Parquet. Há suporte para importação de bancos de dados PostgreSQL.

Além do código de shell do SQLite, o projeto utiliza um parser separado do PostgreSQL, o componente Date Math do MonetDB, sua própria implementação de funções de janela (baseada no algoritmo Segment Tree Aggregation), um manipulador de expressões regulares baseado na biblioteca RE2, seu próprio otimizador de consultas, o mecanismo MVCC de controle de concorrência (Multi-Version Concurrency Control), bem como um mecanismo de execução de consultas vetorizado baseado no algoritmo Hyper-Pipelining Query Execution, que permite processar grandes conjuntos de valores em uma única operação. O código do projeto é licenciado sob a licença MIT.

Na nova versão do DuckDB:

  • Novas expressões ‘PIVOT’ e ‘UNPIVOT’ foram adicionadas para transformar linhas em colunas e vice-versa.
  • O paralelismo durante a importação e exportação de dados foi aprimorado. A leitura de arquivos no formato CSV agora é feita por padrão em múltiplas threads, e a gravação em múltiplas threads é suportada ao usar os formatos Parquet, CSV e JSON.
  • Um operador ‘**’ foi adicionado para a iteração recursiva de diretórios ao definir caminhos de arquivos (por exemplo, FROM ‘data/glob/crawl/stackoverflow/**/*.csv’;).
  • Adicionou-se suporte para operações de junção (JOIN) em dados na forma de séries temporais (cortes de valores de parâmetros em intervalos de tempo determinados), em que um critério de junção das gravações utiliza uma correspondência aproximada dos valores no campo de tempo (por exemplo, é possível unir registros cujos tempos diferem em até 1 minuto).
  • Foi implementado o carregamento sob demanda de metadados do banco de dados, o que acelerou em dezenas de vezes o início do banco de dados.
  • Adicionada suporte para a conexão de funções personalizadas na linguagem Python.
  • Adicionada suporte para API ADBC (Arrow Database Connectivity) para transmissão de dados utilizando Apache Arrow.
  • Implementada a ligação para integração com código na linguagem Swift.
  • Comportamento do operador de divisão (“/”) alterado, agora ele executa cálculos de ponto flutuante por padrão em vez de operações inteiras. Para divisão inteira, um novo operador “//” foi proposto. O comportamento antigo pode ser restaurado configurando “SET integer_division=true;”.
  • O método de tratamento de registros nulos durante a ordenação foi alterado de “NULLS FIRST” para “NULLS LAST”, ou seja, valores NULL agora aparecerão no final, e não no início da lista. O comportamento antigo pode ser restaurado configurando “SET default_null_order=’nulls_first’;”.

Adicionalmente, pode-se destacar o projeto CG/SQL desenvolvido pela empresa Facebook, que fornece um gerador de código para utilização de procedimentos armazenados com SQLite. CG/SQL permite a criação de procedimentos armazenados em um dialeto especial de T-SQL (Transact-SQL), que permite chamadas a funções da biblioteca padrão C e acesso a dados em SQLite. Os procedimentos armazenados criados são compilados em código na linguagem C, utilizando a API C do SQLite para executar ações solicitadas e processar consultas complexas. Procedimentos armazenados compilados podem ser conectados a programas nas linguagens C, Java e Objective-C. O código do projeto é escrito em C e distribuído sob a licença MIT.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster