Técnicas, atividades ou recomendações do que a experiência leva a crer ser o mais efetivo de ser praticado no PostgreSQL. São recomendações para a Linguagem de Definição de Dados (DDL), técnicas para otimizar as consultas e orientações para criar aplicações menos vulneráveis.
Para que serve:
Oferecer um conjunto de boas práticas que, se forem seguidas, podem produzir consultas melhor estruturadas e bancos de dados bem planejados. Além desses objetivos, algumas recomendações tornam o trabalho do desenvolvedor mais efetivo e levam a sistemas mais seguros, menos sujeitos a uso mal intencionado.
Em que situação o tema é útil:
As boas práticas sugeridas começam a surtir efeito à medida que o sistema vai sendo utilizado e as tabelas vão sendo povoadas. Com o passar do tempo, o banco de dados tende a exigir mais processamento, mais memória, gerar gargalos na rede e degradar o desempenho se medidas de otimização não forem tomadas desde o início do desenvolvimento do sistema.
Boas práticas com PostgreSQL e Java:
É comum nos depararmos com aplicações sem preocupação com a normalização, criadas por desenvolvedores que desconhecem os fundamentos de banco de dados. Essa falta de conhecimento leva a criação de código sem eficiência, com baixo desempenho e o que é pior, sem o mínimo de segurança. Este artigo apresenta algumas recomendações para criarmos aplicações mais eficientes e mais seguras usando o PostgreSQL. O conhecimento do funcionamento do PG é fundamental para a implementação das boas práticas. Alguns exemplos em Java são usados para mostrar na prática as recomendações sugeridas e apresentar também a união bem sucedida das duas ferramentas.
As operações de banco de dados podem se tornar o principal gargalo em aplicações stand alone ou web. E é papel do desenvolvedor também se preocupar com as questões de segurança e desempenho no acesso aos dados, não deixando que tudo fique sob a responsabilidade do Administrador de Banco de Dados (DBA). Os programadores devem fazer a sua parte, criando tabelas estruturadas adequadamente e escrevendo código e consultas otimizadas. Neste artigo serão abordadas algumas orientações neste aspecto, direcionadas aos desenvolvedores e DBAs.
Boas práticas é uma expressão traduzida do inglês best practices, usada para denominar técnicas, métodos, processos, atividades ou recomendações do que se acredita ser mais efetivo para realizar determinada tarefa. No entanto, segundo o BusinessDictionary.com, não existe boa prática que seja boa para todas as pessoas e em qualquer situação, e nenhuma boa prática permanece por muito tempo sendo a melhor, visto que as pessoas continuam procurando maneiras cada vez melhores de fazer as coisas.
Devido à popularização da expressão, as pessoas às vezes a usam para se referir a regras. E como vimos anteriormente na definição, pode-se afirmar que boas práticas são sugestões feitas por pessoas que experimentaram tais técnicas e obtiveram resultado satisfatório. Portanto, não tome as orientações expostas no texto como sendo definitivas e infalíveis. Use as recomendações como ponto de partida, principalmente se você tiver pouca experiência com o PostgreSQL (PG). À medida que você se tornar mais fluente na utilização do Sistema Gerenciador de Banco de Dados (SGBD) faça novos testes até encontrar soluções adequadas às suas necessidades.
O PostgreSQL na prática
PostgreSQL é um Sistema Gerenciador de Banco de Dados Objeto-Relacional (SGBDOR) baseado no Postgres 4.2, desenvolvido pelo Departamento de Ciência da Computação da Universidade da Califórnia, em Berkeley. O PostgreSQL é disponibilizado sob licença open source liberal: você tem a liberdade de usar, modificar e distribuir o PG em qualquer forma que você preferir, código aberto ou fechado. Além desta, muitas vantagens são relacionadas tanto no site do SGBD quanto por usuários satisfeitos, mas sua utilização na prática requer algumas informações que não são facilmente encontradas.
No site do PostgreSQL podemos encontrar a sua documentação oficial. Na versão 9.0 beta, o documento em PDF possui 2.261 páginas. Tem informações para usuários iniciantes, intermediários e avançados. No entanto, podemos afirmar que a documentação é mais uma referência sobre o que fazer, mas quase nada sobre como fazer. Tanto que, se fizermos uma busca pela expressão best practice no texto, encontraremos apenas duas ocorrências. Para escrever este artigo usamos informações coletadas na web, cujas recomendações foram devidamente testadas usando código em Java, além de resultados da experiência do autor.
Craig S. Mullins, consultor, pesquisador e estrategista em gerenciamento de dados, com mais de 20 anos de experiência em desenvolvimento de sistemas de bancos de dados, afirma em [4] que cerca de 80% dos problemas de desempenho em bancos de dados são provocados por código SQL mal elaborados e não otimizados.
Mullins declara também que o maior potencial de aumento de desempenho de um SGBD vem da análise de código SQL, que leve à implementação de mudanças que melhorem a velocidade e a eficiência. Vejamos então a seguir algumas práticas que podem nos ajudar a criar aplicações, não apenas com melhor desempenho, mas também que primem pela segurança. Além disso, daremos outras dicas para tornar seu trabalho de desenvolvimento mais eficiente.
Normalize o banco de dados
Esta é uma boa prática aplicável a qualquer SGBD. A modelagem de dados está no início do processo de desenvolvimento e tudo a seguir depende dela. Existem maneiras diferentes de modelar os mesmos requisitos, e cada uma delas possui vantagens e desvantagens. Mas, ainda que a modelagem seja uma tarefa subjetiva, tornando difícil dizer que um modelo é mais vantajoso que outro, existem regras básicas que podem conduzir a modelos mais flexíveis, que podem suportar necessidades futuras, principalmente no que se refere ao crescimento das estruturas de dados.
Normalização é o processo de dividir as entidades do modelo conceitual em múltiplas tabelas físicas e é uma das atividades da criação do modelo lógico. As metas a se atingir por meio da normalização são:
• Eliminar a redundância de dados;
• Aplicar dependências válidas;
• Maximizar a flexibilidade do sistema para o crescimento futuro das estruturas de dados.
...