Você está na página 1de 26

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

______________________________________________________________________

INDICE
O QUE O FIREBIRD?...............................................................................................................................2 PLATAFORMAS..........................................................................................................................................2 INTERFACES GRFICAS DE TRABALHO..............................................................................................3 SOBRE AS CARACTERSTICAS E ESPECIFICAES..........................................................................3 TIPOS DE DADOS SUPORTADOS............................................................................................................4 RAZES PARA USAR O FIREBIRD AO INVS DO INTERBASE........................................................6 Banco de Dados Perfeito................................................................................................................................8 Firebird & MySQL - Parceiros ou Concorrentes?.......................................................................................14 Com isto a tabela CLIENTE ser aberta e seus dados disponveis..........................................................20 Anotaes.....................................................................................................................................................23 BIBLIOGRAFIA COMPLEMENTAR.......................................................................................................26

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

______________________________________________________________________

O QUE O FIREBIRD?
No segundo semestre de 2000, a Borland lanou a verso 6 do banco de dados relacional Interbase, como um produto freeware e de cdigo-fonte aberto. Baseado naquela verso um grupo de desenvolvedores (denominado PHOENIX) criou o projeto FIREBIRD. Assim como aconteceu com o Linux, o projeto do FIREBIRD est aberto para todos que queiram contribuir para seu aprimoramento, bugs tendem a ser mais rapidamente resolvidos e um maior nmero de aprimoramento tende a ser incorporado em um menor espao de tempo. Assistindo ao lanamento do Interbase 6.5, como um produto pago, o grupo FIREBIRD definitivamente divorciou-se do Interbase. Segundo os responsveis pelo projeto, o FIREBIRD 1.0 manter 100% de compatibilidade com o Interbase 6.0, evoluindo desse ponto em diante. Alis, o projeto FIREBIRD ainda no tem uma documentao prpria ou tem pouca documentao, os manuais do Interbase 6.0, por enquanto, so a principal fonte de informao disponvel.

PLATAFORMAS
O FIREBIRD est disponvel livremente em diversas plataformas: Windows Linux SOC UNIX (em teste) Solaris HP-Ux Mac-Os Os diversos programas de instalao do FIREBIRD podem ser baixados nos sites:
http://firebird.sourceforge.net www.ibphoenix.com www.firebirdsql.org

Em torno do site ibphoenix renem-se nomes de peso do mundo Interbase, como Ann Harison, que est profundamente envolvida com o desenvolvimento do produto

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

______________________________________________________________________ desde a sua concepo h mais de 15 anos, Paul Reeves, Paul Beach, Mark O Donohue e outros.

INTERFACES GRFICAS DE TRABALHO


Os programas grficos que utilizaremos para trabalhar com o FIREBIRD so o IBConsole e o IBExpert. Entretanto, h diversas ferramentas disponveis (gratuitas e pagas) que podem ser utilizadas sem problemas, ferramentas de backup, de restaurao de backup, migrao de bases de dados para o FIREBIRD, ferramentas de modelagens, entre vrias outras.

SOBRE AS CARACTERSTICAS E ESPECIFICAES


O FIREBIRD permite o acesso de vrios usurios a um ou a vrios bancos de dados. Tambm oferece controle explcito sobre transaes, evitando concorrncia a dados das tabelas, lembrando que aplicaes clientes podem iniciar vrias transaes simultneas (um exemplo clssico so as transaes de uma conta corrente). Algumas caractersticas so apresentadas em nvel terico, ou seja, que possvel alcanar em termos do projeto do banco, no significa dizer que tais caractersticas estejam de fato implementadas: NMERO MXIMO DE CLIENTES CONECTADOS A UM SERVIDOR: embora esse nmero possa sofrer variaes que depende de fatores de utilizao do FIREBIRD, diz-se que 150 usurios possam ter acesso simultneo ao banco de dados. TAMANHO MXIMO DE UM BANCO DE DADOS: em se tratando de arquivo nico (ou simples), um banco de dados pode chegar a 4 GB em ambiente Windows e na maioria dos ambientes UNIX, podendo atingir vrios terabytes quando se utiliza arquivos mltiplos, ou seja, um arquivo principal e vrios arquivos secundrios (lembre-se que um banco pode ser composto de vrios arquivos,
sendo que o maior tamanho de um banco IB/FB reportado at hoje de 980Gb).

Abaixo fornecido uma indicao mais precisa dos valores para arquivos

simples no ambiente Windows: Win9x/ME (FAT16): 2 GB

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

______________________________________________________________________ WinNT/2000 (FAT16): 4 GB Win9x/ME (FAT16): 4 GB WinNT/2000 (NTFS): 16.384 GB NMERO MXIMO DE TABELAS POR BANCO DE DADOS: em termos de projeto, isto , teoricamente, pode-se chegar a 65536 tabelas. TAMANHO MXIMO DE UMA LINHA: 64 Kb. NMERO MXIMO DE LINHAS E COLUNAS POR TABELA: por projeto, esse nmero pode chegar a 2 ^ 32 (dois elevado a 32) 4.294.967.296. NMERO MXIMO DE NDICES POR TABELA: por projeto, esse nmero pode chegar a 65536. Efetivamente, o FIREBIRD permite at 64 ndices por tabela. O nmero terico, ainda que fosse possvel, deixaria o banco com performance sofrvel. NMERO MXIMO DE NDICES POR BANCO DE DADOS: Por projeto, esse nmero pode chegar a 2 ^ 32 (dois elevado a 32).

