É aqui que o encontro das mentes, ou seja, as mentes dos desenvolvedores (DVs) e DBAs, deve inevitavelmente acontecer. Trabalhar com Business Logic (BL) e armazená-lo em um banco de dados pode ter um impacto que pode glorificar ou horrorizar sua implementação.
Para alguns produtos RDBMS, existem bibliotecas / ferramentas / APIs superiores para lógica de negócios e infraestruturas de objetos que se pode aprender e empregar rapidamente em seus aplicativos. Para outros RDBMS, não existem bibliotecas / ferramentas / APIs.
No passado, os aplicativos de servidor do cliente transformavam o BL em procedimentos armazenados (SP). Para produtos como Oracle e SQL Server, isso foi feito mais cedo. Quando surgiram os bancos de dados de código aberto, como PostgreSQL e MySQL, aqueles que os utilizavam corriam o risco de abrir novos caminhos com procedimentos armazenados no BL. O PostgreSQL amadureceu rapidamente, pois não apenas os procedimentos armazenados foram implementados, mas também a capacidade de criar as linguagens dos clientes. O MySQL basicamente parou de evoluir no mundo dos procedimentos armazenados e veio em uma forma simplificada de uma linguagem com muitas restrições. Portanto, quando se trata de BL, você está completamente à mercê do MySQL e da linguagem Stored Procedure.
Resta apenas uma pergunta: independentemente do RDBMS, o BL deve residir no todo ou em parte no banco de dados?
Pense no desenvolvedor. Quando as coisas dão errado em um aplicativo, o processo de depuração fará com que o Desenvolvedor entre e saia de um banco de dados para seguir as alterações de dados que podem ou não estar corretas de forma intermitente. É como codificar um aplicativo C ++ e chamar o código Assembler no meio. Você precisa mudar do código fonte, classes e estruturas para interrupções, registros e compensações E VOLTAR !!! Isso leva a depuração para o mesmo nível.
Os desenvolvedores podem criar um método de alta velocidade de execução de BL em conjunto com configurações de linguagem (sinalizadores de compilador para C ++, configurações diferentes para PHP / Python, etc.) por meio de objetos de negócios que ficam na memória e não em um banco de dados. Alguns tentaram conectar essa ideologia a códigos de execução mais rápidos no banco de dados, escrevendo bibliotecas em que a depuração de Procedimentos armazenados e gatilhos está bem integrada no banco de dados e aparentemente utilizável.
Assim, o desenvolvedor é desafiado a desenvolver, depurar e manter o código-fonte e o BL em dois idiomas.
Agora pense no DBA. O DBA deseja manter o banco de dados enxuto e significar o máximo possível no domínio dos procedimentos armazenados. O DBA pode ver o BL como algo externo ao banco de dados. No entanto, quando o SQL solicita os dados necessários para o BL, o SQL precisa ser enxuto e mesquinho.
Agora, para o encontro das mentes !!!
O desenvolvedor codifica o SP e usa métodos iterativos. O DBA analisa o SP. O DBA determina que uma única instrução SQL pode substituir os métodos iterativos escritos pelo desenvolvedor. O desenvolvedor vê que a instrução SQL sugerida pelo DBA requer a chamada de outro código ou SQL relacionado ao BL que não segue os planos de execução normais da instrução SQL.
À luz disso, a configuração, o ajuste de desempenho e a codificação SP tornam-se uma função da profundidade e intensidade de dados do BL para recuperação de dados. Quanto mais profundidade e intensidade de dados o BL, mais Desenvolvedores e DBA devem estar na mesma página para a quantidade de dados e poder de processamento fornecidos ao Banco de Dados.
CONCLUSÃO
A maneira de recuperação de dados deve sempre envolver os campos Developer e DBA. As concessões sempre devem ser feitas sobre quais métodos de codificação e paradigmas de recuperação de dados podem funcionar juntos, para velocidade e eficiência. Se a preparação dos dados para o código-fonte manipular for feita apenas uma vez antes que o código obtenha os dados, o DBA deverá ditar o uso do SQL lean e médio. Se o BL é algo que o DBA não está em sintonia, as rédeas estão nas mãos do desenvolvedor. É por isso que o DBA deve se ver e fazer parte da equipe do projeto e não uma ilha para si mesmo, enquanto o Desenvolvedor deve permitir que o DBA faça o ajuste fino do SQL, se assim for necessário.