A partir deste post procuraremos detalhar um pouco mais o funcionamento do arquivo primário de recuperação do banco(BI). Para isto alguns conceitos serão explicados rapidamente.
Primeiramente deve ser dito que o gerenciador Progress utiliza a gravação no arquivo de before image (BI) para garantir confiabilidade e alta performance.
► Falando de transações
O conceito de transação é de importância central para o gerenciador de banco de dados.
Transações são um mecanismo de “manipulação de erros”. Caso um erro ocorra antes de o trabalho estar concluído, o gerenciador do banco automaticamente descartará qualquer trabalho não concluído que não possa ser finalizado. Transações tem 4 propriedades básicas(ACID): atomicidade, consistência, isolamento e durabilidade.
- Atomicidade:
Todas as tarefas necessárias para cumprir uma operação deverão ser efetuadas como uma unidade, ou seja, caso alguma tarefa não seja concluída considera-se que toda a operação deverá ser desfeita.
- Consistência:
Transações transformam o banco de dados de um estado consitente em outro.
- Isolamento:
Significa que transações concorrentes não são visíveis entre si. As alterações não se tornam permanentes até que a transação encerra com sucesso.
- Durabilidade:
Quando uma transação é concluída com sucesso seus efeitos sobre o banco são permanentes, não serão desfeitas mesmo que o banco sofra uma falha.
► Gerando log
Atomicidade e durabilidade são propriedades providas pela técnica de “undo-redo logging” combinada com “write-ahead logging”.
Á medida que alterações no banco são executadas, anotações delas são gravadas de maneira permanente num arquivo sequencial de log. As anotações feitas no arquivo de log podem ser utilizadas para desfazer uma transação caso ocorra um erro. A transação é desfeita, anotação por anotação, para restaurar o banco a um estado consistente.
Adicionalmente, a utilização de “undo-redo logging” permite ao gerenciador do banco armazenar em memória, por longo tempo, as alterações do banco, de maneira que as gravações no banco aconteçam quando for mais conveniente. Alterações feitas nos dados do banco não precisam ser gravadas no arquivo do banco em disco quando a transação é concluída: isto é conhecido como “deferred writes”. Esta característica permite melhor performance, e otimização das operações de escrita em disco.
No próximo post serão focadas as técnicas de “undo-redo logging” e “write-ahead logging”.