"
Olá pessoal,
este bem que poderia ser chamado de um artigo, porém, como é um carater comparativo entre a facilidade e a forma de usa destes dois bancos de dados o JET 40 (conhecido como ACCESS 2000 ou superior) e o Firebird. Eu passei os últimos 40 dias utilizando o Firebird (FB) e cheguei a conclusão que irei colocar abaixo.
Para comparar utilizarei os seguintes critérios: Potência do banco de dados, Código de acesso, Tamanho da instalação, Velocidade de acesso, facilidade de configuração do banco.
Vamos lá então...
1) Potencia da base: Talvez você não tenha noção do que é um banco de dados cliente/servidor como o FB é. Neste ponto há uma vantagem abissal entre o FB e o JET40, eu poderia nomear as seguintes para o FB:
1) O banco pode crescer facilmente mais de 200 vezes a mais(300GB) que o tamanho máximo do JET40 (2GB)
2) O FB gerencia concorrencia (acesso simultâneo) a base sem gerar erros e + rápido.
3) O banco no servidor pode ser localizado através da rede TCP SEM precisar fazer um compartilhamento (tem uma porta só pra ele)
4) O banco tem inúmeros recursos para desviar o processamento da estação e centralizar no servidor reduzindo tráfego na rede por exemplo, etc.
Para o JET40 a única vantagem eu diria é o tamanho da instalação e a facilidade de configuração da base.
2) Códigos de acesso: Para que usa JET com DAO, a abertura da base de dados se dá em poucas linhas a saber como exmplo temos:
Dim DB as Database
Dim RS as Recordset
Set DB = Opendatabase("C:DB.MDB")
Set RS = DB.OpenRecordset("Clientes")
Print RS!Nome
DB.Close
Com o FB precisei criar um código diferente usando ADO, no meu caso ficou assim:
Sub OpenDB(Opencon As ADODB.Connection)
Dim Banco As String
Banco = "D:TrabalhosSPLDATA.FDB"
Opencon.ConnectionString = "Provider=SIBPROvider.2;Password=masterkey;User ID=SYSDBA;Data Source=" & Banco & ";Persist Security Info=False"
Opencon.Properties("SIB:Cache Schemas").Value = 1
Opencon.Open
End Sub
Sub OpenRS(RS As Recordset, SQLstr As String, Conec As ADODB.Connection)
RS.Source = SQLstr
RS.LockType = adLockOptimistic
RS.ActiveConnection = Conec
RS.CursorType = adOpenDynamic
RS.Open
End Sub
Você deve estar achando estranho esta STRING de conexão, é que eu utilizo uma DLL externa para fazer a compatibilidade entre o ADO e o FB que é esta DLL que não é free.
3) Tamanho da Instalação: Eu criei um aplicativo de controle de estoque. Utilizando o FB e a forma de configuração do banco que expliquei a instalação ficou com 10,1 MB para o FB e 3,9MB para o JET40. Esta disparidade se deve a obrigatoriedade de acrescentar o MDAC_TYP.EXE para configurar o ADO (desde que vc tenha certeza que seu cliente tenha o 2000 ou XP vc é obrigado a enviar)
4) Velocidade de acesso : Aqui o Tekki andou fazendo tetes e, em termos de velocidade há um empate técnico desde que não haja concorrência. Fica claro também que, em uma rede com muitos terminais o FB leva vantagem pois vc pode tirar o processamento dos terminais e centralizar no servidor através de recursos que só existem em bases do tipo SGDB como é o caso de SP(Stored Procedures, como um validador de CNPJ dentro da base por ex.) e triggers (gatilhos disparados em determinadas situações). O JET40 em rede com mais de 5 terminais se atrapalha demais fora o alto risco de corrupção de dados.
5) Configuração da Base de Dados: Aqui a vantagem é total para o JET, pois basta copiar umas dll's e registrar as mesmas que o banco funciona. Já o FB não.
Nos meus testes este foi um gargalo. O banco mostrou-se muito "carente", ou seja, precisa de um técnico perto dele
Vou mostrar como fiz o sistema de instalação:
1º Instalei o FB peo seu instalador e depois compactei o seu diretório num ZIP chamado BASE.ZIP, este arquivo ficava no path do exe.
2º chamo esta função (Suprimi o código para extrair o ZIP, OK)
Sub InstalaFB()
On Error Resume Next
D:mdac_typ.exe /q /C:"setup /QNT"
If Dir$(App.Path & "Firebird", vbDirectory) = "" Then MkDir App.Path & "Firebird"
EXTRAI_ZIP BASE.ZIP, App.Path & "Firebird"
FileCopy App.Path & "FirebirdBinFBClient.dll", GetWS & "FBClient.dll"
FileCopy App.Path & "FirebirdBinGDS32.dll", GetWS & "GDS32.dll"
ChDrive Left(App.Path, 2)
ChDir App.Path & "FirebirdBin"
s = Shell(App.Path & "FirebirdBininstreg.exe", vbMinimizedFocus)
If GetWindowsVersion = True Then 'NT
s = Shell(App.Path & "FirebirdBininstall_super.bat", vbMaximizedFocus)
Else
s = Shell(App.Path & "FirebirdBinfbguard.exe", vbMaximizedFocus)
End If
If Err = 0 Then
MsgBox "Firebird Instalado.", vbInformation
Else
MsgBox "FB install " & Error$, vbCritical
End If
End Sub
Existem outros processos para configurar o FB, pelo inno setup po ex., mas eu testei todos e nenhum se mostrou 100%. O código acima foi o único que fez a base funcionar em um micro tanto com XP como com w95/98.
Porém, a SIBPro (dll q custa U$ 30,00) mostrou-se instável, as vezes registrava normal, as vezes dava erro de registro e não rodava mais, e misteriozamente ela não achava o FB mesmo este estando rodando 100%.
Minha Conclusão: Não quero aqui gerar nenhuma polêmica. Só quero alertar a vc que quer migrar para uma base mais potente.
O FB é muito superior ao JET, mas o JET também é muito superior ao FB, depende do ponto de vista
Se você for fazer um programa´para ser distribuido, ou que irá utilizar um pequeno volume de dados, use o JET. Se seu sistema for manipular muitos dados, ou ser usado em muitos terminais (eu diria em mais de 5), use o FB.
Porém o FB prenderá o cliente mais a você pois tem detalhes que o cliente não sabe configurar.
Em fim, FB e JET tem suas diferenças, e cabe a vc programador escolher entre os dois.
Um abraço e não perca o mesmo tempo que eu perdi pra chegar nesta conclusão
"