Após dois anos e meio de desenvolvimento, o Firebird 5.0, um SGBD relacional, foi lançado. O Firebird continua a desenvolver o código do SGBD InterBase 6.0, que foi disponibilizado como código aberto em 2000 pela Borland. O Firebird é distribuído sob a licença gratuita MPL e suporta os padrões ANSI SQL, incluindo recursos como gatilhos (triggers), procedimentos armazenados (stored procedures) e replicação. Versões binárias estão disponíveis para [inserir aqui o nome da versão]. Linux, Windows, macOS и Android.
Principais inovações:
- A capacidade de realizar operações no modo multithread foi implementada. A paralelização em vários threads é aplicável ao criar índices, coletar lixo (operações de varredura automática e manual), criar backups e restaurá-los. gfix -sweep -parallel 4 nome do banco de dados gbak -b -par 4 -usuário nome de usuário -pass senha nome do banco de dados nome de backup
- Adicionado suporte para índices parciais que incluem apenas registros selecionados que atendem às condições especificadas ao criar o índice. CRIAR ÍNDICE IT1_COL NO T1 (COL) ONDE COL < 100;
- As instruções SELECT WITH LOCK, UPDATE e DELETE implementam a sintaxe “SKIP LOCKED”, que permite excluir registros que possuem bloqueio no momento do envio da solicitação (por exemplo, para não esperar a liberação do bloqueio ao cruzar com outra transação).
- Adicionada a capacidade de atualizar o banco de dados para a versão intermediária atual do armazenamento (ODS - On-Disk-Structure) dinamicamente (atualização inline) sem criar e restaurar a partir de um backup. Por exemplo, agora você pode converter um banco de dados no formato Firebird 4.0 (ODS 13.0) para o formato Firebird 5.0 (ODS 13.1) instantaneamente.
- Implementou um cache de instruções SQL compiladas que é mantido automaticamente (as entradas obsoletas são limpas conforme necessário). O tamanho do cache é definido através do parâmetro MaxStatementCacheSize no firebird.conf.
- Foi adicionada uma interface para criação de perfil de SQL e PSQL, permitindo estimar o tempo de execução de cada consulta, acumular estatísticas sobre o número de consultas e identificar problemas de desempenho.
- Adicionado suporte à expressão MERGE para o bloco condicional “WHEN NOT MATCHED BY SOURCE”, que é acionado quando o registro de origem não corresponde a nenhum registro no conjunto de destino. MERGE INTO clientes c USANDO new_customers nc ON (c.id = nc.id) QUANDO CORRESPONDIDO ENTÃO ATUALIZAR SET nome = nc.name QUANDO NÃO CORRESPONDIDO PELA FONTE ENTÃO EXCLUIR
- Agora é possível retornar múltiplas linhas usando uma expressão RETURNING se uma determinada expressão DML abranger múltiplas linhas (anteriormente, o erro “multiple rows in singleton select” era exibido em tais situações).
- Novas funções integradas foram adicionadas: UNICODE_CHAR para retornar o caractere unicode correspondente ao código fornecido e UNICODE_VAL para retornar o código do caractere fornecido. O parâmetro QUARTER foi adicionado às funções EXTRACT, FIRST_DAY e LAST_DAY para determinar o número do trimestre.
- Um novo pacote de sistema RDB$BLOB_UTIL foi adicionado com uma seleção de operações BLOB para módulos PSQL.
- O algoritmo de compactação de registros foi aprimorado para usar um contador de comprimento variável para compactar com mais eficiência sequências de dados repetidas. A otimização melhorou significativamente a taxa de compactação de campos VARCHAR longos preenchidos de forma incompleta com dados codificados em UTF-8.
- Adicionada a capacidade de trabalhar com cursores bidirecionais (roláveis) ao acessar um banco de dados remotamente pela rede.
- O desempenho da cópia de blob foi otimizado.
- Adicionado suporte completo para a sintaxe de definição de string descrita no padrão SQL. Por exemplo, as linhas agora podem ser quebradas por comentários ou espaços: select ‘ab’ /* comment */ ‘cd’ from RDB$DATABASE; selecione 'ab' 'cd' em RDB$DATABASE;
Fonte: opennet.ru
