DBExpress ou IBX, quem é o melhor ?

20/05/2003

3

Amigos, conto com a experiência de vocês para me ajudarem num dilema : Qual a melhor forma de acessar o Interbase?
Pergunto isso porque estou estudando um pouco de Interbase e o livro em questão utiliza DBExpress com : TSQLConnection -> TSQLDataset -> TDataSetProvider-> TClientDataSet -> TDataSource... pra ser honesto achei a quantidade de componentes muito grande pra acessar uma única tabela e fiquei imaginando na migração de alguns de meus sistemas que tem mais de 50 tabelas o tamanho de um data module assim...
Não sei se meu conceito está errrado, mas me parece que com IBX seria bem mais prático e ´limpo´. Ou a aplicação utilizando a forma de acesso acima teria mais flexibilidade?
Quem puder manifestar sua opinião, agradeço...


Responder

Posts

21/05/2003

Obubiba

Acho que vai depender do que quiseres implementar em sua aplicação.
Realmente, esse número de componentes para acessar uma tabela me prece um exagero.
Costumo uilizar somente o TSQLConnection e o TDQSDataSet para o acesso, e no lugar do TSQLDataSet o TSQLQuery para consultas. Não costumo utilizar controles conscientes de dados, por isso esses três componentes já bastam em tudo que faço no dbexpress.


Responder

21/05/2003

Vinicius2k

Segundo o autor, usar o TDataSetProvider e TClientDataSet é uma ferramenta para ´driblar´ a forma unidirecional de acesso aos dados no Interbase... permitindo navegação bidirecional... tem fundamento?


Responder

23/05/2003

Obubiba

Segundo o autor, usar o TDataSetProvider e TClientDataSet é uma ferramenta para ´driblar´ a forma unidirecional de acesso aos dados no Interbase... permitindo navegação bidirecional... tem fundamento?


Acho que tem fundamento sim, já que a camada dbexpress foi implementada para que não se utilizasse navegação bidirecional, o uso desses componentes adicionais impediria que você precisasse utilizar outras camadas de componentes.


Responder

27/05/2003

Vinicius2k

obubiba,
entendi seu ponto de vista, mas continuei sem entender o do autor deste livro... ele usa TSQLDataset (paleta DBExpress), TDataSetProvider e TClientDatset (convencionais da paleta Data Access)... meu questionamento se deve ao fato de existir o TSQLClientDataSet na paleta dbexpress e este componente encapsula o TSQLDataSet , TDataSetProvider e o TClientDataSet... 3 componentes em um...

a autor se conecta na base e mostra na grid usando:
SQLConnection -> SQLDataSet -> DataSetProvider -> ClientDataSet -> DataSource

soh q eu faço a mesma coisa com :
SQLConnection -> SQLClientDataSet -> DataSource

Esta solução eu aprendi em ´Delphi 6 - Guia do Desenvolvedor´ que foi o melhor livro de Delphi q jah comprei, diga-se de passagem...

agora acho q fui mais claro... entende agora meu ponto de vista?


Responder

27/05/2003

Delmar

Eu não uso nenhum ainda. Venho estudando de longe trocar a camada de acesso a dados (BDE) que também infelizmente quando comecei a programar comercialmente, vim a usar por desconhecer outras.
Estou escrevendo porque me interessa muito esta discussão. Isto é bastante fundamental para otimização, performance, portabilidade e escalabilidade.
Já li bastante sobre BDE, IBO, IBX e DBExpress. No meu caso, acho que
vou ficar com DBExpress.
IBO, segundo a documentação que tenho lido, (não é minha opinião, porque tudo que eu citar aqui e que não for BDE, eu não usei), seria um dos mais rápidos, mas é bastante proprietário, não se integra com outros componentes de acesso.
IBX - também é rápido porque é específico para Interbase. O problema irá acontecer quando sua empresa cliente decidir ou terá a necessidade de trocar o banco de dados. Consequentemente será necessário trocar a camada de acesso que deverá oferecer suporte para o novo banco de dados.
DBExpress - Melhorou muito em relação ao BDE. Não oferce mais suporte para banco de dados que não são SQL (Por ex. paradox). Por isso é otimizado para trabalhar com SQL sobre SGBDs que usam SQL Links.
Atualmente suporta uma 6 duzia de drivers e outros estão sendo incluidos em seu porte.
Sobre os componentes de acesso:
SQLConnectio+SQLTable ou SQLQuery ou SQLDataset + Tprovider +Tclientdataset.
Poderia ser usado realmente o SQLClientdataset que encapsula o trio citado, mas a Borland substituiu este componente pelo TsimpleDataset no Delphi 7, porém este componente é para quem programa em duas camadas.
Já a dobradinha Tprovider+Tclientdataset é para solucionar sim a navegação Unidirecional em componentes cientes, mas tem outras duas funções muito importante. 1 - Fazer cache em memória, substituindo o TupdateSQL. 2 - Permitir a programação 3 camadas. A diferença, o Tclientdataset vai para a camada de apresentação e precisamos separar
as regras de negócio da camada de apresentação. Entram em cena protocolos da paleta DataSnap (DCOM, CORBA, TCP/IP, HTTP).

