Firebird 2.5 - Artigo Clube Delphi 125

O artigo mostra as novidades da nova versão 2.5 do SGBD Firebird. Inicialmente é apresentado um pequeno histórico de sua evolução e logo em seguida são explicadas as novidades com pequenos exemplos de uso que farão com que o leitor os entenda facilmente.

Do que trata o artigo

O artigo mostra as novidades da nova versão 2.5 do SGBD Firebird. Inicialmente é apresentado um pequeno histórico de sua evolução e logo em seguida são explicadas as novidades com pequenos exemplos de uso que farão com que o leitor os entenda facilmente.

Para que serve

Demonstrar ao leitor através de exemplos como realizar o upgrade de sua versão atual para o Firebird 2.5, bem como ilustrar todas as suas novidades, fazendo com que o leitor compreenda o funcionamento de cada recurso e possa aplicar em seus sistemas.

Em que situação o tema é útil

Tendo conhecimento dos principais recursos suportados pelo sistema gerenciador de banco de dados, o desenvolvedor pode realizar seu trabalho de forma mais eficaz, reduzindo a necessidade de escrever código desnecessário nas aplicações.

Resumo do DevMan

Veremos neste artigo um pouco sobre o Firebird 2.5, que possui uma nova arquitetura que possibilita uma melhoria de desempenho em aplicativos de banco de dados. Após a leitura, o leitor se sentirá tentado a migrar suas aplicações para essa versão utilizando todas as diversas novidades incluídas.

O desenvolvimento do SGBD Firebird foi iniciado em Julho do ano 2000 a partir do código fonte da versão beta do InterBase 6.0, disponibilizado pela Inprise (Borland) sob licença Open Source. Desde então cinco versões foram lançadas pela sua equipe de desenvolvimento, mostrando uma evolução contínua do produto. O foco deste artigo é mostrar as principais funcionalidades para desenvolvedores adicionadas à versão 2.5, lançada em outubro de 2010, no ano em que o projeto faz seu décimo aniversário. Antes de aprofundar nestes temas, gostaria de mostrar um breve histórico da evolução do Firebird nestes 10 anos.

Na versão 1.0 a maior parte do trabalho foi interna, já que o código inicial não tinha documentação e não chegava nem mesmo a compilar. Uma das alterações mais importantes nesta versão foi a correção de um bug de segurança do InterBase, que foi rapidamente identificado quando seu código tornou-se público.

Na versão 1.5 o código-fonte foi convertido de C para C++. Algumas novidades que apareceram nesta versão foram variáveis de contexto como CURRENT_USER e CURRENT_ROLE, funções como COALESCE e NULLIF, expressões CASE, o tipo de dados BIGINT, melhorias em alguns comandos DDL (CREATE OR ALTER, RECREATE), o comando EXECUTE STATEMENT, as cláusulas FIRST e SKIP e suporte a savepoints e locks pessimistas.

A versão 2.0 introduziu o conceito de tabelas derivadas, cursores explícitos, valores default para parâmetros, as funções IIF, CHAR_LENGTH, TRIM, RDB$GET_CONTEXT e RDB$SET_CONTEXT, o operador IS [NOT] DISTINCT, os comandos EXECUTE BLOCK e COMMENT ON, a cláusula RETURNING, índices definidos por expressões, Collates (PT_BR e WIN_PTBR) para o Brasil, suporte a Unicode, melhorias de performance relacionadas à nova implementação de índices e diversas mudanças no otimizador, backups físicos e incrementais com o NBackup e suporte a plataformas 64-bits.

Nota do DevMan

Tabela derivada (derived table) é o nome dado pelo padrão SQL a uma query usada na cláusula FROM de outra query. Por exemplo: SELECT X.* FROM (SELECT * FROM PESSOAS) X. Neste caso, X é uma tabela derivada.

A versão 2.1 introduziu dezenas de novas funções internas, Triggers de eventos de conexão e transação, tabelas temporárias, Collates customizáveis com CREATE COLLATION, queries recursivas com Common Table Expression (CTE), os comandos UPDATE OR INSERT e MERGE, a função agregada LIST, a possibilidade de uso de Domains em PSQL, a interoperabilidade entre BLOBs e Strings, tabelas de monitoração, o utilitário fbsvcmgr e diversas melhorias implementadas no protocolo de comunicação, melhorando a performance de comunicação cliente/servidor via internet.

Nota do DevMan

Common Table Expression (CTE) é similar ao conceito de tabelas derivadas, porém, o nome da tabela é definido no começo da instrução com a cláusula WITH. Exemplo: WITH X AS (SELECT * FROM PESSOAS) SELECT * FROM X. Com as CTEs é possível fazer queries hierárquicas (recursivas) usando-se WITH RECURSIVE e UNION ALL. Veja mais exemplos no release notes da versão 2.1 na sessão Links.

Diante de toda essa evolução, é importante ressaltar que toda alteração e novas funcionalidades do Firebird são pensadas, levando em consideração dois princípios estabelecidos pelo projeto: compatibilidade e padronização SQL. A compatibilidade é sempre levada extremamente a sério, e dificilmente algo que funciona em uma versão deixa de funcionar em outra, respeitando o investimento feito pelos desenvolvedores. Em relação ao padrão SQL, ele é sempre consultado e analisado em detalhes, e quando possível, as implementações são realizadas com base neste padrão.

A versão 2.5, assim como as anteriores, possui diversas novas funcionalidades. Primeiramente, veremos sobre possíveis problemas durante o processo de migração. Em seguida, veremos sobre a nova arquitetura SuperClassic, que permite melhor aproveitamento de recursos e melhor desempenho em máquinas multiprocessadas, e as alterações diretamente relacionadas ao desenvolvimento. Os exemplos presentes nas listagens foram feitos para o ISQL, mas devem funcionar sem problemas em qualquer ferramenta.

Migrando de versões anteriores" [...] continue lendo...

Artigos relacionados