Usando Banco de dados
Uma discussão que sempre tive com vários colegas meus era a questão do uso de banco de dados. Com o avanço cada vez maior das arquiteturas, poder das linguagens e da orientação objeto, em muitos projetos as quais dou consultoria, ou participo, o banco de dados tem um papel secundário de apenas guardar os dados. Muitos pessoas conhecidas diriam que isso é um absurdo: “Ter um sistema como o Oracle e só usá-lo como repositório de dados é insano”, comentário um amigo DBA. Aí que fica um pouco da minha dúvida e reflexão… será que realmente precisamos, dado todo o contexto de tecnologia, etc, de bancos de dados tão “poderosos” e caros como um Oracle por exemplo ?
Seguindo a linha do raciocínio acima, se analisarmos a grande maioria dos sistemas atuais, poucos são aqueles que fazem uso de algum recurso do SGBD… em alguns casos, os arquitetos nem consideram usar procedures, visões, trigger, etc, mesmo isso sendo algo comum a todos os banco de dados existentes, pois no entendimento deles -“Tudo deve ser resolvido no negócio”. O consenso geral é que devemos usar de artificios, recursos, entre outros, para que nossas aplicações sejam independentes, como por exemplo: usar hibernate, padrões como o DAO, etc. Alguns desenvolvedores vão além; ignoram o fato de existirem engines de BD que suportam acessos simultaneos, alta disponibilidade, e outros recursos, e literalmente solucionam isso por na arquitetura usando caches (primarios, secundarios, etc), controlando o acesso aos dados por meio de flags no codigo, e por ai vão.
Por mais que não ache que essas pessoas estejam erradas ou que estejam cometendo exageros ou absurdos, prefiro sempre o caminho do meio : quero o melhor de todos os mundos. Se o meu cliente me disponibiliza um banco de dados oracle, não especifica que o sistema deva ser capaz de executar em qualque SGBD, eu com certeza irei aproveitar tudo que estiver ao meu alcance. Por que não usar uma trigger para gerar log de insert, ou qualquer outra alteração de dados; por que não escrever uma procedure para tarefas de gerar dados de tabelas para relatório, etc…
Nessa mesma linha podemos considerar que no caso de sua aplicação não precisar de essa sorte de recursos não existe a necessidade de gastar milhões com licenças de um sgbd que será utilizado apenas 1% de sua capacidade disponível. Nesses casos um engine simples, até mesmo gratuito pode ser a melhor opção. A questão é que devemos ter sempre bom senso e sabermos avaliar bem as nossas reais necessidades. Banco de dados são peças importantes ao ponto de não podermos ignorá-las e por isso devemos escolhe-las com muito carinho considerando oque desejamos delas em capacidade e recurso.