[firebase-br] RES: RES: RES: firebird na internet

Listas listas em fasystem.com.br
Sáb Mar 23 12:31:18 -03 2013


Bom dia Walter

Eu utilizo Delphi7, FB 2.5, Suite de acesso IBX.
Como já foi dito, o segredo para obter uma boa performance, é trazer para o cliente somente aquilo que realmente é necessário.
Preparar o banco com tabelas relacionadas, sempre evitar chaves compostas quando possível, setar índices para colunas que realmente serão usadas em consulta entre outras coisas. Nunca usar FetchAll, traga somente o que será necessário para povoar a sua grid. Quando eu escuto o povo falar de packetrecords do ClientDataset utilizado com o DBX, eu entendo o principal problema do pessoal que o utiliza e por isso as reclamações da lentidão do FB na internet. Como saber se o cliente vai querer ver 10, 50, 100 registros. Na grande maioria das vezes, o cliente quer ver um registro somente, mesmo quando ele quer trabalhar com um grupo de registros, será que a grid tem espaço para mostrar todas as linhas. As vezes se dá um fetchall, ou last, somente para saber quantos registros foram retornados pela consulta. A IBX tem esse problema. Eu só sei quantos registros a query retornou se der um fetchall na mesma. Para resolver isso, eu simplesmente crio outra query igual, com os mesmos parâmetros, mas que não traz nenhum dado, somente uso count para saber o numero de registros.
Avalie se ao mostrar os dados para o cliente, por comodidade, você tem que ir para o último registro, o que implicaria em ter de varrer a consulta totalmente, você simplesmente não inverte a ordem, começando do último para o primeiro.
A IBX tem uma coisa muito ruim, ela simplesmente fecha os dados quando você dá um commit na transação, (por isso namoro o DBX). Alguns, por comodidade, usam CommitRetaining para solucionar o problema, mas daí cria outros, que são os famosos DEADLOCK nos registros utilizados.
Por isso uso uma query para pesquisa junto com a sua transação, e uma query para edição junto também com outra transação.
Controlo explicitamente as minhas transações. Só uso nas minhas transações readcomitted e sempre utilizo commit ao terminar de gravar um registro. Nunca utilizo TTable. Sempre trabalho com TQuery ou seja, não utilizo tabelas, mas consultas para trabalhar com os dados. Sempre uso nas querys cachedupdates, o que me permite trabalhar como se fosse uma tabela temporária.
Sempre abro os meus forms, com raras exceções, e elas existem, sem mostrar nenhum dado para o cliente. 
Ofereço ao cliente várias opções de pesquisa e ele retorna somente o que precisa.
Sempre utilizo telas separadas para consulta e edição. Os pagecontrols no Delphi são uma maravilha para fazer essa separação de telas.
Essas são algumas dicas que considero importantes.
O Firebird é simples, rápido e não requer quase nenhuma manutenção. Isso é fato. Instalamos o FB e o computador continua o mesmo. O que não acontece com outros bancos. Isso diga quem utiliza SQLServer, Oracle e outros. Após instalar os mesmos, o computador mais parece uma carroça. Com o Firebird é possível instalar e utilizar sem problemas em PCs antigos.
E por isso eu me apaixonei por ele. Guardo tudo que é possível dentro do banco (imagens, documentos, etc.). Em algumas situações, naquelas mais complexas, em tabelas separadas, fazendo os devidos relacionamentos. Como eu amo left join no meu sistema. 
Quando FB passou a suportar consulta em cima de consulta, na linguagem SQL, muitos dos meus problemas terminaram. Isso sem falar nas procedures selecionáveis onde posso trabalhar os dados antes de devolve-los ao cliente.
Essas são algumas dicas com relação a programação e refletem a minha experiência. Sou auto didata e por isso sofro muito para aprender coisas novas. Na grande maioria elas refletem as famosas tentativas e erros. Por isso essa lista e outras das quais faço parte são tão importantes para o meu aprendizado.
Outra dica tem a ver com a parte física do acesso. As pessoas sempre se preocupam com a velocidade de download e esquecem da velocidade de upload. No caso da internet do lado do servidor, o que importa é a velocidade de upload. Já nos clientes é exatamente o contrario.
Quem quer ter um sistema sendo utilizado on-line tem que cuidar muito disso. Nada de 2G, 3G, diga-se, acesso pela rede móvel de telefonia, que em determinados momentos dá um mega e no mesmo segundo quase, da 0 de velocidade. Isso funciona para ver paginas da web, mas não para sistemas feitos para desktop, a não ser que sejam devidamente preparados para resolver esse problema, o que também é possível.
Utilizar também programas como o Zebedee, que faz criptografia e compactação de dados, também ajuda muito. Eu já o utilizei no passado e fazia muita diferença. Eu deixei de utiliza-lo porque o FB melhorou muito desde então.
Espero ter contribuído um pouco com essa comunidade tão bacana que fazem do Firebird a sua ferramenta de trabalho.

