FireBird Embarcado: Instalação

Firebird

20/06/2005

Olá!

Gostaria de saber um programa que usa o FireBird Embarcado exige que o computador onde será instalado o programa, possua algum recurso específico (ODBC, algum driver, etc...). Pergunto isso, pois preciso desenvolver uma aplicação que seja de fácil instalação pelo cliente que o adquirir, de forma que ele não tenha preocupações com detalhes da instalação.

O FireBird Embarcado é bom para isso? Alguém tem alguma sugestão de outro BD caso o FB não seja indicado para esta aplicação?

Valeu
wbb

[b:7454e62820]O programa: [/b:7454e62820]Será uma espécie de catálogo eletrônico, de acesso apenas local. O usuário irá instalar o programa em seu computador, que deverá levar consigo o banco de dados, podendo inserir, alterar ou excluir registros do BD.
Se possível, também seria interessante se pudesse criar usuários. Se não for possível também tudo bem.


Wbb

Wbb

Curtidas 0

Respostas

Gandalf.nho

Gandalf.nho

20/06/2005

Dê uma olhada aqui [url]http://www.firebase.com.br/cgi-bin/firebase.cgi/artigo?ID=484[/url]


GOSTEI 0
Wbb

Wbb

20/06/2005

Fala gandalf.nho

Não estou conseguindo abrir o link. Você poderia quebrar um galho me enviar o artigo diretamente?

Valeu


GOSTEI 0
Sandra

Sandra

20/06/2005

[b:03ba2d4705]Criando aplicações embarcadas com o Firebird 1.5[/b:03ba2d4705]
O Firebird é um banco de dados leve, rápido e bastante flexivel, uma dessas flexibilidades é a capacidade de ´embarcar´ aplicações com ele.

Como assim ´embarcar´ ?

´Embarcar´ significa que voce pode criar um aplicativo e embutir o Firebird dentro de seu código de forma transparente e distribui-lo de forma fácil, basta executar seu aplicativo e pronto. Nenhuma instalação do Firebird será executada, ou configuração existente será mexida, nem mesmo será necessário parar o Firebird/Interbase que esteja executando naquele instante.

Vamos à um exemplo para ficar mais facil entender, digamos que precise distribuir um CDROM com um catalogo de preços, neste CDROM voce vai querer gravar seu aplicatibo e acessará os dados que estão gravados localmente no CDROM. Voce não quer utilizar um banco de dados flat-table como Paradox, Access ou DBF porque voce já possui o aplicativo criado para acessar os dados em Firebird/Interbase. A dificuldade seria na distribuição de tal aplicativo, pois força os usuários a instalar o Firebird/Interbase apenas para ver um CDROM pode ser o ´fim-da-picada´. Uma outra sugestão seria embutir dentro do seu aplicativo CatalogoEletronico.EXE o Firebird ´Embeded´ ou embutido, então nesse caso apenas a execução do CatalogoEletronico.EXE já seria auto-suficiente para acessar a base de dados no CDROM. Entendeu ?

Pode parecer dificil fazer isso a primeira vista, mas se voce perceberá neste artigo, o quão simples é, é tão simples que talvez voce deseje utiliza-los em todos os aplicativos que voce crie, porém de antemão devo lhe avisar que a versão embarcada do Firebird possui as seguintes características :
[list:03ba2d4705][*:03ba2d4705]Apenas para acesso local (HD, CDROM,...) e não implementa nenhum acesso via protocolo de rede, mesmo ´localhost´ não funciona, por essa razão notará que a performance e o consumo de memoria serão otimizados quando seu aplicativo for executado;
[*:03ba2d4705]Qualquer configuração do Firebird ou Interbase já instalado na máquina é ignorado, ou seja, não é preciso desinstalar nada ou parar o serviço, nada é modificado em configurações existentes, isso é um alívio para quem já estava acustumado a ter problemas quando tinha de distribuir o arcaico BDE. Para se ter uma idéia, o Firebird embarcado sequer faz uso de registry;
[*:03ba2d4705]Na questão de segurança, a versão ´embarcada´ não implementa nenhum mecanismo de autenticação, a senha é ignorada, apesar disso se voce logar-se como ´Pedro´ e se este possuir certas restrições em tabelas, estas restrições serão respeitadas. Para quem deseja criar uma aplicação embarcada é desejavel que use sempre a conta ´SYSDBA´ para não esbarrar em problemas de permissões;
[*:03ba2d4705]Na questão de compatibilidade voce poderá programar exatamente como fazia antes, se voce é programador Delphi e usava o IBX para acessar o Firebird, continue usando o IBX, se voce usava o IBO, continue a usar o IBO... nada muda no seu estilo de programação, apenas o tipo de acesso que passará a ser local ao invés de TCP/IP, NetBIOS ou IPX/SPX;
[*:03ba2d4705]Voce pode disparar quantas aplicações ´embarcadas´ simultaneamente quiser que não haverá nenhum conflito, mesmo que exista outras aplicações usando o Firebird/Interbase em rede, apenas tenha certeza de ter memória o suficiente para rodar todas elas;
[*:03ba2d4705]A arquitetura usada no modelo embarcado é a SuperServer, cada aplicativo ´embarcado´ abrirá uma nova instancia do SuperServer, com muitos aplicativos ´embarcados´ rodando simultaneamente poderá haver problemas de lentidão se não houver memória suficiente, sem falar, que dois ou mais aplicativos acessando a mesma base deve-se ter cuidado, pois o Firebird embarcado não foi idealizado para essa situação;[/list:u:03ba2d4705][b:03ba2d4705]Instalando o Firebird Embarcado[/b:03ba2d4705]

