You are on page 1of 4

Usurios: 64239 A rtigos: 193 Dicas: 131 Downloads: 293 03.06.

13

Anncios Google

Firebird

Banco de dados

Sql server

Sql queries

Novidades do FB 2.5
Data da ltima atualizao: 29/11/2010 Introduo Demorou, mas finalmente o Firebird 2.5 foi lanado, no dia 04/Outubro/2010. Diferente da verso anterior(2.1), que trouxe inmeras novidades em termos de novos recursos, o FB 2.5 traz mais mudanas internas (nem sempre to visveis para o usurio), como forma de preparao para a to aguardada verso 3.0. No entanto, alguns novos recursos adicionados so bem interessantes, e at ansiosamente aguardados pelo usurios.Alguns desses recursos j foram expostos em artigos anteriores, e outros podem at passar despercebidos para os mais afoitos e desavisados. Neste artigo, apresentarei alguns dos novos recursos do FB 2.5, especialmente os que considero de maior importncia. Para uma lista completa de todas as mudanas, leia o Release Notesdisponvel em http://www.firebirdsql.org/file/documentation/release_notes/html/rlsnotes251.html C omo de costume, o Firebird 2.5 permite acessar bancos de dados criados em verses anteriores do FB. No entanto, para aproveitar alguns dos novos recursos, necessrio que o BD esteja com a ODS 11.2 (utilizada pelo FB 2.5). Para atualizar a ODS de um banco de dados, veja o item Migrando um BD para o Firebird 2.5 a seguir. Instalaodo Firebird 2.5 O processo de instalao doFirebird 2.5 continua o mesmo das verses anteriores: simples, rpido e indolor. A principal diferena que em alguns instaladores, como o da verso Windows, voc ter a opo de escolher o uso da nova arquitetura SuperC lassic durante o processo de instalao. No Linux, o SuperC lassic vem junto no mesmo pacote que o C lassic, sendo este ltimo o padro em uma instalao nova. Para alterar entre SuperC lassic e C lassic, deve-se usar oscript changeMultiConnectMode.sh disponvel na pasta bin do FB. Ao executar o script, certifique-se que o usurio do Linux tem direitos suficientes. O script perguntar qual modo voc deseja ativar: process ou thread, sendo que process = Classic e thread = SuperClassic. SuperClassicx Classic x SuperServer As diferenas entre a arquitetura C lassic e SuperServer j so conhecidas de longa data pelos usurios do Firebird. O SuperC lassic um hbrido entre as duas arquiteturas, sendo indicado para uso em mquinas multi-core/SMP com grande quantidade deconexes. Diferente do C lassic, onde existe um processo do Firebird servindo cada conexo, o SuperC lassic usa threads (como o SuperServer) para servi-las.No entanto, o SuperC lassic (diferente do SuperServer) no compartilha o cache entre as conexes, portanto, deve-se atentar para a definio correta do tamanho do cache, para no consumir toda a memria da mquina, gerando swap e lentido. A frmula bsica para estimar o consumo de memria do FirebirdC lassic/SuperC lassic : Quantidade de memria consumida pelo cache = nmero de conexes simultneas x nmero de pginas definidas para cache x tamanho do pagesize definido para o BD O SuperC lassic utiliza menos recursos do sistema do que o C lassic, tendo melhor escalabilidade. O SuperServer, na verso 2.5,consegue aproveitar mais de um ncleo/processador quando mais de um arquivo de BD acessado. Ou seja, se voc tem uma mquina multi-core, e mais de um bancode dados no Firebird, pode compensar alterar o parmetro C PUAffinityMask do firebird.conf para que o Firebird possa utilizar mais processadores. Em verses anteriores, o SS sempre tinha apenas uma thread ativa em um determinado momento. Na verso2.5, haver tantas threads ativas (ao mesmo tempo) quanto o nmero de BDs sendo acessados. Note que, no momento, o SuperServer no consegue usar adequadamente mais que um ncleo/processador para servir conexes a um mesmo BD (para isso, use o C S ou o SC ). A verso 3.0 trar uma arquitetura multi-thread, com total aproveitamento de SMP, e com cache compartilhado, ou seja, o melhor dos mundos. Migrando um BD para o Firebird 2.5 O Firebird 2.5 cria os bancos de dados utilizando a ODS 11.2. Muitos dos novos recursos introduzidos nessa verso, s esto disponveis em BDs com ODS 11.2, portanto, interessante migrar os bancos de dados criados em verses anteriores do FB paraa nova ODS. A forma mais fcil de migrar realizando um backup/restore do banco, j com o Firebird 2.5 rodando. Note que, para bancos criados em verses mais antigas do Firebird, alguns dados/metadados do banco podiam ter problemas referente codificao dos caracteres, especialmente se voc usou caracteres especiais, como acentos, etc. em comentrios de procedures, etc. O Firebird 2.1 trazia scripts especiais para a correo destes problemas, mas o processo foi simplificado no Firebird 2.5, com a criao de novos parmetros para o gbak ,disponveis no processo de restaurao de um backup: FIX_FSS_D(ATA) <charset> FIX_FSS_M(ETADATA) <charset> C aso voc no especifique esses parmetros durante o restore, e o Firebird encontre problemas nos dados ou nos metadados, o gbak mostrar um aviso sugerindo o uso dos parmetros acima para corrigir o problema. Mais informaes podem ser obtidas nos arquivos disponveis na subpasta misc\upgrade\metadata do diretrio de instalao do Firebird. Dica: Ao se fazer um backup que ser logo seguido de um restore, interessante usar o parmetro g do gbak, impedindo a coleta de lixo, geralmente tornando o processo de backup mais rpido. ClienteThread Safe At a verso 2.1 doFirebird, a biblioteca fbclient.dll no era thread-safe. Isso significa que se voc utiliza mltiplas threads na sua aplicao, e essas threads realizam operaes no banco de dados ao mesmo tempo, a nica forma de garantir que tudo funcione corretamente fazendo com que cada thread tenha sua prpria conexo e transao com o banco de dados. Voc at pode usar uma nica conexo/transao na aplicao, desde que as threads no acessem o BD ao mesmo tempo. O Firebird 2.5 traz uma biblioteca cliente thread-safe ! Isso quer dizer que no mais necessrio ter uma conexo e transao em cada thread na aplicao, para que as coisas funcionem corretamente. No entanto, todas as requisies enviadas ao banco dedados pela mesma conexo so serializadas, ou seja, se mais de uma thread fizer uma requisio ao BD, as requisies sero enviadas na sequncia em que foram recebidas, e no simultaneamente. C aso sua aplicao precise que as requisies sejam enviadas "em paralelo", use o modelo onde cada thread possui sua prpria conexo/transao com o banco. Embedded no exige mais acesso exclusivo O servidor embedded, que permite distribuir/utilizar o Firebird sem a necessidade de instalao do FB na mquina do usurio, foi alterado de forma que o arquivo de