TIPOS DE DADOS SUPORTADOS


BLOB (Binary Large Object): de tamanho varivel, permite armazenar diversos tipos de dados como: grficos, textos e vozes digitalizadas. Uma varivel deste tipo armazenada e recuperada em segmentos limitados a 64 K. H sete subtipos (de 0 a 6) mostrados a seguir : 0 dados binrios ou de tipo indeterminados 1 texto 2 representao binria de linguagem 3 lista de controle de acesso 4 reservado para uso no futuro 5 descrio de metadados da tabela corrente 6 descrio de transaes que terminam de forma irregular. CHAR(n), CHARACTER(n): utilizado para armazenar caracteres de 1 a 32767 bytes. Colunas definidas para esse tipo de dado tm tamanho fixo definido por n. DATE: com tamanho de 64 bits, esse tipo de dado consegue armazenar datas no intervalo: 01/01/100 A.D. a 29/02/32768 A.D.

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

______________________________________________________________________ DECIMAL(Preciso,Escala): Tem tamanho varivel (16, 32 ou 64 bits) e armazena nmeros decimais. A preciso vai de 1 a 18 (pelo menos) e a escala vai de 0 a 18. Uma coluna definida com DECIMAL(10,3), por exemplo, teria o seguinte formato: PPPPPPP.EEE DOUBLE PRECISION: Utilizado para representar valores de ponto flutuante com preciso de 15 dgitos. Tem tamanho de 64 bits e consegue armazenar valores no intervalo: 2.225 x 10 ^-308 a 1.797 x 10 ^308 (^ significa elevado a) FLOAT: Representa valores de ponto flutuante com preciso de 7 dgitos. Ocupa 32 bits e armazena valores no intervalo: 1.175 x 10^-38 a 3.402 x 10^38 INTEGER: Implementado com tamanho de 32 bits, representa valores inteiros na faixa: -2147483648 a 21477483647 NUMERIC(PRECISION,ESCALA): pode ter tamanho varivel (16, 32 ou 64 bits). Armazena nmeros decimais com preciso entre 1 e 18 (exatamente) e escala entre 0 e 18. Uma coluna definida como NUMERIC(10,3), por exemplo, teria o seguinte formato: PPPPPPP.EEE. Nota: a diferena entre NUMERIC e DECIMAL que o primeiro sempre armazena as casa decimais. SMALLINT: Implementado com tamanho de 16 bits, armazena inteiros no intervalo: -32768 a 32767 TIME: Esse tipo de dado tem tamanho de 64 bits e armazena valores de tempo na faixa: 0:00 AM a 23:59:9999 PM TIMESTAMP: Inclui informaes de data e tempo. Com tamanho de 64 bits, guarda valores no intervalo: 01/01/100 A.D. a 29/02/32768 A.D. VARCHAR(n), CHAR VARYING(n), CHARACTER VARYING(n): Utilizado para armazenar caracteres de 1 a 32767 bytes. Colunas definidas para esse tipo de dado tm tamanho varivel definido por n. DIALETOS: O FIREBIRD mantm o conceito de dialetos introduzidos pelo Interbase 6. Os dialetos permitem que voc utilize todas as inovaes introduzidas no banco ou, por questes de compatibilidade, permanea com as caractersticas antigas. O dialeto 1 garante compatibilidade com base de dados criados com verses anteriores. O dialeto 2 apenas um modo de diagnstico e provavelmente voc vai utiliz-lo para depurao de caractersticas antigas. O dialeto 3 permite acesso total a

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

______________________________________________________________________ todas as caractersticas do FIREBIRD. No dialeto 3 , esto disponveis a funo EXTRACT() e os operadores abaixo para extrair detalhes de data e hora: CURRENT_DATE (data corrente) CURRENT_TIME (hora corrente) CURRENT_TIMESTAMP (data e hora corrente). uma coluna do tipo DATE, os

Exemplo: Assumindo que dataqualquer

exemplos abaixo mostram como extrair ano, ms e dia desta data: EXTRACT (YEAR FROM DATAQUALQUER); EXTRACT (MONTH FROM DATAQUALQUER); EXTRACT (DAY FROM DATAQUALQUER);

RAZES PARA USAR O FIREBIRD AO INVS DO INTERBASE


A seguir esto alguns fatos serem considerados que ajudaro na resposta dessa pergunta. A deciso sua. Ao contrrio da Borland, que se mantm em silncio no que diz respeito a novas implementaes no InterBase, bem como se novos recursos sero disponibilizados na verso Open Source do banco ou se somente estaro disponveis na verso certificada (paga), o projeto FIREBIRD totalmente aberto comunidade. Qualquer um pode se informar da situao atual do cdigo, saber o que foi alterado e o que est por vir. A comunidade est aberta para a participao de todos que quiserem ajudar no desenvolvimento do cdigo, correo de bugs, documentao, desenvolvimento de ferramentas, etc. No existe, no entanto, uma comunidade aberta trabalhando no cdigo atual do InterBase da Borland, portanto mesmo que voc queira trabalhar nele, no encontrar muita gente com quem conversar, trocar idias e experincias. A Borland mantm uma equipe de desenvolvimento interna trabalhando na verso certificada do banco, mas, como dito anteriormente, no se sabe se as novas implementaes estaro disponveis na verso Open Source do InterBase.

No FIREBIRD no existe presso para upgrades e as correes de bugs so disponibilizadas quase que instantaneamente. Alm disso, hoje o FIREBIRD suporta dez sistemas operacionais (Win32, Linux, Solaris (Sparc e X86), Mac OS X, FreeBSD,

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

______________________________________________________________________ NetBSD, AIX, HP-UX e SCO) enquanto que o InterBase suporta apenas trs (Win32, Linux e Solaris). Outras razes para usar o FIREBIRD. Dentre elas podemos destacar:

O fato de ser um Sistema Gerenciador de Banco de Dados Relacional (SGBD-R) com recursos e estabilidade operacional comparveis aos melhores SGBD-Rs comercializados no mercado;

No existe presso de fabricantes com interesse em mudanas de verso (ao contrrio do que acontece com verses comerciais); O fato de no ser uma caixa-preta, isto , todas as novas implementaes e correes, todo o cdigo-fonte est disponvel para consulta e uso por quem se interessar;

Existem profissionais altamente capacitados, vrios deles sados dos quadros da prpria Borland e envolvidos com o Interbase desde a sua criao h mais de uma dcada, como: Ann Harrison, envolvida no projeto Open Source do FIREBIRD;

O fato do produto ser realmente gratuito.

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

______________________________________________________________________

Banco de Dados Perfeito


Por Ian Marteens - General Manager (Intuitive Sight)

Com muita probabilidade, a parte mais crtica de um sistema de informao o sistema gerenciador de banco de dados adotado. Isto no tem o que discutir. O problema : neste mundo dominado por guerras comerciais, como acreditar nas maravilhas do banco de dados "x" ditas por seu prprio fabricante? Este artigo tem o intuito de ser informativo o bastante para lhe ajudar nesta tomada de deciso. Se voc necessitar de mais informaes tcnicas pode consultar o artigo Escolhendo um servidor SQL, na minha pgina pessoal.

Existe um banco de dados ideal?

Claro que no existe, apesar das afirmaes feitas pelos fabricantes e distribuidores. H os melhores sistemas gerenciadores de banco de dados melhores, e claro, os piores. Entre os bons, cada um se destaca por alguma caracterstica especial, ou algo quase sempre surpreendente. A questo, ento, consiste em eleger a base de dados que melhor se adapta sua necessidade, principalmente no que se refere concorrncia de dados e nas caractersticas fsicas de rede sobre a qual o seu projeto rodar. Esta apresentao de produtos se ocupar exclusivamente em avaliar produtos que representem o modelo relacional de banco de dados. S o ttulo "relacional" com certeza j limita um pouco o produto. Claro, j existem no mercado alguns sistemas gerenciadores de banco de dados orientado objetos, mas esta nova tecnologia ainda no est consolidada por diversas razes. A principal delas : a inrcia na industria e na comunidade de desenvolvedores. ORACLE Este um dos bancos de dados mais conhecidos e com mais "peso" no nome. E claro : se trata de uma opinio bem sensata. O Oracle potente e altamente eficiente.

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

______________________________________________________________________ A verso mais recente do Oracle a 8 ponto algo. E deste o lanamento oficial da verso 8 se sucederam vrias novas verses com correes, a estabilidade foi alcanada apenas na 8.0.3. O motivo de tantas falhas foi, ao meu parecer, a remodelagem do sistema devido introduo das extenses de orientao a objetos. O que h de objetos no Oracle? Este gerenciado est comeando a evolucionar nesta direo, alguns tipos de classes, referncia, tabelas aninhadas, matrizes e outras complexas estruturas de dados. Sinceramente, na implementao atual as mesmas no oferecem uma vantagem clara e eficaz, como seria de se esperar, e se provocam tal incompatibilidade que aproveitassem essas novas caractersticas em outra base de dados. Delphi e C++Builder suportam perfeitamente as extenses de orientao a objeto do Oracle, mas no sou a favor de utiliza-las, pelo menos no estado atual da tecnologia. O Oracle suporta todas as funes esperadas em um servidor "srio" : uma linguagem de extenso ao SQL muito completa (PL/SQL), que permite implementar recursos ativos, como triggers e stored procedures, com uma integridade referencial declarativa bastante potente. Permite o uso de parties para melhorar a eficincia, de replicao e inclusive algumas verses admitem a administrao de bancos de dados distribudos. O software do servidor pode ser executado em vrios sistemas operacionais. Existe inclusive uma verso Personal para Windows9x, o que um ponto a favor para desenvolvedores que levam trabalho pra casa. O maior inconveniente do Oracle a questo do seu preo. Inclusive as licenas do Personal Oracle so extremamente caras, em minha opinio. Outro problema a necessidade de ajustes. Um erro freqente consiste em pensar que basta instalar o Oracle em um servidor e conectar as aplicaes clients a ele. Um Oracle mal configurado pode ser desesperadamente lento. Tambm elevado o investimento a ser feito em um formao DBA Oracle, e s ultimamente est comeando a aparecer bons livros sobre assuntos tcnicos distintos da simples instalao e administrao do banco.

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

10

______________________________________________________________________ INTERBASE/FIREBIRD O InterBase/FIREBIRD se destaca do resto de gerenciadores de banco de dados por sua arquitetura nica, baseada em verses (arquitetura multi-geracional). Isto quer dizer que, apesar de tratar-se de um gerenciador free, tambm o que oferece melhor acesso concorrente aos dados que administra. Se necessitamos de uma viso coerente das bases de dados, Oracle, SQL Server e DB2 bloqueiam a informao que lem e impedem a sua atualizao enquanto durar a transao de leitura. Isto no acontece no InterBase/FIREBIRD porque a escrita gera uma nova verso do registro, sem perder a coerncia das informaes. Uma agradvel conseqncia disto podermos realizar cpias completas de segurana (backup) sem interromper o funcionamento do sistema. Outro dos pontos fortes do InterBase/FIREBIRD sua concepo da linguagem SQL, sobre tudo nas sintaxes de stored procedures e triggers. sumamente fcil programar uma base de dados ativa em InterBase/FIREBIRD e posteriormente adapta-la para definies do Oracle. A linguagem de procedures e triggers muito potente, e inclusive supera a do Oracle na facilidade para expressar clusulas de verificao (check) que envolvam vrias tabelas, e suas triggers no esto sujeitas aos problemas ocasionados no Oracle pelas denominadas "tabelas mutantes". A verso do InterBase6.0/FIREBIRD apresenta tipos de dados compatveis com o SQL padro. Por exemplo, agora foi introduzido tipos separados para data, hora e para ambas (Microsoft SQL Server continua suportando somente o ltimo tipo), tipos numricos "exatos", etc. Porm uma das maiores novidades desta verso a apario de uma ferramenta de replicao (IBReplicator), uma carncia conhecida das verses anteriores. Os problemas do InterBase/FIREBIRD se misturam com a mesma causa de suas vantagens: sua arquitetura nica. muito comum realizar parties em outros gerenciadores(Oracle, DB2, SQL Server, Informix) para aumentar o rendimento fsico de um banco de dados, porm este conceito difcil de ser aplicado ao InterBase/FIREBIRD. De qualquer maneira, o particionamento por gerenciador no um substituto um pouco mais flexvel de certas tcnicas RAID para melhorar tal

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

11

______________________________________________________________________ rendimento, e o InterBase/FIREBIRD permite que uma base de dados se expanda por vrios discos, mesmo que no controlando que tabela vai para que dispositivo.

MICROSOFT SQL SERVER Para poder falar do Microsoft SQL Server tenho que deixar claro a que verso do produto estou me referindo. Porque as verses 6.5 e anteriores so um autntico desastre, mas a verso 7 um sistema a botar em pauta. Os problemas da verso 6.5 eram muitos e infantis : bloqueio a nvel de pgina, dispositivos com crescimento manual, tamanho de pgina fixo e demasiadamente pequeno(2048KB), uma pssima implementao dos tipos de dados variveis como varchar... Tudo isto foi corrigido com o SQL Server 7 : as pginas aumentaram para 8192KB, bloqueio de pgina a nvel de fila, as colunas de tipo varivel ocupam agora o correto e desapareceram os odiados dispositivos, cedendo espao para arquivos nativos de sistema operacional com crescimento automtico. O principal atrativo : o preo do produto, e a tendncia de se adaptar preferencialmente a produtos Microsoft, se que isto possa ser considerado um atrativo. No mais, tenho que reconhecer que a verso 7 bastante estvel, algumas pessoas reclamaram bastante sobre problemas em plataformas com Service Pack 1, mas isso tende a ser apurado. Outro ponto importante a favor do SQL Server sua interface de acesso OLE DB e ADO. Isto se trata de uma interface universal, SQL Server um dos primeiros gerenciadores a suporta-la. Nossos testes realizados sob ADO nos deixou uma boa impresso, e Delphi e C++Builder j possuem componentes nativos para ADO. De qualquer forma continuam existindo diversos fatores contra este gerenciador. S pode rodar sobre plataforma Windows (que uma das mais lentas para gerenciadores de banco de dados). Sua linguagem procedural em um tanto quanto catica, sua implementao de integridade referencial demasiadamente restrita.

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

12

______________________________________________________________________ DB2 Se trata novamente de um gerenciador de banco de dados "histrico". A arquitetura fsica muito similar a do Oracle. Tambm pode rodar em uma srie de plataformas : existe inclusive uma verso "personal" para Windows 95/98. E tambm a similar ao Oracle em um outro aspecto importante : o preo. Realmente, a maioria dos usurios de DB2 esto presentes no setor industrial. Do ponto vista de programao h boas e ms notcias. As boas : o SQL do DB2 muito potente; lembre-se que a origem do SQL so os laboratrios da IBM. A implementao de triggers aqui realmente fabulosa. As ms notcias : As stored procedures do DB2 devem ser programadas em um linguagem externa : C, Java, Visual Basic, etc. Por que isto ruim? No s porque obriga-o a utilizar uma linguagem adicional mas principalmente por depender de outro compilador...que sempre estar ligado plataforma de sistema operacional.

CONCLUSO difcil dar uma receita para tomar uma deciso to importante como a seleo de um gerenciador de banco de dados, porm h vrios pontos totalmente claros. Por exemplo, em uma viso geral, no elegeria o DB2, por seu elevado preo e por seus problemas de compatibilidade e de desenvolvimento de stored procedures. A verso 6 do InterBase gratuita e muito potente. Desde que o nmero de transaes concorrentes no seja muito elevado (mais de 100) pode confiar nele. O SQL Server 7 barato e relativamente bom (esquea o 6.5), mas s o utilizaria em aplicaes de 3 camadas, pois bastante complicado estabelecer regras de negcio em Transact-SQL. Enquanto o Oracle, seu preo proibitivo, e a potncia que oferece exige um administrador de banco de dados (DBA) altamente qualificado.

Resumindo. Eu seguiria a seguinte ordem de preferncia: 1. InterBase/FIREBIRD, a no ser que seu sistema tenha que suportar mais que 150 conexes simultneas. 2. Se puder disponibilizar acesso em trs camadas, SQL Server 7 no uma m opo. Se o nmero de conexes muito alto, a mescla de MIDAS + MTS + ADO pode lhe garantir xito.
INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

13

______________________________________________________________________ 3. No se assuste se tiver que utilizar Oracle. Mas sim, faa um bom curso de administrao de banco de dados, ou exija ao cliente que um bom DBA cuide da administrao do gerenciador. 4. Se seu cliente tem um DB2 e uma condio de uso utiliz-lo, obtenha de algum modo toda a documentao possvel, pois ters que recorrer a C ou Java se necessitar do uso de stored procedures (e ir necessitar).

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

14

______________________________________________________________________

Firebird & MySQL - Parceiros ou Concorrentes?


Traduo e adaptao: Antonio Porfrio - (Tony)
antonioporfirio@ipdal.com.br Colaborador da Comunidade Firebird de Lngua Portuguesa

Muito se tem falado sobre a rivalidade entre os SGBDs, particularmente entre os open-source. Afinal, se so gratuitos, o fator "custo" no mais um componente da escolha. Sobre o qu deve recair ento a escolha? E afinal, quem o melhor entre o FIREBIRD e o MySQL? Eles so realmente concorrentes? Um pouco de histria Sobre o FIREBIRD j foi dissertado anteriormente. O MySQL nasceu h menos tempo, inicialmente como um produto proprietrio, logo em seguida apenas com restries na licena para uso comercial, mas que com o tempo adotou a GPL (General Public Licence). Neste intervalo de tempo, com os recursos captados, foi viabilizado o investimento no desenvolvimento do produto. Ele em seguida tornou-se popular por ser distribudo juntamente com as compilaes mais populares do Linux, como Red Hat, Mandrake, Suse e Slackware. A repercusso foi enorme, tornando a empresa original por trs do MySQL bastante slida, que atualmente oferece o MySQL livremente junto com uma verso paga, mais poderosa que a verso free. Portanto h uma empresa com recursos financeiros suficientes para garantir o flego por trs do MySQL, alm do apoio explcito de muitas outras. Considerando-se este fator, podemos at afirmar que o grau de evoluo do MySQL deveria ser maior. Rumos e objetivos distintos Comparar as duas solues desconsiderando-se as necessidades do usurio, seria uma injustia com qualquer um dos projetos. Ambos tem virtudes e limitaes que podem ser interessantes para uns e desfavorveis para outros. quase como religio, poltica ou futebol: cada um tem suas crenas, e as defende com muita disposio. O FIREBIRD conhecido por qualidades notveis, com caractersticas de um SGBD estvel, seguro e robusto. O MySQL se notabilizou pela grande velocidade e especializao em ambiente WEB. Portanto dependendo dos objetivos a serem alcanados voc pode preferir um ao outro.

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

15

______________________________________________________________________ Tamanho documento? As diferenas entre os dois comeam no tamanho da soluo: a instalao do MySQL ocupa em torno de 12Mb, enquanto o FIREBIRD no passa de 2,5 Mb. O suporte mltiplas plataformas ponto comum entre as duas solues, levando o FIREBIRD uma ligeira vantagem. Ferramentas O MySQL tem um nmero mais limitado de ferramentas de acesso e manuteno s bases de dados, ao passo que o FIREBIRD, por ter o mesmo "bero" do Delphi e C++, conta com um nmero maior de ferramentas, propiciada pelo alto grau de afinidade com estas linguagens, bastante populares. As opes mais conhecidas e confiveis de ambiente grfico do MySQL so o MySQLAdm o MySQLGUI enquanto no FIREBIRD temos o IBExpert, IBOConsole, Firebird Workbench e muitas outras. Interface com Linguagens Neste aspecto, fica muito evidenciado a tendncia do MySQL no suporte Web e do FIREBIRD aplicaes desktop, cliente/servidor. O Firebird contemplado nativamente em diversas linguagens, particularmente Borland, embora atravs do ODBC possa-se lig-lo virtualmente a qualquer "coisa". O MySQL tem uma "simpatia" maior pelas linguagens da comunidade opensource como Perl, Phyton e PHP, embora estas barreiras no existam mais com o FIREBIRD. Armazenamento O modo como as informaes so armazenadas difere bastante. Isto tem um impacto direto em questes como backup, integridade dos dados e segurana. O FIREBIRD armazena todo o conjunto de dados, alm dos procedimentos ligados ao banco de dados, gatilhos disparados automaticamente e vises em um nico arquivo, podendo tambm ser guardados em diversos arquivos. O MySQL por padro guarda as tabelas em diversos arquivos, usando-se um esquema de 3 arquivos para cada tabela e todos os arquivos do banco de dados ficam dentro de um diretrio. Digamos que voc trabalhe numa empresa que tem 4 filiais e diariamente voc precisa atualizar a tabela de produtos para as filiais. Com o MySQL basta copiar os arquivos da tabela de produtos, que seriam: PRODUTOS.FRM, PRODUTOS.MYD, PRODUTOS.MYI. H quem diga (e eu concordo) que isto uma coisa que jamais se deve fazer.
INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

16

______________________________________________________________________ Com o Firebird, a nica sada ser voc criar um programa para fazer isso. Para se fazer uma cpia de tabela voc obrigado a usar as ferramentas do banco, backup e restore, para o SGBD garantir a integridade dos dados. Para quem foi Clippeiro ou desenvolvedor Paradox isto representa ter que repensar o modo operantis de suas aplicaes. selecionado. No esquea de mudar os nomes das restries das chaves para que no fiquem iguais. Faa isto para o campo COD_CLIENTE, depois compile novamente a tabela e clique no boto CLOSE e veja como ficou.

Terminamos a criao do banco de dados, comearemos a partir de agora interagir com o Delphi. Desenvolvendo o sistema com uso do DataModule algumas consideraes Ao desenvolvermos a nossa aplicao separaremos os forms em que construiremos a interface com os usurios, dos componentes que representam as informaes do banco de dados, estes sero colocados em um DataModule. Embora no sendo obrigatria, vantajosa no sentido de que: Fazendo esta separao, se alternarmos a forma de administrar as informaes do banco de dados, isto no nos obriga a rescrever a interface com o usurio;

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

17

______________________________________________________________________ Da mesma forma que, mudando a interface com os usurios, isto no nos obriga a alterar a forma de administrar as informaes do banco de dados; Trabalhando a interface do usurio e a forma de administrar as informaes do banco de dados independentemente, possvel criar forms passveis de utilizao por mltiplas aplicaes. Dando incio criao do projeto Primeiro vamos criar um diretrio chamado c:\Meus Documentos\Semana da Computacao\....... no qual colocaremos os arquivos a serem utilizados para criao do projeto. A seguir, comeamos pela criao do datamodule, para tanto executa-se FILE/NEW/APPLICATION e em seguida, FILE/NEW/DATAMODULE. Salvamos o projeto, executando FILE/SAVE/ALL. Salva-se a Unit2 como UnitDatamod, a Unit1 como UnitLocadora e o projeto com o nome Locadora. Cadastro de Clientes: O objetivo desta interface poder Incluir, Alterar, Localizar e Excluir os registros referentes aos diversos clientes que compem o sistema. Vamos, pois, comear a desenvolver a unit datamodule. No DataModule2 colocamos os seguintes componentes: Um SQLConnection Um SQLDataSet

Ambos da paleta dbExpress Um DataSetProvider Um ClientDataSet Um DataSource O componente SQLConnection tem a finalidade de permitir os parmetros para estabelecer uma conexo dbExpress com o banco de dados a ser utilizado. Ele interage com um driver dbExpress e com dois arquivos tipo INI (DBXdrivers.INI e DBXconnections.INI). O arquivo DBXdrivers.INI lista:

Todos da paleta DataAccess.

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

18