Primeiramente baixe a versão ´Embeded´ (Embarcado) do Firebird, se for criar aplicativos Linux, terá de puxar o CVS do Firebird e compila-lo com a diretriz ´--embeded´ e gerar um ´shared object´ (.so) que deverá ser incorporado à sua aplicação Kylix, C++, Phyton, .... e poderá usa-lo como nas instruções que se seguirão para o Windows.

Se voce escreve programas em ambiente Windows, a situação é mais simples, pois já existe a DLL do Firebird Embeded disponivel em : http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_download (715KB)

Para instala-lo faça o seguinte procedimento :
[list:03ba2d4705][*:03ba2d4705]Crie uma pasta no drive C:\MY_APP e descompacte-o Firebird Embeded nela (são cerca de 4 arquivos contando o README) ;
[*:03ba2d4705]Crie tambem uma pasta em C:\MY_APP\FB e mova o arquivo firebird.msg para essa pasta ;
[*:03ba2d4705]Copie o seu banco de dados Firebird (.gdb ou outro) para a pasta C:\MY_APP ;
[*:03ba2d4705]A maioria dos componentes de acesso no Delphi/Kylix estão previamente configurados para usar DLL client do Interbase chamada [b:03ba2d4705]gds32.dll[/b:03ba2d4705], essa DLL no Firebird Embarcado chama-se [b:03ba2d4705]fbembed.dll[/b:03ba2d4705], no entanto, se voce usa Delphi/Kylix é provavel que tais componentes queirão utilizar a [b:03ba2d4705]gds32.dll[/b:03ba2d4705], então faça o seguinte : renomeie o arquivo [b:03ba2d4705]C:\MY_APP\fbembed.dll[/b:03ba2d4705] para [b:03ba2d4705]C:\MY_APP\gds32.dll[/b:03ba2d4705] ;
[*:03ba2d4705]Edite o arquivo firebird.conf que se encontra em C:\MY_APP e modifique a seguinte linha :

[list:03ba2d4705]RootDirectory = C:\MY_APP\FB[/list:u:03ba2d4705]
[*:03ba2d4705]Se seu banco de dados utiliza UDF´s, então crie a pasta C:\MY_APP\FB\UDF e copie tais UDF´s (que em geral ficariam em [b:03ba2d4705]c:\arquivos de programas\firebird\udf[/b:03ba2d4705]) para lá ;
[*:03ba2d4705]Se seu banco de dados utiliza charsets ou collates de terceiros, então crie tambem uma pasta C:\MY_APP\FB\INTL e copie as DLL´s (que em geral ficariam em [b:03ba2d4705]c:\arquivos de programas\firebird\intl[/b:03ba2d4705]) para lá.[/list:u:03ba2d4705]Na realidade a pasta C:\MY_APP\FB será a mesma coisa do que C:\ARQUIVOS DE PROGRAMAS\FIREBIRD com as mesmas estruturas, e que pode ou não necessitar das pastas INTL e UDF. No meu caso que não faço uso de collates de terceiros e nem UDF, fica assim a estrutura :[list:03ba2d4705]C:\MY_APP\firebird.conf
C:\MY_APP\meu_aplicativo.exe
C:\MY_APP\meus_dados.gdb
C:\MY_APP\gds32.dll
C:\MY_APP\FB\firebird.msg
C:\MY_APP\FB\UDF\<VAZIO>
C:\MY_APP\FB\INTL\<VAZIO>[/list:u:03ba2d4705][b:03ba2d4705]Criando uma aplicação para ser embarcada[/b:03ba2d4705]

