Lentidão em conexão remota
Uso FB 1.5 com dbexpress & cia. Tenho uma aplicação que faz acesso remoto a uma cidade a 200km de distancia. Realizo a consulta por registro (um por vez) e mesmo assim, há uma demora de cerca de 7 segundos.
Conforme um artigo de performance do FB do colega Vinicius2K, realizei alguns passos que ainda não tinha concluido e isso me ajudou muito. Na verdade, consegui diminuir essse tempo em 8 segundos, muito bom se comparado a antes que havia uma demora de 15 segundos.
Quando existe uma relação Mestre/Detalhe aí a coisa complica. Leva cerca de 15 segundos.
Já estou usando o Zebedee configurado e a consulta que faço é simplesmente assim:
Alguém pode me ajudar????
Grato !!!! :lol:
Conforme um artigo de performance do FB do colega Vinicius2K, realizei alguns passos que ainda não tinha concluido e isso me ajudou muito. Na verdade, consegui diminuir essse tempo em 8 segundos, muito bom se comparado a antes que havia uma demora de 15 segundos.
Quando existe uma relação Mestre/Detalhe aí a coisa complica. Leva cerca de 15 segundos.
Já estou usando o Zebedee configurado e a consulta que faço é simplesmente assim:
SELECT CAMPO1,CAMPO2,CAMPO3 FROM TABELA WHERE CAMPO1 = 1
Alguém pode me ajudar????
Grato !!!! :lol:
G1b4
Curtidas 0
Respostas
Vinicius2k
24/09/2004
Conforme um artigo de performance do FB do colega Vinicius2K...
Meu não... todos os méritos aos autores... eu só os ´encontrei´ e publiquei para vcs... :D
Sua conexão é banda larga? eu tenho um módulo remoto para vendedores numa aplicação minha e eles acessam via linha discada (56K) direto no servidor de RAS do cliente e não chega nem perto do problema q vc está tendo...
Nestes casos, de preferencia à Master/Details ´manuais´... passando o(s) campo(s) chave(s) da Master como parametros da instrução SQL da Detail.
Está usando ClientDataSets ? Não faz muito sentido se vc realmente só está trazendo um registro por vez, mas verifique a propriedade [b:8207aa32a3]PacketRecords[/b:8207aa32a3]. Ela define a quantidade de registros que serão trazidos para o lado do cliente (por vez). Utilize valores baixos (eu uso 32).
Este Zebedee é para criação de túnel seguro não é ? Seu problema pode estar com ele... Não tenho experiencia com este tipo de software, mas se ele faz algum tipo de tratamento, como crypt/decrypt, em tudo q entra e sai do servidor, com certeza ele torna a operação mais lenta... O quanto mais lenta eu não poderia precisar, mas se o servidor não for bom (hardware e O.S) deve tornar beeeeem mais lenta...
Creio que este problema não seja de tão fácil solução, então não posso indicar uma de imediato... o máximo que podemos fazer é trocar idéias para que vc chegue numa condição melhor...
Se vc descrever melhor toda a situação que envolve este acesso, poderá ajudar-nos a ajudar vc de uma forma mais precisa...
T+
GOSTEI 0
Vinicius2k
24/09/2004
Outro detalhe :
Propriedade [b:828060f2fb]KeepConnection[/b:828060f2fb] da TSQLConnection...
Sete como [b:828060f2fb]True[/b:828060f2fb], senão vc terá um processo de conexão e desconexão do lado do cliente a cada solicitação de registros ao servidor feita pelo DataSet.
T+
Propriedade [b:828060f2fb]KeepConnection[/b:828060f2fb] da TSQLConnection...
Sete como [b:828060f2fb]True[/b:828060f2fb], senão vc terá um processo de conexão e desconexão do lado do cliente a cada solicitação de registros ao servidor feita pelo DataSet.
T+
GOSTEI 0
G1b4
24/09/2004
Hhehehe foi mal sobre o artigo agora que vi... :lol:
Bom vamos ao assunto:
:arrow: Sua conexão é banda larga?
Qto a conexao, utilizamos o Speed Business da Telefonica.
:arrow: Nestes casos, de preferencia à Master/Details ´manuais´... passando o(s) campo(s) chave(s) da Master como parametros da instrução SQL da Detail.
Faço isso sim...
:arrow: Está usando ClientDataSets ?
Sim... e configuro os Packets com 30
:arrow: Este Zebedee é para criação de túnel seguro não é ?
Utilizo ele sem criptografia, apenas configuro o tunel
:arrow: Propriedade KeepConnection da TSQLConnection...
Sim
:?: Tenho que achar alguma maneira de consultar um registro de forma mais rápida. O que acho istranhu é como o Report Manager e o IbExpert acionam mais registros de forma quase instantanea. E olha que jah refiz varias vezes esse codigo...
Bom vamos ao assunto:
:arrow: Sua conexão é banda larga?
Qto a conexao, utilizamos o Speed Business da Telefonica.
:arrow: Nestes casos, de preferencia à Master/Details ´manuais´... passando o(s) campo(s) chave(s) da Master como parametros da instrução SQL da Detail.
Faço isso sim...
:arrow: Está usando ClientDataSets ?
Sim... e configuro os Packets com 30
:arrow: Este Zebedee é para criação de túnel seguro não é ?
Utilizo ele sem criptografia, apenas configuro o tunel
:arrow: Propriedade KeepConnection da TSQLConnection...
Sim
:?: Tenho que achar alguma maneira de consultar um registro de forma mais rápida. O que acho istranhu é como o Report Manager e o IbExpert acionam mais registros de forma quase instantanea. E olha que jah refiz varias vezes esse codigo...
GOSTEI 0
Vinicius2k
24/09/2004
... o Report Manager e o IbExpert acionam mais registros de forma quase instantanea. E olha que jah refiz varias vezes esse codigo...
Uma informação nova. Com isso vc pode esquecer qualquer problema com a conexão em si... o problema é na aplicação...
Vc está usando o driver nativo (dbexpint.dll) ?
Já fez algum teste com a mesma instrução SQL, porém usando IBX ou outra camada com acesso nativo à API ?
Apesar de estar trabalhando com dbExpress agora, esta minha aplicação que possui acesso remoto eu utilizo IBX...
T+
GOSTEI 0
G1b4
24/09/2004
:arrow: Vc está usando o driver nativo (dbexpint.dll) ?
Sim, uso a versão 7.0.2.113. Mas já tem a versão 7.1.e alguma coisa
:arrow: Já fez algum teste com a mesma instrução SQL, porém usando IBX ou outra camada com acesso nativo à API ?
Será ??? Bom, vow testar... Mas o que acho estranho é que o Report Manager utiliza o dbx para fazer a conexao. Eu trabalho tudo sobre o clientdataset... só utilizo a sqlquery para fazer acesso no banco...
Vlws vinicius2k, vow continuar tentando aki.... Assim q tiver resultados, posto aki novamente.... T+
Sim, uso a versão 7.0.2.113. Mas já tem a versão 7.1.e alguma coisa
:arrow: Já fez algum teste com a mesma instrução SQL, porém usando IBX ou outra camada com acesso nativo à API ?
Será ??? Bom, vow testar... Mas o que acho estranho é que o Report Manager utiliza o dbx para fazer a conexao. Eu trabalho tudo sobre o clientdataset... só utilizo a sqlquery para fazer acesso no banco...
Vlws vinicius2k, vow continuar tentando aki.... Assim q tiver resultados, posto aki novamente.... T+
GOSTEI 0
G1b4
24/09/2004
Vinicius2k, cara, fiz com o IBX e nao acredito:
fiz um SELECT * FROM TABELA no IBQUERY para abrir todos os registros (30000) e abriu em 5 segundos. Abrir 1 registro apenas é instantaneo.
Cara, isso quebrou minhas pernas mesmo. E o dbexpress??? O q acontece??? Fiz tudo direitinho como manda o figurino, dias e dias me matando, aprender a configurar o zebedee que não é tarefa fácil(fiquei uma cara) só pra fazer o dbx ter performance e mesmo assim...
fiz um SELECT * FROM TABELA no IBQUERY para abrir todos os registros (30000) e abriu em 5 segundos. Abrir 1 registro apenas é instantaneo.
Cara, isso quebrou minhas pernas mesmo. E o dbexpress??? O q acontece??? Fiz tudo direitinho como manda o figurino, dias e dias me matando, aprender a configurar o zebedee que não é tarefa fácil(fiquei uma cara) só pra fazer o dbx ter performance e mesmo assim...
GOSTEI 0
Vinicius2k
24/09/2004
Também não é pra tanto... :shock:
O dbExpress é mais lento que o IBX, ou qualquer outra camada com acesso direto à API do IB/FB, isso é fato, mas também não é assim...
Apesar de vc ter solicitado todos os 30 mil registros ao servidor, a IBQuery, inteligentemente, não os trouxe... :D
A não ser que vc oriente-a de forma contrária, aplicando o método FectchAll, ela nunca vai trazer todos os registros, mesmo que vc tenha pedido...
[b:cb2240711d]Sugestão:[/b:cb2240711d] substitua, a princípio uma, [b:cb2240711d]SQLQuery[/b:cb2240711d], por um [b:cb2240711d]SQLDataSet[/b:cb2240711d]... já vi colegas reclamando disso... nunca aconteceu comigo, pq só uso [b:cb2240711d]SQLDataSet[/b:cb2240711d]
T+
O dbExpress é mais lento que o IBX, ou qualquer outra camada com acesso direto à API do IB/FB, isso é fato, mas também não é assim...
Apesar de vc ter solicitado todos os 30 mil registros ao servidor, a IBQuery, inteligentemente, não os trouxe... :D
A não ser que vc oriente-a de forma contrária, aplicando o método FectchAll, ela nunca vai trazer todos os registros, mesmo que vc tenha pedido...
[b:cb2240711d]Sugestão:[/b:cb2240711d] substitua, a princípio uma, [b:cb2240711d]SQLQuery[/b:cb2240711d], por um [b:cb2240711d]SQLDataSet[/b:cb2240711d]... já vi colegas reclamando disso... nunca aconteceu comigo, pq só uso [b:cb2240711d]SQLDataSet[/b:cb2240711d]
T+
GOSTEI 0
G1b4
24/09/2004
Consegui depois de muitas tentativas continuar com o SQLQuery e baixei o tempo pra 3 segundos, o que por ser internet está bom d+ da conta...
Vlw pela ajuda !!!
Vlw pela ajuda !!!
GOSTEI 0
Vinicius2k
24/09/2004
Blz. Mas ainda acho q vale a pena o teste com o SQLDataSet... não foram 1 nem 2... já vi vários colegas reclamando de problemas de lentidão na SQLQuery...
Minha opinião: Não está bom não... 3 Segundos pra trazer 1 único registro é muito tempo, mesmo sendo na net, até pq é banda larga...
T+
Minha opinião: Não está bom não... 3 Segundos pra trazer 1 único registro é muito tempo, mesmo sendo na net, até pq é banda larga...
T+
GOSTEI 0
G1b4
24/09/2004
ok... vow testar.... disse que tava bom pois pra quem tinha um tempo de 15 segundos, melhorou muito... mas vow testar sim... vlw pela ajuda mesmo... brigadão...
GOSTEI 0
Vinicius2k
24/09/2004
Eu entendi o q vc quiz dizer... :D
É que mesmo vc tendo reduzido em 5 vezes, ainda está alto para um único registro...
Mas vc deve fazer comparações também entre o tempo da operação remota e na rede local... a culpa pode não ser apenas da conexão remota... seu banco pode estar precisando de índices melhores também...
Faça o teste e poste os resultados. :wink:
T+
É que mesmo vc tendo reduzido em 5 vezes, ainda está alto para um único registro...
Mas vc deve fazer comparações também entre o tempo da operação remota e na rede local... a culpa pode não ser apenas da conexão remota... seu banco pode estar precisando de índices melhores também...
Faça o teste e poste os resultados. :wink:
T+
GOSTEI 0
Cabelo
24/09/2004
Colega..
Eu utilizo uma TQuery no Delphi 5, se eu trocar pelos componentes da paleta InterBase, e fazer o acesso via internet, eu ganho performance??
Agradeço antecipadamente.
Eu utilizo uma TQuery no Delphi 5, se eu trocar pelos componentes da paleta InterBase, e fazer o acesso via internet, eu ganho performance??
Agradeço antecipadamente.
GOSTEI 0
Bruno_fantin
24/09/2004
Algumas verdades sobre o DBExpress...
A Borland não ia colocar o nome Express atoa na tecnologia...
De todas as tecnologias de acesso a dados disponivel para o Delphi ela é sim a mais rapida...
Ela é mais rapida acessando interbase do que o ibx...
Ela é mais rapida acessando sql server do que o ado...
Isso se dar pelo fato de a mesmo ser unidirecional...
Mas esse fato de ser unidirecional traz um lado negativo... Ele precisa jogar todos os dados capturados para o cliente.... O que resulta numa perfoma lenta via internet...
Mas levando em conta que a Borland lançou essa tecnologia pensando no MIDAS e nos Web Service... Ai sim você ver a grande força do DBExpress...
Já fiz uma aplicação usando SQL Server + DBX + Midas... E te digo... É o bicho... Se a conexão for boa nas duas pontas... Até parece que você está em rede local...
Falou....
A Borland não ia colocar o nome Express atoa na tecnologia...
De todas as tecnologias de acesso a dados disponivel para o Delphi ela é sim a mais rapida...
Ela é mais rapida acessando interbase do que o ibx...
Ela é mais rapida acessando sql server do que o ado...
Isso se dar pelo fato de a mesmo ser unidirecional...
Mas esse fato de ser unidirecional traz um lado negativo... Ele precisa jogar todos os dados capturados para o cliente.... O que resulta numa perfoma lenta via internet...
Mas levando em conta que a Borland lançou essa tecnologia pensando no MIDAS e nos Web Service... Ai sim você ver a grande força do DBExpress...
Já fiz uma aplicação usando SQL Server + DBX + Midas... E te digo... É o bicho... Se a conexão for boa nas duas pontas... Até parece que você está em rede local...
Falou....
GOSTEI 0
Cabelo
24/09/2004
Você poderia me dar um exemplo do quê vc me falou utilizando o delphi versão 5?
GOSTEI 0
Bruno_fantin
24/09/2004
Exemplo do que??? MIDAS???
GOSTEI 0
Cabelo
24/09/2004
Não de tudo, pois eu utilizo TQuery da paleta DataAccess do delphi 5, nem faço idéia de como utilizar esta paleta midas que vc me passou, vc teria um exemplo??
Este recurso iria melhorar a performance da conexão via InterNet?
Agradeço antecpadamente.
Este recurso iria melhorar a performance da conexão via InterNet?
Agradeço antecpadamente.
GOSTEI 0
Bruno_fantin
24/09/2004
´Este recurso iria melhorar a performance da conexão via InterNet? ´
Pode ter certeza que sim...
MIDAS é a forma que a Borland arrumou para implementrar 3 camadas no Delphi....
Já ouviu falar em 3 camadas??? Se não procure materiais sobre o assunto...
Um exemplo agora será meio impossivel... Pois é grande e estou na firma...
Mas faz isso... Me adiciona no seu msn messenger... E de noite eu te ajudo a fazer um programa simples usando a tecnologia midas...
meu e-mail do messenger é bruno_fantin@yahoo.com.br
Falou....
Pode ter certeza que sim...
MIDAS é a forma que a Borland arrumou para implementrar 3 camadas no Delphi....
Já ouviu falar em 3 camadas??? Se não procure materiais sobre o assunto...
Um exemplo agora será meio impossivel... Pois é grande e estou na firma...
Mas faz isso... Me adiciona no seu msn messenger... E de noite eu te ajudo a fazer um programa simples usando a tecnologia midas...
meu e-mail do messenger é bruno_fantin@yahoo.com.br
Falou....
GOSTEI 0
Cabelo
24/09/2004
Valeu pela força..
GOSTEI 0
Massuda
24/09/2004
Queria acrescentar duas coisas sobre o Midas:
[list:49f1783ca2][*:49f1783ca2][b:49f1783ca2]Versão do Delphi[/b:49f1783ca2]: dependendo da versão do Delphi de nosso colega Cabelo, ele não tem acesso ao Midas; pelo que me lembro, Midas está presente apenas a partir do Delphi 3 nas versões Enterprise ou melhor[*:49f1783ca2][b:49f1783ca2]Licença do Servidor[/b:49f1783ca2]: embora algumas pessoas não se importem com esta questão, a licença de uso do Midas que acompanha determinadas versões do Delphi não permitem a livre distribuição dos servidores Midas. Posso estar errado sobre isso, já que na última vez que verifiquei esta questão, eu queria apenas saber do caso do D7 Enterprise.[/list:u:49f1783ca2]
[list:49f1783ca2][*:49f1783ca2][b:49f1783ca2]Versão do Delphi[/b:49f1783ca2]: dependendo da versão do Delphi de nosso colega Cabelo, ele não tem acesso ao Midas; pelo que me lembro, Midas está presente apenas a partir do Delphi 3 nas versões Enterprise ou melhor[*:49f1783ca2][b:49f1783ca2]Licença do Servidor[/b:49f1783ca2]: embora algumas pessoas não se importem com esta questão, a licença de uso do Midas que acompanha determinadas versões do Delphi não permitem a livre distribuição dos servidores Midas. Posso estar errado sobre isso, já que na última vez que verifiquei esta questão, eu queria apenas saber do caso do D7 Enterprise.[/list:u:49f1783ca2]
GOSTEI 0
Bruno_fantin
24/09/2004
Pelo que eu sei a lincesa foi liberada apartir do Delphi 7....
GOSTEI 0
Cabelo
24/09/2004
No meu delphi 5 tem instalado a paleta midas, e é uma versão licensiada..
Será que tem problemas com esta licensa????
Será que tem problemas com esta licensa????
GOSTEI 0
Massuda
24/09/2004
De acordo com o que encontrei no NG da Borland, basicamente:[list:85c092c3c7][*:85c092c3c7]Se você tem um D7 Enterprise ou Architect, você pode distribuir livremente servidores que utilizam Midas/DataSnap.[*:85c092c3c7]Se você tem um D6 Enterprise, você deveria ou fazer upgrade para o D7 Enterprise ou adquirir uma licença para servidor adicional na [url=http://shop.borland.com/dr/v2/Ec_Main.entry24?SP=10023&PN=1&V1=378393&xid=39696&search_id=17395266&doc_id=1&DSP=&CUR=840&PGRP=0&CACHE_ID=0]loja da Borland[/url] (por 299 dólares).[*:85c092c3c7]No caso de versões mais antigas, não sei o que deve ser feito[/list:u:85c092c3c7]Acho que alguém da Borland daqui poderia esclarecer melhor isso.
Só levantei essa questão aqui pois, na empresa onde trabalhava antes, só começamos a desenvolver com Midas/DataSnap depois que começamos a utilizar o D7E devido a questão da licença de distribuição do Midas.
Só levantei essa questão aqui pois, na empresa onde trabalhava antes, só começamos a desenvolver com Midas/DataSnap depois que começamos a utilizar o D7E devido a questão da licença de distribuição do Midas.
GOSTEI 0
Vinicius2k
24/09/2004
Colega Bruno,
Se me permitir contestar...
Não.
Não mesmo. Nem de longe... Todas as camadas com acesso nativo à API do servidor IB/FB são mais rápidas do o dbExpress. IBX, FIB+, IBO (a mais rápida) são muito mais eficientes do que o dbExpress.
Não. A exemplo das camadas nativas para o IB, ADO pode ser considerado nativo para o SQL Server, portanto mais rápida que o dbExpress.
Entenda que, quanto mais intermediários, menor a performance :
- dbExpress -> driver -> API -> servidor
- IBX -> API -> servidor (melhor performance)
- dbExpress -> driver -> OLE DB -> servidor
- ADO -> OLE DB -> servidor (melhor performance)
Ser unidirecional ou não não tem nada haver com performance. Não existe navegação bidirecional no servidor...
Neste aspecto a única diferença do dbExpress para as demais camadas é que ela não tem buffer próprio, necessitando do auxilio da midas para navegação bidirecional.
Todas as camadas de acesso irão trazer para o lado do cliente os registros solicitados pela query, sejam todos de uma vez ou por demanda... aí é uma questão de configuração da camada e/ou aplicação dos métodos C/S corretos.
A própria universalidade do dbExpress, torna-o, naturalmente mais lento, a exemplo da BDE, porém muito mais rápido que ela (a BDE).
Mas apesar de, relativamente, mais lento, a diferença não é tão grande ao ponto de desencorajar a utilizá-lo. É uma questão de escolha de qual opção é a melhor dentro do contexto do projeto... Se vc iniciar um projeto que só vai usar SQL Server, por exemplo, sem possibilidade de mudança para outro SGBD, é muito mais vantajoso usar o ADO.
T+
Se me permitir contestar...
De todas as tecnologias de acesso a dados disponivel para o Delphi ela é sim a mais rapida...
Não.
Ela é mais rapida acessando interbase do que o ibx...
Não mesmo. Nem de longe... Todas as camadas com acesso nativo à API do servidor IB/FB são mais rápidas do o dbExpress. IBX, FIB+, IBO (a mais rápida) são muito mais eficientes do que o dbExpress.
Ela é mais rapida acessando sql server do que o ado...
Não. A exemplo das camadas nativas para o IB, ADO pode ser considerado nativo para o SQL Server, portanto mais rápida que o dbExpress.
Entenda que, quanto mais intermediários, menor a performance :
- dbExpress -> driver -> API -> servidor
- IBX -> API -> servidor (melhor performance)
- dbExpress -> driver -> OLE DB -> servidor
- ADO -> OLE DB -> servidor (melhor performance)
Isso se dar pelo fato de a mesmo ser unidirecional...
Mas esse fato de ser unidirecional traz um lado negativo... Ele precisa jogar todos os dados capturados para o cliente.... O que resulta numa perfoma lenta via internet...
Ser unidirecional ou não não tem nada haver com performance. Não existe navegação bidirecional no servidor...
Neste aspecto a única diferença do dbExpress para as demais camadas é que ela não tem buffer próprio, necessitando do auxilio da midas para navegação bidirecional.
Todas as camadas de acesso irão trazer para o lado do cliente os registros solicitados pela query, sejam todos de uma vez ou por demanda... aí é uma questão de configuração da camada e/ou aplicação dos métodos C/S corretos.
A própria universalidade do dbExpress, torna-o, naturalmente mais lento, a exemplo da BDE, porém muito mais rápido que ela (a BDE).
Mas apesar de, relativamente, mais lento, a diferença não é tão grande ao ponto de desencorajar a utilizá-lo. É uma questão de escolha de qual opção é a melhor dentro do contexto do projeto... Se vc iniciar um projeto que só vai usar SQL Server, por exemplo, sem possibilidade de mudança para outro SGBD, é muito mais vantajoso usar o ADO.
T+
GOSTEI 0
Osocram
24/09/2004
tente colocar
no Before Open do CDs
CDS.disablecontrols;
e no After Open do CDS
CDS.enableControls;
isso aqui dah um ganho em performace inacreditavel.... mas cuidado... dependendo o caso isso pod non ser mto util.
no Before Open do CDs
CDS.disablecontrols;
e no After Open do CDS
CDS.enableControls;
isso aqui dah um ganho em performace inacreditavel.... mas cuidado... dependendo o caso isso pod non ser mto util.
GOSTEI 0
Bruno_fantin
24/09/2004
´De todas as tecnologias de acesso a dados disponivel para o Delphi ela é sim a mais rapida...
Não. ´
Porque não??? Tem provas???
´Ela é mais rapida acessando interbase do que o ibx...
Não mesmo. Nem de longe... Todas as camadas com acesso nativo à API do servidor IB/FB são mais rápidas do o dbExpress. IBX, FIB+, IBO (a mais rápida) são muito mais eficientes do que o dbExpress. ´
O DBX acessa via acesso nativo.. É só pensar... DBX e IB são da borland... Porque ela não ia dar acesso nativo para o mesmo???
´Ela é mais rapida acessando sql server do que o ado...
Não. A exemplo das camadas nativas para o IB, ADO pode ser considerado nativo para o SQL Server, portanto mais rápida que o dbExpress. ´
Quando eu fiz o programa que te falei passamos meses decidindo entre DBX e ADO... E todos os teste de velocidade de fizemos o DBX sempre se saia melhor...
´Entenda que, quanto mais intermediários, menor a performance :
- dbExpress -> driver -> API -> servidor
- IBX -> API -> servidor (melhor performance) ´
O fato de o DBX ser multibanco faz com que o driver fica separado da enginer... O IBX também tem o seu driver só que no caso dele está imbutido...
O esquema certo é...
- dbExpress -> driver -> API -> servidor
- (IBX + driver) -> API -> servidor
3 Etapa para cada... Prova disso... O ADO que você mesmo diz ter acesso nativo é nesse esquema...
- ADO - Provedor - API - Servidor
É só entrar nas configuraçõe do ADO que ele de dar uma lista de provedores (pode-se chamar de drivers)... Cada provedor tem a sua dll igual as dlls dos drivers do dbx... já o ibx não tem dll... mas o codigo que estaria na provavel dll está dentro do mesmo... No final dar na mesma...
´Isso se dar pelo fato de a mesmo ser unidirecional...
Mas esse fato de ser unidirecional traz um lado negativo... Ele precisa jogar todos os dados capturados para o cliente.... O que resulta numa perfoma lenta via internet...
Ser unidirecional ou não não tem nada haver com performance. Não existe navegação bidirecional no servidor...
Neste aspecto a única diferença do dbExpress para as demais camadas é que ela não tem buffer próprio, necessitando do auxilio da midas para navegação bidirecional.
Todas as camadas de acesso irão trazer para o lado do cliente os registros solicitados pela query, sejam todos de uma vez ou por demanda... aí é uma questão de configuração da camada e/ou aplicação dos métodos C/S corretos. ´
Então senhor expert.. Me diz o que o acesso unidirecional tem de melhor do que o bidirecional??? O pessoal da Borland fala que é perfomace...
´A própria universalidade do dbExpress, torna-o, naturalmente mais lento, a exemplo da BDE, porém muito mais rápido que ela (a BDE). ´
ADO também é multibanco... Mesmo assim você fala que é rapida... Não tem algo de errado ai...
Para não ser lenta que os drivers foram feitos em dlls aparte... Assim você tem na sua aplicação somento o necessario para o se comunidar via sql... E na(s) dll(s) que escolher você tem o proprio acesso ao banco...
Agora é só pensar... O Delphi tem o BDE para banco antigos (Paradox e DBase)... IBX para o proprio banco dele... ADO para tudo que é banco...
Então porque eles ia perder tempo criando o DBX e apostarem todas as suas fichas neles??? Porque todos os altores de livros recormendam dbx???
Vamos fazer um acordo??? Faz uma aplicação em DBX... Ai depois você vem falar comigo para nós dois elogiar o mesmo...
Falou...
Não. ´
Porque não??? Tem provas???
´Ela é mais rapida acessando interbase do que o ibx...
Não mesmo. Nem de longe... Todas as camadas com acesso nativo à API do servidor IB/FB são mais rápidas do o dbExpress. IBX, FIB+, IBO (a mais rápida) são muito mais eficientes do que o dbExpress. ´
O DBX acessa via acesso nativo.. É só pensar... DBX e IB são da borland... Porque ela não ia dar acesso nativo para o mesmo???
´Ela é mais rapida acessando sql server do que o ado...
Não. A exemplo das camadas nativas para o IB, ADO pode ser considerado nativo para o SQL Server, portanto mais rápida que o dbExpress. ´
Quando eu fiz o programa que te falei passamos meses decidindo entre DBX e ADO... E todos os teste de velocidade de fizemos o DBX sempre se saia melhor...
´Entenda que, quanto mais intermediários, menor a performance :
- dbExpress -> driver -> API -> servidor
- IBX -> API -> servidor (melhor performance) ´
O fato de o DBX ser multibanco faz com que o driver fica separado da enginer... O IBX também tem o seu driver só que no caso dele está imbutido...
O esquema certo é...
- dbExpress -> driver -> API -> servidor
- (IBX + driver) -> API -> servidor
3 Etapa para cada... Prova disso... O ADO que você mesmo diz ter acesso nativo é nesse esquema...
- ADO - Provedor - API - Servidor
É só entrar nas configuraçõe do ADO que ele de dar uma lista de provedores (pode-se chamar de drivers)... Cada provedor tem a sua dll igual as dlls dos drivers do dbx... já o ibx não tem dll... mas o codigo que estaria na provavel dll está dentro do mesmo... No final dar na mesma...
´Isso se dar pelo fato de a mesmo ser unidirecional...
Mas esse fato de ser unidirecional traz um lado negativo... Ele precisa jogar todos os dados capturados para o cliente.... O que resulta numa perfoma lenta via internet...
Ser unidirecional ou não não tem nada haver com performance. Não existe navegação bidirecional no servidor...
Neste aspecto a única diferença do dbExpress para as demais camadas é que ela não tem buffer próprio, necessitando do auxilio da midas para navegação bidirecional.
Todas as camadas de acesso irão trazer para o lado do cliente os registros solicitados pela query, sejam todos de uma vez ou por demanda... aí é uma questão de configuração da camada e/ou aplicação dos métodos C/S corretos. ´
Então senhor expert.. Me diz o que o acesso unidirecional tem de melhor do que o bidirecional??? O pessoal da Borland fala que é perfomace...
´A própria universalidade do dbExpress, torna-o, naturalmente mais lento, a exemplo da BDE, porém muito mais rápido que ela (a BDE). ´
ADO também é multibanco... Mesmo assim você fala que é rapida... Não tem algo de errado ai...
Para não ser lenta que os drivers foram feitos em dlls aparte... Assim você tem na sua aplicação somento o necessario para o se comunidar via sql... E na(s) dll(s) que escolher você tem o proprio acesso ao banco...
Agora é só pensar... O Delphi tem o BDE para banco antigos (Paradox e DBase)... IBX para o proprio banco dele... ADO para tudo que é banco...
Então porque eles ia perder tempo criando o DBX e apostarem todas as suas fichas neles??? Porque todos os altores de livros recormendam dbx???
Vamos fazer um acordo??? Faz uma aplicação em DBX... Ai depois você vem falar comigo para nós dois elogiar o mesmo...
Falou...
GOSTEI 0
Vinicius2k
24/09/2004
Colega Bruno,
Este é um fórum de discussão... portanto, tenho o direito de ter opinião diferente da sua. Se vc se sentiu ofendido, sinto muito... Creio ter sido claro e objetivo nas minhas colocações e não ter lhe ofendido em nenhuma delas.
Não vou entrar nos méritos destas questões novamente, minha posição já está expressa.
Expert?? não... sou longe de ser expert... todos os colegas aqui me conhecem e quando respondo alguma questão é porque estou embasado de teoria e prática para falar do assunto e quando não sei, não respondo ou digo que não sei...
Apenas para sua informação: trabalho há muito tempo (anos) com as 3 tecnologias das quais falei (IBX, ADO e DBX), portanto tenho propriedade para falar de vantagens e desvantagens de todas...
Sou eu quem proponho um acordo: [b:480375e733]Quando vc souber[/b:480375e733] a diferença entre acesso nativo e via driver, que pelo que vi vc não faz idéia do que é isso, volte a este tópico e assuma os erros da enorme quantidade besteiras que vc falou...
T+
Este é um fórum de discussão... portanto, tenho o direito de ter opinião diferente da sua. Se vc se sentiu ofendido, sinto muito... Creio ter sido claro e objetivo nas minhas colocações e não ter lhe ofendido em nenhuma delas.
Não vou entrar nos méritos destas questões novamente, minha posição já está expressa.
Expert?? não... sou longe de ser expert... todos os colegas aqui me conhecem e quando respondo alguma questão é porque estou embasado de teoria e prática para falar do assunto e quando não sei, não respondo ou digo que não sei...
Apenas para sua informação: trabalho há muito tempo (anos) com as 3 tecnologias das quais falei (IBX, ADO e DBX), portanto tenho propriedade para falar de vantagens e desvantagens de todas...
Sou eu quem proponho um acordo: [b:480375e733]Quando vc souber[/b:480375e733] a diferença entre acesso nativo e via driver, que pelo que vi vc não faz idéia do que é isso, volte a este tópico e assuma os erros da enorme quantidade besteiras que vc falou...
T+
GOSTEI 0
Bruno_fantin
24/09/2004
Primeiramente... Não... Você não me ofendeu...
Segundo... Se o expert te ofendeu... Me desculpa... Não era a intensão...
Terceiro... Também só estou colocando a minha opinião... Não achei certo quando você critiou o dbx perante as outras tecnoligias... Então apenas coloquei a opinião conseguida com muitas experiencias reais e com bastante depoimento de pessoas que entende do assunto...
Agora não venha a me falar que não sei o que é acesso nativo ou por drivers se você nem sabe o que é acesso unidirecional e teve a coragem de dizer que ele não altera em nada a performace...
Agora voltando... Express significa rapido... E nós dois concordamos que acesso nativo é rapido... O DBX usa acesso nativo sim... Se você tem alguma duvida disso... Basta dar uma olhada no codigo do dbx e você verá como ele se interaje com as dlls...
Falou...
Segundo... Se o expert te ofendeu... Me desculpa... Não era a intensão...
Terceiro... Também só estou colocando a minha opinião... Não achei certo quando você critiou o dbx perante as outras tecnoligias... Então apenas coloquei a opinião conseguida com muitas experiencias reais e com bastante depoimento de pessoas que entende do assunto...
Agora não venha a me falar que não sei o que é acesso nativo ou por drivers se você nem sabe o que é acesso unidirecional e teve a coragem de dizer que ele não altera em nada a performace...
Agora voltando... Express significa rapido... E nós dois concordamos que acesso nativo é rapido... O DBX usa acesso nativo sim... Se você tem alguma duvida disso... Basta dar uma olhada no codigo do dbx e você verá como ele se interaje com as dlls...
Falou...
GOSTEI 0
Vinicius2k
24/09/2004
Terceiro... Também só estou colocando a minha opinião... Não achei certo quando você critiou o dbx perante as outras tecnoligias... Então apenas coloquei a opinião conseguida com muitas experiencias reais e com bastante depoimento de pessoas que entende do assunto...
Eu não critiquei deliberadamente, até pq eu trabalho com o DBX e reconheço suas vantagens e desvantagens. Eu discordei de vc, é bem diferente... pq vc fez afirmações, sem fundamento, sobre o DBX em detrimento as demais camadas, só pq a Borland ´disse´ que é mais melhor... é obvio que ela não vai exaltar os pontos fracos de uma tecnologia dela, mesmo porque, o IBX é, praticamente, um projeto independente, e a tendencia é que ela permaneça apenas com ADO.NET e dbExpress.NET.
Na alusão que vc faz ao nome Express, IBX é uma sigla para InterBase eXpress. E o nome original do pacote ADO é ADO Express.
Agora não venha a me falar que não sei o que é acesso nativo ou por drivers se você nem sabe o que é acesso unidirecional e teve a coragem de dizer que ele não altera em nada a performace...
Não entendi... o que lhe levou a pensar que eu não sei o que acesso unidirecional? Acho q é vc é que não entendeu ainda o que é o buffer local que todas tem, menos o DBX.
Navegar de forma bidirecional em um DataSet é navegar em um buffer e não no servidor. Todos, ou alguns dados (depende da configuração de demanda) já estão do lado do cliente, não importa a camada usada, com exceção do DBX.
Como o DBX não faz buffer, quando vc executa uma query de seleção. ela traz 1 registro, quando vc chama o método Next ele traz mais 1 e mais 1 e assim por diante... Lógico que trazer um registro é mais rápido que 1000, por isso a propaganda de performance feita pela Borland, a qual vc tanto cita... Só que para trazer 1000 registros, vc vai precisar executar 999 Nexts e povoar um buffer qualquer.
Se vc executar uma query no IBX que traga apenas 1 registro, o resultado é que ela é mais rápida do que o DBX.
Se vc executar uma outra query no IBX que traga 1000 registros, e a mesma query no DBX acrescida dos 999 nexts, o resultado não muda e o IBX continua sendo mais rápido que o DBX.
O que vc não está entendendo é a Midas (Provider) vai executar a instrução e povoar o buffer do ClientDataSet registro a registro, limitado ou não por demanda através do PacketRecords, e, é no buffer do ClientDataSet que vc vai navegar de forma bidirecional.
É este buffer que os demais componentes já tem embutidos. Repito, não existe navegação bidirecional diretamente no servidor. Sempre o os registros solicitados serão transportados para o lado do cliente.
O DBX usa acesso nativo sim... Se você tem alguma duvida disso... Basta dar uma olhada no codigo do dbx e você verá como ele se interaje com as dlls...
Vc realmente não sabe o que é acesso nativo.
A camada DBX em si não é capaz de executar nada sem o driver. O driver é o intermediário entre a camada e o cliente do SGBD (API), logo não é nativo. O DBX não interage com a API do SGBD, ele interage com o seu driver que por sua vez interage com a API.
Ao contrário das demais camadas que interagem diretamente com API, isso é acesso nativo. Sem intermediário entre a camada de acesso e a API do servidor.
Só um conselho, colega... mesmo que vc esteja convicto de uma idéia, esteja aberto a receber uma discordância e aprender com ela ou questionar de forma educada.
Este é o sentido de um fórum, ensinar e aprender... Já aprendi muita coisa aqui e, de boa vontade, ensino muitas coisas também...
Eu acabo de passar cerca de 30 minutos lhe respondendo, então, por favor, valorize isso... pesquise, informe-se, teste, e é possível que vc chegue a conclusão de que eu tenho razão.
Se vc, ou outro colega, discordar de mim, ótimo !... vcs poderão me ensinar alguma coisa que eu não sei... ninguém é dono da verdade, mas até o momento, penso estar certo.
T+
GOSTEI 0
Bruno_fantin
24/09/2004
´Eu não critiquei deliberadamente, até pq eu trabalho com o DBX e reconheço suas vantagens e desvantagens. Eu discordei de vc, é bem diferente... pq vc fez afirmações, sem fundamento, sobre o DBX em detrimento as demais camadas,´
Ok... Critica não foi a palavra certa... Mas você falou que DBX é mais lenta que IBX... O que mas minhas experiencias provam o contrario...
´ só pq a Borland ´disse´ que é mais melhor... é obvio que ela não vai exaltar os pontos fracos de uma tecnologia dela, mesmo porque, o IBX é, praticamente, um projeto independente, e a tendencia é que ela permaneça apenas com ADO.NET e dbExpress.NET. ´
Ah ela fala sim... A mesma disse... ´SimplesDataSet é um lixo e é cheio de bugs... Não recomendamos usar o mesmo porque não vamos fazer atualizações para ele´... Não bem com essas palavras mais quiz dizer isso...
´Não entendi... o que lhe levou a pensar que eu não sei o que acesso unidirecional? Acho q é vc é ...
...
...
...
Sempre o os registros solicitados serão transportados para o lado do cliente. ´
Não vou repetir denovo que já disse... Basta você fazer um programinhas simples e ver no que dar...
bruno_fantin escreveu:
O DBX usa acesso nativo sim... Se você tem alguma duvida disso... Basta dar uma olhada no codigo do dbx e você verá como ele se interaje com as dlls...
´Vc realmente não sabe o que é acesso nativo.
A camada DBX em si não é capaz de executar nada sem o driver. O driver é o intermediário entre a camada e o cliente do SGBD (API), logo não é nativo. O DBX não interage com a API do SGBD, ele interage com o seu driver que por sua vez interage com a API.
Ao contrário das demais camadas que interagem diretamente com API, isso é acesso nativo. Sem intermediário entre a camada de acesso e a API do servidor. ´
Acesso não nativo é quando você usa alguma aplicação de controle entre o seu programa e o banco... Exemplo... BDE tem varias dlls... Tem dados armazenados... E quando você usa ele o seu programa apenas pedi... E ele faz o resto...
Já o dbx não é isso todo o controle está dentro do proprio dbx... Ele apenas chama função dentro de um dll....
Quer dizer que se eu abrir os codigos do ibx... Pega algumas funções dele e criar um dll com elas ele deixar de ser acesso nativo??? Logico que não... Ele continua acessando na mesma velocidade e da mesma forma...
´Só um conselho, colega... mesmo que vc esteja convicto de uma idéia, esteja aberto a receber uma discordância e aprender com ela ou questionar de forma educada.
Este é o sentido de um fórum, ensinar e aprender... Já aprendi muita coisa aqui e, de boa vontade, ensino muitas coisas também...
Eu acabo de passar cerca de 30 minutos lhe respondendo, então, por favor, valorize isso... pesquise, informe-se, teste, e é possível que vc chegue a conclusão de que eu tenho razão.
Se vc, ou outro colega, discordar de mim, ótimo !... vcs poderão me ensinar alguma coisa que eu não sei... ninguém é dono da verdade, mas até o momento, penso estar certo. ´
O conselho vale mais para você do que para mim... Eu sei assumir quando erro... Prova disso é que pedi desculpa por ter te chamado de expert...
Mas vamos parar isso por aqui que já vimos que não vamos chegar em nenhum lugar...
Se quizer responder a essa minha mensagem sinta-se a vontade... Certamente vou ler a resposta... Mas não vou responder para a discursão não ir mais longe...
Sem mais...
Bruno Fantin...
Ok... Critica não foi a palavra certa... Mas você falou que DBX é mais lenta que IBX... O que mas minhas experiencias provam o contrario...
´ só pq a Borland ´disse´ que é mais melhor... é obvio que ela não vai exaltar os pontos fracos de uma tecnologia dela, mesmo porque, o IBX é, praticamente, um projeto independente, e a tendencia é que ela permaneça apenas com ADO.NET e dbExpress.NET. ´
Ah ela fala sim... A mesma disse... ´SimplesDataSet é um lixo e é cheio de bugs... Não recomendamos usar o mesmo porque não vamos fazer atualizações para ele´... Não bem com essas palavras mais quiz dizer isso...
´Não entendi... o que lhe levou a pensar que eu não sei o que acesso unidirecional? Acho q é vc é ...
...
...
...
Sempre o os registros solicitados serão transportados para o lado do cliente. ´
Não vou repetir denovo que já disse... Basta você fazer um programinhas simples e ver no que dar...
bruno_fantin escreveu:
O DBX usa acesso nativo sim... Se você tem alguma duvida disso... Basta dar uma olhada no codigo do dbx e você verá como ele se interaje com as dlls...
´Vc realmente não sabe o que é acesso nativo.
A camada DBX em si não é capaz de executar nada sem o driver. O driver é o intermediário entre a camada e o cliente do SGBD (API), logo não é nativo. O DBX não interage com a API do SGBD, ele interage com o seu driver que por sua vez interage com a API.
Ao contrário das demais camadas que interagem diretamente com API, isso é acesso nativo. Sem intermediário entre a camada de acesso e a API do servidor. ´
Acesso não nativo é quando você usa alguma aplicação de controle entre o seu programa e o banco... Exemplo... BDE tem varias dlls... Tem dados armazenados... E quando você usa ele o seu programa apenas pedi... E ele faz o resto...
Já o dbx não é isso todo o controle está dentro do proprio dbx... Ele apenas chama função dentro de um dll....
Quer dizer que se eu abrir os codigos do ibx... Pega algumas funções dele e criar um dll com elas ele deixar de ser acesso nativo??? Logico que não... Ele continua acessando na mesma velocidade e da mesma forma...
´Só um conselho, colega... mesmo que vc esteja convicto de uma idéia, esteja aberto a receber uma discordância e aprender com ela ou questionar de forma educada.
Este é o sentido de um fórum, ensinar e aprender... Já aprendi muita coisa aqui e, de boa vontade, ensino muitas coisas também...
Eu acabo de passar cerca de 30 minutos lhe respondendo, então, por favor, valorize isso... pesquise, informe-se, teste, e é possível que vc chegue a conclusão de que eu tenho razão.
Se vc, ou outro colega, discordar de mim, ótimo !... vcs poderão me ensinar alguma coisa que eu não sei... ninguém é dono da verdade, mas até o momento, penso estar certo. ´
O conselho vale mais para você do que para mim... Eu sei assumir quando erro... Prova disso é que pedi desculpa por ter te chamado de expert...
Mas vamos parar isso por aqui que já vimos que não vamos chegar em nenhum lugar...
Se quizer responder a essa minha mensagem sinta-se a vontade... Certamente vou ler a resposta... Mas não vou responder para a discursão não ir mais longe...
Sem mais...
Bruno Fantin...
GOSTEI 0
Vinicius2k
24/09/2004
Estou respondendo, mas apenas para também me retirar desta discussão, que como vc bem disse, não vai levar a lugar nenhum...
Eu discordei e me expliquei, mas se vc não quer entender, não posso fazer mais nada...
T+
Eu discordei e me expliquei, mas se vc não quer entender, não posso fazer mais nada...
T+
GOSTEI 0
Bertocco
24/09/2004
Você pode usar no windows 2000/2003 Server , o terminal server , muito bom e funciona tb com linha discada
GOSTEI 0