O servidor embedded, que permite distribuir/utilizar o Firebird sem a necessidade de instalao do FB na mquina do usurio, foi alterado de forma que o arquivo de BD acessado no fica mais exclusivo a aplicao que o conectou. Portanto, agora possvel ter uma aplicao usando o FB embedded conectado a um BD, e ao mesmo tempo acessar esse mesmo BD de outras aplicaes, ou utilitrios (gbak, etc). A mudana foi possvel pelo fato do embedded do FB 2.5 utilizar a arquitetura SuperC lassic, ao invs daSuperServer, como acontecia nas verses anteriores, dispensando assim a necessidade de acesso exclusivo ao arquivo do BD. Gerenciamento de usurios via SQL Todos aqueles que j precisaram criar ou manipular usurios do Firebird em suas aplicaes, sabem que isso s era possvel atravs de funes da API do Firebird, ou via gsec.exe . O Firebird 2.5 permite que a manipulao de usurios (criao, alterao, remoo) seja possvel atravs dos novos comandos C REATE / ALTER / DROP USER. Tambm foi criado um novo domnio chamado RDB$ADMIN, que pode ser atribudo a usurios comuns do BD, dando a eles privilgios de SYSDBA. Somente o SYSDBA (ou algum usurio para o qual tenha sido atribudo o role RDB$ADMIN, tanto no BD acessado como no BD de segurana) pode criar ou manipular usurios. Usurios comuns s podem alterar sua prpria senha. Collate padro para o banco Sabemos que sempre foi possvel definir um C HARSET padro para o banco de dados. C ampos textuais(char, varchar, etc) assumem automaticamente o charset padro do banco, caso outro charset no seja explicitamente especificado durante a criao do campo. No entanto, definir um collate padro para o BD era uma tarefa complicada, e que no sobrevivia a um backup/restore do banco. No FB 2.5, possvel definir o collate padro durantea criao do banco, seguindo a sintaxe: c r e a t ed a t a b a s e< f i l en a m e > [p a g e _ s i z e< p a g es i z e >] [l e n g t h=< l e n g t h >] [u s e r< u s e rn a m e >] [p a s s w o r d< u s e rp a s s w o r d >] [s e tn a m e s< c h a r s e tn a m e >] [d e f a u l tc h a r a c t e rs e t< c h a r s e t n a m e > [[c o l l a t i o n < c o l l a t i o nn a m e >]] [d i f f e r e n c ef i l e< f i l en a m e >] Tambm possvel alterar o collate padro para um charset, em um banco j existente, atravs do comando: ALTER C HARAC TER SET<charset_name> SET DEFAULT C OLLATION <collation_name> Devemos ficar atentos que lguns collates utilizam mais que um byte por caractere, o que pode influenciar nos limites de tamanhos das chaves de ndices, e consumir espao extra no BD. O Firebird 2.5 tambm trouxe collates case/accent insensitive para Unicode. Auditoria e rastreamento do servidor O Firebird 2.5 incorporou e melhorou os recursos de auditoria e rastreamento de sesses de usurios existentes no RedDB (banco de dados baseado no Firebird e desenvolvido pelaRedSoft). Atravs dos novos recursos, possvel saber, em tempo real, tudo que est acontecendo no servidor, com a possibilidade de definir filtros a fim de auditar somente algumas operaes. O detalhamento deste recurso exigiria um artigo completo dedicado a ele. Para todas as informaes, leia o release notes, e baixe os slides do Douglas Tosi, do FDD. Usurios normais podem rastrear apenas suas prprias conexes. Usurios administradores (SYSDBA/OWNER) podem rastrear e gerenciar qualquer conexo. RemoteFileOpenAbility Sabemos que o Firebird spermite acessar bancos de dados que estejam gravados em dispositivos locais na mquina servidora. No Linux, o parmetro RemoteFileOpenAbility j permitia, h algum tempo, que o FB acessasse BDs gravados em drives NFS. O recurso foi ampliado, passando a funcionar tambm no Windows, para drives SMB/C IFS. Mas calma! Deve-se tomar muito cuidado com isso, pois as chances de se obter um banco de dados corrompido so muito maiores, devido a possveis instabilidades na rede, ou situaes errneas onde mais de um servidor Firebird (em diferentes mquinas) estejam acessando o mesmo arquivo de BD (haveria problemas na alocao e gerenciamento das travas, causando corrupo). A ativao deste parmetro recomendada apenas caso se deseje criar um arquivo shadow do banco de dados em um drive da rede, lembrando tambm que a rede um gargalo para as operaes de I/O, portanto, no aconselho usar esse recurso com redes inferiores a Gigabit. Enfim, use com cuidado, e antes de habilit-lo, leia com ateno as informaes sobre este parmetro, disponveis no arquivo firebird.conf. Cancelamento de conexes Agora possvel derrubar conexes atravs das tabelas de monitoramento do Firebird. Para tanto, basta executar um DELETE na tabela mon$attachments. O comando abaixo derruba todas as conexes, menos a que est executando o prprio comando: D E L E T EF R O M M O N $ A T T A C H M E N T S W H E R EM O N $ A T T A C H M E N T _ I D< >C U R R E N T _ C O N N E C T I O N ; As transaes abertas associadas s conexes que forem derrubadas, sero automaticamente desfeitas (rollback). Pode-se derrubar uma conexo especifica, bastando especificar o ID, como no exemplo abaixo: D E L E T EF R O M M O N $ A T T A C H M E N T S W H E R EM O N $ A T T A C H M E N T _ I D=1 0 ;-M a t aac o n e x o1 0 Expresses regulares (regex) SIMILAR TO agora aceita expresses regulares, permitindo usos bastante interessantes, desde clusulas WHERE at check constraints. A Wikipdia traz a seguinte definio para expresses regulares: Em cincia da computao, uma expresso regular (ou o estrangeirismo regex, abreviao do ingls regular expression) prov uma forma concisa e flexvel de identificar cadeias de caracteres de interesse, como caracteres particulares, palavras ou padres de caracteres. Expresses regulares so escritas numa linguagem formal que pode ser interpretada por um processador de expresso regular, um programa que ou serve um gerador de analisador sinttico ou examina o texto e identifica partes que casam com a especificao dada. Um exemplo prtico, para definir uma check constraint compatvel com o padro de nmeros de telefone adotado no Brasil, seguindo oformato (xx) yyyy-yyyy, onde xx o DDD, seria: check (telefone similar to '\([0-9]{2}\) [0-9]{4}\-[0-9]{4}' escape '\') A expresso regular acima far com que a constraint s aceite telefones com DDD compostos

de 2 dgitos (entre parntesis), e telefo nes com 8 dgitos (separados por - em dois blocos de 4). Podem tambm ser usadas em consultas: select * from clientes where telefone similar to '\([0-9]{2}\) 1234\-%' escape '\'; O select acima retornar todos os clientes cujo telefone comea com 1234, independente do DDD. O release notes traz todas as informaes necessrias sobre o que suportado na implementao de expresses regulares no FB 2.5. Infelizmente, no possvel utilizar as regex para fazer substituio em strings. Melhorias no Otimizador J tradio que a cada nova verso do Firebird, o otimizador de queries fique mais inteligente, e nessa verso no foi diferente! Vale ressaltar a mudana que faz com que o FB consiga utilizar um ndice (quando disponvel) em expresses usando NOT IN com subqueries, ex: S e l e c t. . .w h e r ec a m p on o ti n( s e l e c t ) Outra melhoria referente ao consumo excessivo de memria quando havia mltiplos updates em uma mesma tabela. Acessoa outros bancos de dados Recurso amplamente aguardado por muitos usurios, permite que se possa conectar e executar operaes em outras bases de dados, de dentro de procedures, triggers ou blocos PSQL! C om isso, passa a ser possvel recuperar informaes (select )ou executar comandos como insert,update,delete ,etc, a partir do PSQL, em outras bases de dados. Para tanto, o comando EXEC UTE STATEMENT foi turbinado com novos parmetros, permitindo acessar bases externas, conforme sintaxe abaixo: [ F O R ]E X E C U T ES T A T E M E N T< q u e r y _ t e x t >[ ( < i n p u t _ p a r a m e t e r s > ) ] [ O NE X T E R N A L[ D A T AS O U R C E ]< c o n n e c t i o n _ s t r i n g > ] [ W I T H{ A U T O N O M O U S|C O M M O N }T R A N S A C T I O N ] [ A SU S E R< u s e r _ n a m e > ] [ P A S S W O R D< p a s s w o r d > ] [ R O L E< r o l e _ n a m e > ] [ W I T HC A L L E RP R I V I L E G E S ] [ I N T O< v a r i a b l e s > ] Note que, ainda no possvel misturar em um mesmo select, tabelas que pertenam a diferentes bancos de dados. C aso seja necessrio retornar dados trazidos de diferentes BDs, aconselho o uso do execute statement alimentando uma tabela temporria, que concentraria as informaes vindas dos diferentes BDs em um nico lugar. A inteno que, em verses futuras do Firebird, seja possvel at mesmo acessar bases de dados externas que no sejam Firebird, provavelmente atravs de ODBC . O execute statement tambm passa a aceitar parmetros, o que era proibido anteriormente. Um uso interessante paraesse recurso, armazenar logs de alteraes de dados em um banco de dados separado do principal, conforme demonstrei no FDD, este ano. O exemplo pode serbaixado gratuitamente na rea de downloads do site www.firebase.com.br Backup Incremental via API de servios O Firebird, desde sua verso2.0, suporta backups incrementais atravs do utilitrio nBackup. No Firebird2.5, foi adicionada a possibilidade de realizar os backups incrementais atravsda API de servios, facilitando a integrao deste procedimento em aplicaesGUI. O backup/restoreincremental, via API de servios, tambm pode ser disparado atravs do utilitrio fbsvcmgr, conforme exemplos: C riar um backup de nvel 0: f b s v c m g r s e r v i c e _ m g ra c t i o n _ n b a kd b n a m ee m p l o y e en b k _ f i l ee . n b 0n b k _ l e v e l0 C riar um backup de nvel 1: f b s v c m g rs e r v i c e _ m g ra c t i o n _ n b a kd b n a m ee m p l o y e en b k _ f i l ee . n b 1 n b k _ l e v e l1 Restaura ro BD dos arquivos acima: f b s v c m g rs e r v i c e _ m g ra c t i o n _ n r e s td b n a m ee . f d bn b k _ f i l ee . n b 0n b k _ f i l ee . n b 1 Nova sinformaes nas tabelas de monitoramento As tabelas de monitoramento foram adicionadas no Firebird 2.1, e permitem obter informaes instantneas sobre o que est sendo executado no banco de dados. Atravs delas, possvel recuperar informaes sobre as conexes ativas, queries sendo executadas, etc. O Firebird 2.5 ampliou asinformaes disponveis em algumas das tabelas de monitoramento, possibilitando, por exemplo, obter informaes sobre o uso de memria evariveis contextuais. O select abaixo,listaos 10 comandos com maior consumo de memria, que esto sendo executados: S E L E C TF I R S T1 0 S T M T . M O N $ A T T A C H M E N T _ I D , S T M T . M O N $ S Q L _ T E X T , M E M . M O N $ M E M O R Y _ U S E D F R O MM O N $ M E M O R Y _ U S A G EM E M N A T U R A LJ O I NM O N $ S T A T E M E N T SS T M T O R D E RB YM E M . M O N $ M E M O R Y _ U S E DD E S C Concluso Neste artigo, listei as principais mudanas e novidades do Firebird 2.5. Para uma lista completa de todasas alteraes, melhorias e novidades, importante que voc leia o ReleaseNotes, fonte de informao completa e oficial, disponvel em cada release do Firebird. Artigo originalmente publicado na revista ActiveDelphi. Up the Irons! C arlos H. C antu Avalie esse artigo: Excelente

Avaliar

Voltar

Curtir

Tw eetar

Comentrios
andre luis viana albernaz [08.02.11]
Acho que j li e ste tpico um as 10 ve ze s...rs Parab ns C arlos. Se m pre ajudando \"os frascos e com prim idos\". O brigado

Ricardo Gomes Pina [15.03.11]


Parab ns pe lo artigo.

Gabriel Bonzanini [13.04.11]


Muito bom artigo, sim ple s e obje tivo. O brigado, e parab ns.

Fabiano Moura [13.05.11]


C antu, a fundao Fire bird, te m algum a posio de guando ir sair a ve rso 2.5.1 ou a ve rso 3 re le ase candidate ?

Carlos H. Cantu [16.05.11]


Fabiano, a Fundao no te m controle sobre isso. Ela ape nas \"paga\" os de se nvolve dore s. Infe lizm e nte , am bas as ve rse s e sto atrasadas ne sse m om e nto.

Marcelo Augusto Cicogna [05.07.11]


C antu, parab ns pe lo artigo. Ex iste m alguns tre chos e m que as palavras e sto e m e ndadas. Se voc quise r, e u posso ge rar um a ve rso corrigida. Fico disposio.

Vinicius Monteiro [29.05.13]


Ex ce le nte artigo, por m algum as palavras e sto e m e ndadas.

Ateno! No poste dvidas tcnicas nos comentrios. Para obter suporte, use a lista de discusso da FireBase.

Inserir comentrio

C opyright (c ) C arlos H . C antu - proibida a reprodu o de qualquer material des s e s ite s em autoriza o prvia

You might also like