Uma aplicação para ser ´embarcada´ precisa ter a seguintes caracteristicas :
[list:03ba2d4705][*:03ba2d4705]O path do banco de dados deverá ser identificado no componente de acesso como partindo-se do diretorio onde se encontra seu aplicativo, por exemplo,
[*:03ba2d4705]se seu banco de dados está em ´localhost:c:\my_app\meus_dados.gdb´ então use o path ´meus_dados.gdb´, um path de conexao com o banco de dados como ´localhost:c:\my_app\dados\meus_dados.gdb´ será na realidade como ´dados\meus_dados.gdb´ ;
[*:03ba2d4705]Use sempre a senha ´SYSDBA/masterkey´ para não ter problemas com permissões.
[*:03ba2d4705]O protocolo de comunicação deverá ser ´local´ e nunca remota :[/list:u:03ba2d4705][list:03ba2d4705]Um exemplo de conexão usando o IBObjects :
  with IB_Connection1 do
  begin
    Username:=´SYSDBA´;
    Password:=´masterkey´;
    Database:=´meus_dados.gdb´;
    Protocol:=cpLocal;
    Open;
  end;

Um exemplo de conexão usando IBX (Interbase Express) :
  with IB_IBDatabase1 do
  begin
    DatabaseName:=´meus_dados.gdb´;
    Params.Clear
    Params.Add(´user_name=SYSDBA´);
    Params.Add(´password=masterkey´);
    Open;
  end;
[/list:u:03ba2d4705]Se voce for esperto vai perceber que se usar arquivos .INI ou entradas no Registry para gravar essas definições, então poderá facilmente sem nenhuma re-compilação do projeto tornar seu aplicativo ´embarcado´ ou não. Alias, eu acredito que a maioria dos programadores já fazem isso para não ter que engessar seu programa a um local especifico para servir de recipiente de dados.

[b:03ba2d4705]Considerações finais[/b:03ba2d4705]

Os arquivos embarcados na sua aplicação cabem num simples disquete de 1.44K, uma aplicação embarcada consumirá apenas 1MB de RAM a mais do que uma aplicação no modelo classico. E são apenas 3 arquivos (firebird.conf, fbembeded.dll, firebird.msg) que devem ser instalados juntamente com o seu aplicativo. Isto simplifica bastante distribuição de catalogos eletrônicos, programas com acesso a dados não compartilhado, quiosques, etc... somente não recomendaria que voce deixasse o modelo tradicional para usa-lo como ´modismo´ pois o modelo tradicional cliente/servidor para tais tarefas ainda é o melhor.

O primeiro exemplo de executar CatalogoEletronico.EXE a partir de um CD-ROM foi apenas uma suposição, a versão embarcada do Firebird possui um problema que ainda não foi resolvido, ao executar qualquer programa com o Firebird embarcado são criados arquivos de lock (.lck) na pasta do servidor, em nosso exemplo posterior seria em C:\MY_APP\FB, mas se fosse num CD-ROM haveria problema, pois tal pasta seria de apenas de somente-leitura. Até a versão final do ´Firebird Embeded´ surgirá alguma opção dentro do arquivo firebird.conf que possa resolver tal questão.

_____________________________________________________________

[i:03ba2d4705][b:03ba2d4705]Arquivos para download :[/b:03ba2d4705][/i:03ba2d4705]

Para baixar o Firebird Embarcado então clique [url=http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_download]aqui[/url] (apenas 715KB).

Este artigo está sob forma de licença GPL (General Public License) e pode ser reproduzido e distribuido livremente em outros tipos de mídia diferentes donde este artigo foi originalmente publicado, no entanto, atente-se para fato de que qualquer produto associado à este artigo também herdará as características GPL e também deverá ser fornecido livremente.
Para maiores esclarecimentos leia sobre a GPL em :
http://www.gnu.org/philosophy/philosophy.pt.html

Autor : Gladiston Santana
Data : 20-Maio-2003
Home Page : http://www.gladisto.hpg.com.br/


GOSTEI 0
Wbb

Wbb

20/06/2005

Obrigado Sandra!
wbb


GOSTEI 0
Luizgaspa

Luizgaspa

20/06/2005

Obrigado, me ajudou muito


GOSTEI 0
Marciosystem

Marciosystem

20/06/2005

Dê uma olhada aqui [url]http://www.firebase.com.br/cgi-bin/firebase.cgi/artigo?ID=484[/url]



o link mudou, tenta neste agora [url]http://www.firebase.com.br/fb/artigo.php?id=484[/url]


GOSTEI 0
POSTAR