Lugar de SQL é no servidor

Eu não sou muito rigoroso com relação a arquitetura 3-camadas desde que todo o SQL fique exclusivamente no servidor de aplicação e nada mais que a interface de usuário fique na camada cliente. :-)

Não faz nenhum sentido desenvolver um sistema multicamadas com código SQL no lado cliente - embora cada dia conheça mais desenvolvedores ou empresas que insistem em fazer exatamente isso. Ou há uma divisão de responsabilidades entre as camadas, ou simplesmente não existem camadas.

Uma servidor de aplicação com um único TDataSetProvider genérico não passa de um gateway para o banco de dados. É um middleware de conectividade, não de acesso a dados. O grande benefício do DataSnap é a abstração de acesso a dados que proporciona à aplicação cliente. Para mim, é a sua razão de existir.

Recentemente eu fiz uma alteração em uma aplicação que realiza milhares de vezes por dia uma consulta rápida dada a chave primária de uma tabela como parâmetro. Com o tempo essa consulta foi ficando mais e mais complexa, com diversos JOINs, e decidi transformar a query dinâmica em uma stored procedure. Apenas alterei o componente TADOQuery para um TADOStoredProc e conectei o TDataSetProvider diretamente a stored procedure. O formato dos parâmetros não foi alterado, portanto a aplicação cliente manteve-se intacta. Nem tomou conhecimento da alteração, só do ganho de performance.

Artigo publicado originalmente em 26/07/2006.

Comments

3 Responses to “Lugar de SQL é no servidor”

  1. Adriano Santos® on August 3rd, 2006 8:11 am

    Muito boa sua explanação sobre o assunto Daniel. Na minha idéia de desenvolvedor penso da mesma forma. A única providência que tomo muito cuidado é quanto a programação no banco, storedproc por exemplo eu não adoto devido ao fato de trabalhar com mais de um bd no meu software. As incompatibilidades de comandos sql me incomodam e prefiro fazer algo o mais genérico possível evitando crashs no programa devido a um ou outro comando sql que não existe no banco atual. É isso ai.

  2. Queries dinâmicas no servidor DataSnap : Malta on Delphi on May 12th, 2008 5:44 pm

    [...] eu digo que lugar de SQL é no servidor é porque vejo muitos programadores Delphi usando DataSnap como um simples middleware de [...]

  3. DataSnap com Stored Procedures (1/3) : Malta on Delphi on May 31st, 2008 10:05 am

    [...] SP não fere nenhum princípio de desenvolvimento multicamadas. De fato, o SQL fica no servidor, não no cliente. Tem gente que prefere não ter nenhuma lógica no banco de dados e tratá-lo como [...]

Deixe uma Resposta




XHTML: Você pode usar essas tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="">