Penso assim, antes de tomar qualquer decisão pesquise bastante e leia,
sendo que ainda poderemos não fazer uma boa escolha. Eu já estou lendo a pelo menos um ano e disse: acho que vou ficar com DBExpress. Ainda há tempo para mudar.

Existem ainda outras camadas de acesso como ADO (muitos já citaram que está é ótima para SQLServer).


Responder

27/05/2003

Vinicius2k

Delmar,

Fico muito grato por manifestar sua opinião. Nunca fui preguiçoso, digamos assim, ao desenvolver... Sempre procurei a melhor forma de se fazer algo, mesmo que seja a mais trabalhosa. Sua resposta deu sentido ao meu questionamento, pois seria mais cômodo eu utilizar o SQLClientDataSet sem pesquisar, pois ele me traria um resultado mais rápido.

Ainda não migrei de base, como vc, ainda uso a BDE por conhecê-la bem, mas na verdade, o que temos hj no Delphi é um festival de formas de se acessar um Banco de Dados que me deixou atordoado com as ´n´ possibilidades, por isso há pelo menos seis meses venho estudando qual a melhor forma.

Primeiro, estudei bastante sobre os diversos Bancos de Dados e cheguei ao final com duas opções claras : InterBase e MySQL, para sistemas de pequeno e médio porte, em q a empresa sempre utilizará o Banco de Dados que vc trabalha e que agregar ao projeto o custo de um SGDB pode fazer com q vc perca o cliente. Neste ponto optei então pelo Interbase pois acredito que o MySQL ainda tenha muito a ser desenvolvido. Já para grandes empresas temos que nos preocupar com qual Banco de Dados a empresa trabalha, então chegamos ao SQL Server e Oracle... então a dúvida surgiu : ´Como padronizar o desenvolvimento a fim de atender qualquer nível de empresa?´ e a resposta, no meu caso foi : DBExpress.

Achei fantástica a possibilidade de apenas trocar o driver e ter o acesso ao Banco de Dados que quiser... Também percebi que devemos ficar atentos para não utilzar funções específicas de determinado SGBD, que podem facilitar o desenvolvimento inicial, mas complicar uma eventual migração.

Na verdade quando postei esta mensagem ainda estava em dúvida em relação a utilizar ou não DBExpress comparando com o IBX ou IBO, sendo que este último discartei por questões particulares : acredito que ele será cada vez menos compatível com o Interbase e mais FireBase, e ainda por questões particulares estou utilizando a útima versão do Interbase Open Source compilado pela Borland. Não me atrevo a utilizar outras compilações e muito menos o Firebase. Com o tempo aprendi que a segurança das informações é muito mais importante do que qualquer outra questão.

Essa dúvida entre componentes foi sanada há algumas semanas, mas então surgiu outra : ´Qual a melhor forma de trabalharmos com o DBExpress?´ Continuo estudando e sua resposta foi de grande valor.

Se vc concordar ou discordar que qualquer uma das opiniões que manifestei, peço q replique, pois sempre existe algo a discutir e aprender.


Responder

27/05/2003

Delmar

Vinicius,
penso que tu tens atribuições e responsabilidades semelhantes as que eu
tenho. Somos uma espécie de Make Decision em Engenharia de Software.
Compete a nós, conhecer estas Engines de acesso a dados, avaliar, separar vantagens e desvantagens. Hoje, sinto que é fundamental, esgotá-las ao ponto de chegarmos as suas deficiencias, pois assim seremos instigados a evoluir para camadas de acesso a dados que possam combinar aquelas features desejadas como portabilidade, escalabilidade, desempenho etc.

Também gastei tempo - quero dizer, ganhei tempo - avaliando banco de dados (MySQL e Interbase), engines livres e front-ends. Optei pelo Interbase pelo mesmo motivo que vc e como front-end uso IBexpert versão 2.5.x.

Se suas informações sobre estas pesquisas já estão em formato digital e for possível disponibilizá-las para mim, meu e-mail para pvt é:
deltacorp@deltacorp.com.br


Responder

28/05/2003

Vinicius2k

Delmar,
Vc falou em ´camadas´ e então li um pouco sobre o assunto ontém, e mais uma vez me surpreendi com recursos desconhecidos do Delphi (para mim)... compreendi o sentido do meu questinamento em relação à quantidade de componentes, pois o TProvider eh fundamental no servidor de aplicação.
Também estudei sobre a forma ideal de conexão e concluí, de forma preliminar, que seria com o uso de socket... vc tem algo a comentar ou acrescentar neste aspecto?
Como todo programador, somos sonhadores e queremos sempre estar um passo à frente de nós mesmos... após construído meu servidor de aplicação, já logo pensei em implementar nele próprio o socket server... vc acha q isso seria possível?
Estou verificando meus materiais de pesquisa e, com certeza, os enviarei à vc, assim q for possível.


Responder

29/05/2003

Delmar

Para implementar servidores de aplicação usando 3 camadas ou n-camadas podemos usar diversas tecnologias. Um fundamento que pode ajudar a decidir na escolha é a interface de usuário. Diferentes usuários/clientes querem diferentes interfaces.

Citando as interfaces

Internet - o usuário geralmente não aprende a usar formalmente a aplicação. Quando a apliacação muda, simplesmente diz, o site foi reestruturado.

Intranet - o usuário aprende a usar formalmente a aplicação e quer personalizá-la, teclas de atalho, disposição do layout, simplicidade, praticidade é o que mais exige.

Extranet - é uma mistura dos dois.

Citando as tecnologias

Midas (Palheta DataSnap) - oferece os protocolos DCOM, OleEnterprise, TCP/IP, CORBA. Midas foi bastante usada para construir aplicações Desktop (interface Intranet). É que, em Delphi, foi a primeira tecnologia disponibilizada para desenvolvimento em camadas. Atualmente pode ser substituida por outras. DCOM e OleEnterprise possuem mais limitações. CORBA, parece ser suavemente menos fácil de implementar. Eu também ficaria com TCP/IP, pelo menos para um primeiro projeto.

WebBroker(Palheta Internet) - publicar servidores de aplicação para a Web. Devido suas limitações (várias), foi desenvolvido uma nova palheta (WebSnap) com novos componentes que incorporaram todas as funções do Webbroker eliminando uma série de limitações e adicionaram outras.(Existe no help on-line do Delphi, um quadro comparativo entre Webbroker e Datasnap). Usado para construir interfaces Internet.

WebServices - publicar servidores de aplicação para a Web. Usa o protocolo SOAP para a troca de mensagens ou chamadas RPC através do protocolo HTTP. Todo conteúdo é convertido em documento XML. Usado para construir interfaces Internet. Não tenho certeza, mas acho que pode ser usado para construir interfaces desktop também. Os demais colegas, poderiam ratificar ou retificar. Seu principal atrativo: suporte para alguns clientes heterogênios e, pelo fato de usar XML, permite cruzar plataformas e Firewalls.

Novamente, tomei o cuidado de fazer as observações, baseado no que li. Nunca os usei, apenas busquei informações para a tomada de decisão.

Tenham todos um Bom Dia
Delmar


Responder

01/06/2003

Obubiba

[b:991600cf0b]vncsoliveira[/b:991600cf0b] - entedi o que você quis dizer. Realmente, para utilização em 2 camadas, o uso daqueles 3 componetes ao invés do SQLCLientDataSet é realmente mais trabalhoso e complicado.

Eu estou utilizando a teconologia DBexpress a mais de um ano, desde o Delphi 6 e Kylix 2, e agora com o Delphi 7 e Kylix 3.
E junto com ele estou utilizando o Firebird, também a mais de um ano.

Eu escolhi o dbexpress, primeiro porque achei muito mais simples que as outras camadas de acesso a banco de dados, e segundo pelas razões já ditas, onde simplesmente se mudando um driver você já pode acessar facilmente outra base de dados.
Este recurso é extremament importate, pois no caso de estarmos utilizando uma rede de médio porte com Interbase ou firebird, e precisarmos migrar a aplição para uma rede de grande porte, com Oracle por exemplo, basta poucas mudanças na camada de acesso aos dados e tudo resolvido(desde que não se tenham implementações específicas dos antigos bancos).

Quando à seguraça dos dados na utilização do Firebird, que é uma versão do Interbase Open Source, posso dizer que tenho o utilizado e tenho acompanhado a evolução deste bando a mais de um ano, e a segurança é tão boa quanto a do Interbase.
O SGDB tem evoluido significativamente, e tem uma séria equipe de desenvolvimento por tras dele.
O uso do Interbase 6.0 Open Source durante muito tempo não é muito recomendado, pois, tanto a versão 7 deste banco, quanto as atuais versões do Firebird(1.0 a 1.5) já tem melhores recursos, compilações mais robustas, e mais bugs corrigidos. Então, a atualizaçõa é recomentada.


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira