Wagner, creio que seus programadores estão certos. Se você pode resolver puxando os dados necessários em consulta só, é correto. O que não poderia acontecer é puxar 10.000 registros para no fim exibir apenas 100. Agora, tem que haver coerência na consulta, os joins e groups tem que se beneficiar dos índices, para que não haja uma sobrecarga no servidor. Afinal, a linguagem SQL foi feita pra isso. Agora, quanto a quantidade de conexões, tem que ser fazer uso do pool de conexões, se houver disponibilidade.
De: Wagner Bonfiglio [mailto:[email protected]] Enviada em: segunda-feira, 25 de maio de 2009 12:34 Para: Comunidade PostgreSQL Brasileira Assunto: Re: [pgbr-geral] [Meio-Off] Programação com acesso ao BD Olá André, obrigado pela resposta.. O que parece acontecer é algo do tipo: O usuário faz uma consulta de carros e pede para separar por marca.. A maneira de mostrar eh assim: Fiat + (vc pode abrir e ver os carros da Fiat) - Palio + (pode abrir e ver os Palio's disponíveis) - 2005 preto - 2006 amarelo - 2007 cinza - Uno + - 2003 Azul - 2009 Preto Ford ... ... ... Então, o resultado viria completo, mais ou menos assim: Fiat | Palio | 2005 | Preto Fiat | Palio | 2006 | Amarelo Fiat | Palio | 2007 | Cinza Fiat | Uno | 2003 | Azul Fiat | Uno | 2009 | Preto Ford ... ... ... E no código ele vai tratando no Array... Só que, para montar esse resultado formatado assim, ele usou mais de uma tabela, com joins, group by, etc etc etc A alternativa seria fazer uma consulta para saber as marcas (retornaria Fiat e Ford), depois eu faria outra para retornar os carros daquela marca (pra Fiat retornaria Palio e Uno), e por último eu buscaria quais {Palio's, Uno's} tem no banco, retornando só (2005, Preto), (2006, Amarelo), (2007, Cinza), etc.. Esse foi um exemplo relativamente simples, mas quando temos muitas tabelas, muitas ligações, muitas restrições, eu acho que fazer essas consultas pequenas e mais específicas podem ser mais rápidas no final do que fazer uma consulta só que retorne tudo oragnizado e geral, organizando tudo no código... Eu imagino que cada um tenha o seu ponto do vista mesmo, e também imagino que cada caso é um caso, mas essa questão surgiu durante a modelagem de um novo sistema, e causou uma discordância pois ele queria uma modelagem que permitisse ele a fazer uma consulta grande, enquanto eu preferi por uma modelagem que organizasse melhor os dados mas ficaria muito difícil para ele fazer essa mega-consulta.... Seria interessante se tivesse algum artigo sobre isso, com estudo de caso e tal... Mas não achei nada numa busca rápida :/ 2009/5/25 Andre Fernandes <[email protected]> Bom dia, esse é um assunto realmente complicado, muitas pessoas costumam discutir sobre isso. Se a conexão for permanente (ou seja, entre cada consulta não temos de abrir novas conexões), então realmente pequenas consultas são a melhor opção. Contudo, como é oneroso manter conexões abertas por muito tempo com o banco de dados, normalmente temos um impasse que precisa ser analisado caso a caso, visto que a abertura e fechamento de conexões é algo caro, contudo consultas muito pesadas também o são. Precisas verificar no caso em específico qual é menos caro para a performance do sistema, contudo eu sou adepto de evitar muitas conexões ao banco, principalmente se houver muitos usuário simultâneos previstos. O pensamento de teu programador teve uma falha apenas, a meu ver (isto é uma opnião pessoal, há quem pense diferente): os dados precisam sair do banco de dados já tratados (salvo formatação), para isso temos um banco com tantos recursos como o PostgreSQL. Mas volto a falar, isso é minha opnião, temos outras correntes e pessoas que discordam disso. Espero ter ajudado um pouco, Atenciosamente, 2009/5/25 Wagner Bonfiglio <[email protected]> Olá senhores... Esses dias eu estava conversando com um dos programadores aqui da minha empresa e percebi um hábito que ele tem e que eu não concordei muito, mas fiquei com uma dúvida no ar... (OBS: trata-se de programação WEB) Ele disse que prefere fazer uma consulta mais pesada mas que retorne o máximo de dados possíveis de uma só vez, para que o tratamento seja feito dentro do código e assim evitar o excesso de conexões ao banco... Eu quando era programador preferia fazer várias consultas leves, pensando mais no sentido de evitar que uma consulta exigisse muito do banco de dados... Vocês tem alguma opinião formada sobre isso? Ou melhor, existe alguma verdade absoluta sobre melhor prática nesse sentido? Valeu, Wagner Bonfiglio _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- André de Camargo Fernandes Cel: (11) 7421-1379 yellow belt <http://www.javablackbelt.com/UserView.wwa?userId=10305874> on JavaBlackBelt _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