Atenciosamente

Jose Aparecido da Silva
Fasystem Assessoria em Informática Ltda

Tel.: +55 41 9602-5604
Tel.: +55 41 3383-8788
Email: jose em fasystem.com.br
 Antes de imprimir pense em sua responsabilidade e compromisso com o meio ambiente.


-----Mensagem original-----
De: lista [mailto:lista-bounces em firebase.com.br] Em nome de W O
Enviada em: sábado, 23 de março de 2013 00:33
Para: FireBase
Assunto: Re: [firebase-br] RES: RES: firebird na internet

Jose Aparecido da Silva (y cualquiera que sepa la respuesta):

¿Cómo haces para que la velocidad en Internet sea aceptable? En mi caso es muy lenta, consultas que en la red local toman 1 ó 2 segundos llegan a 30 segundos cuando se conectan por Internet.

¿Qué se puede hacer para aumentar la velocidad?

Saludos.

Walter.




2013/3/22 Listas <listas em fasystem.com.br>

> Boa Noite a todos.
> Que bom Fausto que tua experiência tem sido diferente.
> Creio que você já passou por várias experiências e já aprendeu a 
> dominar a ferramenta DBX e outros.
> Eu também tenho vontade de dominá-las, estou estudando as mesmas e 
> estou sempre ligado quando vejo os comentários dos casos de sucesso, 
> mas o dia a dia me faz continuar do jeito que está. Demorei muito para chegar até aqui.
> Como eu disse, os filtros aplicados na consulta SQL enviada ao banco, 
> é o grande segredo para uma melhor performance.
> Instalar o Zebedee também ajuda muito. O Zebedee compacta os dados e 
> ainda torna a comunicação segura na internet. Eu o utilizei muito no passado.
> Hoje, depois do FB 2.1, não vi mais necessidade de utilizá-lo. Era um 
> detalhe a mais para cuidar.
> Eu tenho amado trabalhar com o Firebird. Como disse, a minha 
> experiência com o FB tem sido ótima.
> Instalo o FB no servidor, gero os scripts do Banco de Dados e esqueço 
> que o FB existe.
> Tenho clientes com base acima dos 20GB e a performance tem sido ótima 
> na rede interna e aceitável na internet.
> Nada de usar 3G
> Na grande maioria dos meus clientes eu nunca precisei parar o servidor 
> do FB para manutenção. Cuido dos backups e pronto.
> Eu que trabalhava anteriormente com o Paradox, agora estou no paraíso.
> Amo as procedures selecionáveis do FB. Antes tinha que fazer 
> malabarismos para mostrar uma informação nas DBgrids.
> Sempre fico lamentando não ter conhecido o FB antes.
> Essa é a minha experiência.
> E como eu disse: se puder ajudar estamos aí.
>
> Atenciosamente
>
> Jose Aparecido da Silva
> Fasystem Assessoria em Informática Ltda
>
> -----Mensagem original-----
> De: lista [mailto:lista-bounces em firebase.com.br] Em nome de Fausto 
> Alves Enviada em: sexta-feira, 22 de março de 2013 14:57
> Para: lista em firebase.com.br
> Assunto: Re: [firebase-br] RES: firebird na internet
>
> Desculpe mas não faz o menor sentido  quando você diz:
> "O pessoal que tem reclamado é porque usam DBX e costumam trazer tudo 
> para depois fazer os filtros."
> Eu uso DBX (DbExpress), e passo os filtros do lado cliente para o 
> servidor e o firebird é mesmo lento na internet, isto é fato.
> O que fiz, e melhorou muito a performance, foi mudar o estilo de 
> programação, ao invés de Client/Server passe a utilizar Ntier(3 
> camadas),com a suite RemObjects, ai sim muda de figura, o mesmo pode 
> ser feito utilizando o DataSnap do próprio Delphi, que a partir da 
> versão 9 esta muito bom.
> ----------------
> Fausto Alves
> Franca (SP)
>
> Listas formulated on sexta-feira :
> > Boa tarde
> > Eu utilizo delphi7, FB 2.5 com a suite de acesso IBX que acompanha o
> Delphi.
> >
> > Não tenho reclamações.
> > O importante é que o servidor tenha acesso a internet com um bom upload.
> > Qualquer coisa acima de 600k já é suficiente.
> > Lembre-se sempre de só trazer o que for realmente necessário. Nada 
> > de usar select * from TABELA simplesmente por preguiça de digitar o 
> > que realmente necessita.
> > O pessoal que tem reclamado é porque usam DBX e costumam trazer tudo 
> > para depois fazer os filtros.
> > Outros, como é o caso de outro colega, nem utilizaram o mesmo na 
> > internet e mesmo assim repetem o jargão que o FB é lento quando 
> > acessado por meio da internet.
> >
> > Essa é a minha experiência.
> > Se puder ajudar, estamos a disposição.
> >
> > Jose A. Silva
> > Fasystem
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br 
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br 
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista