IGTI Blog
banco de dados

Avaliação de desempenho dos sistemas de banco de dados

A nova realidade trazida pelo uso de computação em nuvem e inteligência artificial.

Ao longo dos anos, os analistas de banco de dados foram constantemente cobrados pelo adequado desempenho das bases por eles concebidas e administradas. Uma atividade que, via de regra, sempre exigiu um conhecimento multidisciplinar e atuação em diferentes níveis da arquitetura computacional. Contudo, algumas mudanças de tecnologia da informação nos ambientes corporativos, sobretudo a adoção de computação em nuvem e inteligência artificial embarcada nos gerenciadores de banco de dados, trazem significativas mudanças nesse cenário. O que, em meio a uma grande quantidade de sistemas relacionais e não relacionais disponíveis no mercado, acaba demandando uma adequação do trabalho desses profissionais.

Dentre uma série de definições para o termo desempenho, performance no inglês, é possível destacar o que traz o dicionário Michaelis:

Conjunto de características que permitem determinar o grau de eficiência e as possibilidades de operação de determinado veículo, motor, máquina etc.”

Apesar de genérica, tal definição parece bastante adequada também quando o assunto é tecnologia da informação. Nesse contexto, pode-se entender desempenho como sendo o grau de eficiência com que um ambiente computacional é capaz de responder durante o seu processamento.

Daí surge a avaliação de desempenho que, baseada em técnicas de modelagem, simulação e/ou medição, busca mensurar, dentre outras métricas, o tempo de resposta, a taxa de vazão e a utilização de recursos de um sistema. Possibilitando, dessa forma, a identificação de pontos de contenção (gargalos), a determinação da configuração ótima dos parâmetros, além do planejamento de capacidade e previsão frente ao crescimento da carga de trabalho. Tudo isso, fazendo com que as organizações sejam capazes de ajustar, conceber ou adquirir soluções adequadas dentro de suas necessidades e restrições orçamentárias.

No que diz respeito aos bancos de dados, sobretudo aqueles em uso nos ambientes de produção, o processo de resolução de problemas de desempenho, também chamado performance troubleshooting, envolve, muitas vezes, a identificação dos gargalos (bottlenecks) seguida dos ajustes (tuning) necessários para o contorno da situação. Ocorre que tais ajustes podem exigir alterações em diferentes pontos do ambiente, tais como hardware, sistema operacional, gerenciador de banco de dados, modelo de dados, código SQL e mesmo aplicação. O que, ao longo dos anos, exigiu dos analistas um profundo conhecimento das variadas tecnologias envolvidas.

Leia também: 5 motivos para você aprender SQL

Mas, as recentes evoluções dos ambientes computacionais têm trazido importantes mudanças nesse cenário, impactando diretamente na forma com que os analistas precisam lidar com as questões de desempenho. Assim, a crescente adoção de computação em nuvem (cloud computing), a gradativa inclusão de automatizações nesses bancos, muitas vezes suportada por mecanismos de inteligência artificial, e o número cada vez maior de bancos de dados relacionais e não relacionais disponíveis no mercado, vêm alterando significativamente o dia-a-dia daqueles que precisam pensar e responder pelo desempenho geral dos sistemas de banco de dados.

De forma gradual, os ambientes completamente hospedados em instalações próprias e gerenciados primariamente por equipes internas, comumente chamados on premises, vão cedendo lugar à adoção de infraestrutura, plataforma e mesmo software entregues como serviços: IaaS, PaaS e SaaS, respectivamente. E, essa realidade, vem ocorrendo inclusive com os bancos de dados trazendo, consigo, várias vantagens para o negócio e facilidades para a TI. Mas, ao mesmo tempo, exigindo mudanças na forma de operar e, por consequência, na maneira de realizar avaliações de desempenho. Assim, ao contratar-se um banco de dados em um ambiente IaaS, é preciso compreender que não estarão mais totalmente sob controle ou mesmo análise de parâmetros referentes à rede, armazenamento, servidores e virtualização.

Se a opção for por PaaS, nem mesmo o sistema operacional e vários dos parâmetros do sistema gerenciador de banco de dados estarão acessíveis. Por fim, ao se falar de SaaS, possivelmente apenas os modelos de dados com suas estruturas e os códigos SQL poderão, de alguma forma, serem avaliados e ajustados em caso de problemas de desempenho.

Vale ressaltar ainda que os fabricantes de banco de dados vêm, ao longo dos anos, aprimorando os mecanismos de automatização de ajustes de desempenho de seus produtos. O que, obviamente, traz enormes benefícios ao facilitar a atuação dos analistas envolvidos. Mais recentemente, isso tem se intensificado na medida em que a evolução de mecanismos de inteligência artificial possibilitou embarcar soluções dessa natureza nos bancos de dados, permitindo que muitas avaliações e consequentes ajustes sejam concretizados com mínima ou nenhuma intervenção humana. Mesmo os fabricantes que sempre procuraram munir os profissionais de banco de dados com uma série de parâmetros e configurações altamente ajustáveis, tem demonstrado uma forte tendência a entregarem bases cada vez mais autônomas, inclusive no que diz respeito ao desempenho.

Além disso, é preciso destacar que, para se realizar uma adequada avaliação de desempenho de um ambiente de banco de dados, é importante conhecer as características da tecnologia envolvida e os detalhes referentes a cada uma de suas distribuições. Diante disso, a situação atual parece um pouco mais complicada ao considerar-se que, além de bancos relacionais, observa-se forte crescimento na adoção de tecnologias não relacionais. E cada uma dessas vertentes, que acabam sendo muitas vezes complementares, contam com grande número de fabricantes e versões disponíveis no mercado. Em se tratando de bancos relacionais, há mais de cem opções diferentes e, para não relacionais, é possível destacar mais de sessenta opções. Ainda que se tome o cuidado de considerar-se apenas os principais fabricantes, é possível que um analista se veja envolvido com mais que dez sistemas distintos, o que pode trazer enormes dificuldades, já que uma boa avaliação de desempenho exige, na grande maioria das vezes, conhecimento profundo da arquitetura do sistema de banco de dados sob análise.

Portanto, diante de tudo isso, é preciso que os profissionais de banco de dados estejam atentos e possam adequar suas atuações em cenários de avaliação e ajuste de desempenho. Primeiramente entendendo até que ponto é possível atuar dentro dos ambientes de IaaS, PaaS e SaaS atualmente disponíveis. Além disso, atentando-se para os possíveis benefícios de deixar a cargo do próprio sistema gerenciador de banco de dados boa parte das tarefas rotineiras possíveis de serem automatizadas. Por fim, buscando expandir os conhecimentos sobre as tecnologias disponíveis no mercado e, sempre que necessário, aprofundando-se naquelas que estiverem em uso.

Então, de certa forma, tudo isso pode evidenciar que, ao longo dos próximos anos, ações de desempenho focadas em modelagem, incluindo-se aí todas as estruturas de dados, normalização e indexação, além de boas práticas de codificação SQL, possam ser ainda mais valorizadas enquanto profundos conhecimentos de hardware, sistemas operacionais, parametrizações dos sistemas de banco de dados e ações rotineiras de manutenção a ajustes, apesar de inegavelmente importantes, passem a ser cada vez mais restritos e, por isso mesmo, menos demandados das equipes responsáveis pela avaliação de desempenho de banco de dados.

Professor autor: Marcílio Júnior de Andrade