______________________________________________________________________ Os tipos de drivers instalados (Interbase, Oracle, etc); As DLLs referentes a cada driver; Os atributos padro dos parmetros de conexo. O arquivo DBXconnection.INI lista: Os nomes dos conjuntos de conexes existentes, cada qual representando uma conexo especfica a um banco de dados. Vamos comear parametrizando o componente SQLConnection, para tanto d-se um duplo clique nele e na tela aparecer a figura abaixo: Segue-se clicando no sinal de + e completa-se o dilogo New Connection, conforme mostrado abaixo: Na seqncia, mudam-se as propriedades: DataBase = c:\Meus Documentos\Semana da Computacao\Banco\sc_Uni.gdb SQLDialect = 3 Login prompt do componente = false Repare que na propriedade DataBase colocamos o caminho (path) no qual criamos o nosso banco de dados. Para verificar a conexo est funcionando marque o nome da conexo criada e clique no boto testar conexo, se estiver correto aparecer a mensagem Sucessfully Completed!. No componente SQLDataSet1 mudam-se as propriedades: SQLConnection para SQLconnection1 CommandType como ctQuery CommandText d um duplo clique sobre a clula direita, aparecendo na tela o editor de comandos abaixo: Preencha o quadro com o comando: SELECT * FROM CLIENTE. ACESSO BIDIRECIONAL Para contornar a limitao do acesso bidirecional utilizamos em conjunto componentes da paleta DataAccess e configurando-os conforme segue:

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

19

______________________________________________________________________ No DataSetProvider muda-se a propriedade DataSet para SQLDataSet, com isto estamos indicando onde o DataSetProvider deve obter os dados (eles vm como resultado de uma query = SQLDataSet). No ClientDataSet muda-se a propriedade ProviderName para DataSetProvider, com isto estamos dizendo que o ClientDataSet ser provido de dados do DataSetProvider. No DataSource muda-se a propriedade DataSet para ClientDataSet.

Com o uso do componente ClientDataSet associado ao componente DataSetProvider que este acesso bidirecional feito. O macete consiste no fato de o componente tipo ClientDataSet manter cpia das linhas da tabela em um buffer na memria, para que eles possam ser consultados e alterados. Construiremos o form para cadastro de clientes detalhado, para os outros forms do sistemas volte e consulte esta parte para suas elaboraes, portanto preste muita ateno no que ser explicado nas linhas abaixo. Cria um novo form aps ter configurado o datamodule, para isto clique em FILE > NEW > FORM, em seguida salve a UNIT como Unit_Principal e acrescente: 4 DBEdits, 2 DBGrid, 1 DBNavigator paleta DBExpress; 4 Labels, 1 Panel: 1 Label e 1 Edit dentro do Panel, todos da paleta Standard;

6 SpeedButtons paleta additional.

Foi colocado os seguintes componentes que sero usados para busca: Um SQLDataSet nome sql_aux, sqlConnection Datamodule2.sqlconnection1 Da paleta dbExpress Um DataSetProvider nome ds_aux, dataset sql_aux Um ClientDataSet nome cds_aux, provider name ds_aux Um DataSource nome dts_aux, dataset sql_aux Todos da paleta DataAccess. Configure os componentes conforme tabela abaixo:
Align form DBEdit1 AlCustom BorderIcons BySystem Menu BorderStyle BS Single Caption Cadastro de Clientes Name Frm_CadCli ente Datamodule Nome Datasource DataField Height/Left/ Top/Width

e comand text select * from CLIENTE.

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD


2.DTS_Clie nte Datamodule 2.DTS_Clie nte Datamodule 2.DTS_Clie nte Datamodule 2.DTS_Clie nte Datamodule 2.DTS_Clie nte Dts_aux Datamodule 2.DTS_Clie nte &Inserir &Alterar &Salvar &Excluir &Localizar &Fim Nome do Cliente: Sexo: Data de Nascimento: Endereo: Digite o nome: Propriedade text = vzio Ed_nm_loca lizar Spd_Inserir Spd_alterar Spd_salvar Spd_excluir Sps_localiza r Spd_fim

20

______________________________________________________________________
DBEdit2 DBEdit3 DBEdit4 DBGrid1 DBGrid2 DBNavigato r Speed Buttom_1 Speed Buttom_2 Speed Buttom_3 Speed Buttom_4 Speed Buttom_5 Speed Buttom_6 Label 1 Label 2 Label 3 Label 4 Label 5 Edit 1 Sexo datanascime nto endereco 49/ 314/ 282/ 240 49/ 314/ 282/ 240

49/ 3/ 282/ 60 49/ 63/ 282/ 60 49/ 121/ 282/ 60 49/ 181/ 282/ 60 49/ 240/ 282/ 75 49/ 554/ 282/ 60

No DBGrid clique com o boto direito e escolha columns editor e no Editing DBGrid1.Columns clique com o boto direito e escolha addAll_Fields. No evento OnCreate do form digita-se:
DataModule2.Sql_cliente.Active:=true; DataModule2.CDS_Cliente.Active:=true; Panel1.Visible:=false; //painel ficar invisvel DBGrid2.Visible:=false;//dbgrid aux ficar invisvel

Com isto a tabela CLIENTE ser aberta e seus dados disponveis No evento OnDestroy do form digita-se:
DataModule2.Sql_cliente.Active:=false; DataModule2.CDS_Cliente.Active:=false;

E no evento OnClick do spd_Fim digita-se:


DataModule2.Sql_cliente.Active:=false; DataModule2.CDS_Cliente.Active:=false; Application.Terminate;

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

