Impacto da evolução de esquema de banco de dados na disponibilidade de software - Silva, Willie Lawrence da Paz (2023)
Ao longo da vida de um software que utiliza um banco de dados relacional para armazenarinformações, observamos que a evolução natural da aplicação leva à alterações no esquemado banco de dados, que é a estrutura que define como as informações são armazenadas.Durante a execução das operações que são responsáveis por alterar o esquema do banco dedados podem ocorrer interrupções no acesso aos dados armazenados no banco de dados,fazendo com que uma aplicação em execução que depende desses dados fique inoperante atéque a operação de atualização do esquema seja finalizada. Nós chamamos essas operaçõesde atualização do esquema que causam interrupção no acesso aos dados de “operaçõesbloqueantes”. As operações bloqueantes são um problema particularmente em sistemasque não podem ser interrompidos, como é o caso de sistemas de monitoramento, sistemasde venda com alto volume de tráfego, aplicações governamentais etc. Nesse trabalho nósestudamos a evolução do esquema do banco de dados de uma aplicação do mundo real paraentender a natureza das operações de alteração de esquema e prever o impacto delas nadisponibilidade do software. Além disso, realizamos uma série de experimentos controladoscom o objetivo de analisar o impacto das operações bloqueantes na disponibilidade de umaaplicação em uso no momento da evolução do esquema. Por fim, nosso trabalho implementaalgumas soluções, sugeridas pelos praticantes da indústria, para resolver o problema dedisponibilidade dos dados durante a evolução do esquema. Assim, os mesmos conjuntos deexperimentos realizados foram repetidos num novo cenário onde as sugestões da indústriaforam implementadas. Nossos resultados mostram que as sugestões dos praticantes daindústria são eficientes até um determinado limite, de tal maneira que bancos de dadoscom um número muito grande de registros podem sentir uma diminuição considerável notempo de indisponibilidade do banco de dados, porém não o suficiente para o usuário finalde uma aplicação.