21

______________________________________________________________________ Com as duas primeiras linhas fechamos o acesso aos dados da tabela CLIENTE e com a ltima encerramos o aplicativo. No evento OnClick do spd_insert digita-se:
DataModule2.CDS_Cliente.Insert;

Esta instruo indica que se deseja incluir uma nova linha (registro) na tabela CLIENTE, esta instruo criar uma linha em branco na tabela CLIENTE. No evento OnClick do spd_salvar digita-se:
DataModule2.CDS_Cliente.ApplyUpdates(-1);

Com esta instruo fazemos com que as alteraes sejam gravadas (applyUpdates(-1)) na tabela e no apenas nos registros que esto no buffer de memria. No evento OnClick do spd_excluir digita-se:
if MessageDlg('Confirma realmente excluir o registro' ,mtConfirmation,[mbYes,mbNo],0)= mrYes then begin DataModule2.CDS_Cliente.Delete; DataModule2.CDS_Cliente.ApplyUpdates(-1); end;

Com a linha instruo:


if MessageDlg('Confirma realmente excluir o registro' ,mtConfirmation,[mbYes,mbNo],0)= mrYes

Envia-se uma mensagem para o usurio na forma Confima realmente excluir o registro na forma de uma tela dilogo com os botes Yes ou No (sim ou no).Se o usurio pressionar o boto Yes (sim), sero executadas as linhas:
DataModule2.CDS_Cliente.Delete; DataModule2.CDS_Cliente.ApplyUpdates(-1);

Na primeira linha damos a instruo de excluso do registro, porm ela no suficiente, lembre-se que estamos trabalhando com registros em buffer de memria, assim sendo usamos a segunda linha a qual realmente efetua a excluso do registro da tabela CLIENTE. No evento OnClick do spd_alterar digita-se:
DataModule2.CDS_Cliente.Edit;

Esta instruo indica que se deseja alterar uma linha (registro) na tabela, aps alterlo, clica-se no boto salvar para efetuar a alterao. No evento OnClick do spd_localizar digita-se: Panel1.Visible:=true;

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

22

______________________________________________________________________ Para habilitar o painel e em seguida no evento OnKeyUp do ed_nm_localizar digita-se o seguinte cdigo (aqui est a procedure inteira com algumas explicaes):
procedure TObject; var Key: Word; Shift: TShiftState); var aux:string; begin DBGrid1.Visible:=false; DBGrid2.Visible:=true; aux:=ed_nm_localizar.Text; cds_aux.Active := False; sql_aux.Active := False; sql_aux.CommandText := 'select *' +' from CLIENTE ' +' where Nome like '''+aux+'%''';
{nome que comeam com a letra digitada {like '%en%' //nomes que contenham as letrs en no meio

Tfrm_CadCliente.ed_nm_localizarKeyUp(Sender:

like '%Lui_%'//nomes Luiz ou Luis like '[CK]%'//nomes que iniciam com a letra C ou K like '[A-L]'//nomes que comeam com as letras de A at L like '[^V]'//nomes que NO(^) comeam com a letra V} ISTO COMENTRIO.

cds_aux.Active := TRUE; sql_aux.Active := TRUE; end;

Com isto terminamos a interface para trabalhar com a tabela CLIENTE, as outras sero semelhantes por isso se surgir alguma dvida no deixe de consultar estes tpicos anteriores e tambm anotar nos espaos abaixo. Antes de rodar a aplicao faa o seguinte, entre no menu PROJECT > OPTION E mude o datamodule de posio passando para 1 linha, ou seja ser o primeiro a ser executado na aplicao.

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

23

______________________________________________________________________

Anotaes

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

24

______________________________________________________________________

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

25

______________________________________________________________________

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)

VI SEMANA DA COMPUTAO UNIARA 2003 FIREBIRD

26

______________________________________________________________________

BIBLIOGRAFIA COMPLEMENTAR
Delphi 6 Cliente/Servidor com Firebird/Interbase Aplicao PDV e Controle de Estoque Autor: Bastiaan Pieter Marinus Wilderom e Marcelo Frank Editora rica. Firebird/Interbase 6.0 Cliente/Servidor com Delphi 6 Tpicos Avanados Autor: Bastiaan Pieter Marinus Wilderom e Stella Martins Wilderom Editora rica. Delphi 6 Interbase 6 Construindo Aplicaes BDE, Interbase Express e Zeos Library Autor: Ivan Mecenas Editora Book Express. Firebird e Delphi 6 Guia do Desenvolvedor Autor: Ivan Mecenas Editora Alta Books. Banco de Dados com Delphi Autor: Fbio Camara e Hugo S. Novaes Editora Visual Books. Aprenda Rpido Interbase com Delphi Autor: Paulo Roberto Munhoz Editora Visual Books. Revista do Clube Delphi Neofcio Editora LTDA. www.comunidade-firebird.org www.firebase.com.br www.clubedelphi.com.br

INSTRUTOR :Lucio Mauro Marquezi Ferro (luciomarqueziferro@yahoo.com.br)