Implementado por: Andrew Gabriel e Igor Radkte
conectandoBanco()
: : = Faz a conexão entre a aplicação e o banco de dados.
executa_db()
: : = Efetua um comando SQL com tratamento de erro.
insereBanco()
: : = Insere o valor passado pelos parâmetros no banco de dados
openFile()
: : = Abre o arquivo que foi passado por parâmetro
printFile()
: : = Faz a impressão linha a linha de um vetor/file/lista
getParam()
: : = Retorna o parâmetro que foi passado na execução da aplicação no terminal
getData()
: : = Pega os dados presentes no arquivo de entrada e o passa para um vetor de dados
getInfoInit()
: : = Separa do vetor de dados as informações que serão utilizadas na hora de inicializar a tabela
getRedoinfos()
: : = Separa do vetor de dados as informações que serão utilizadas na hora de executar o REDO
getLinha()
: : = Verifica se existe um objeto dado ID por parâmetro
parserInfoInit()
: : = Parseamento das informações iniciais para preencher a tabela
initTable()
: : = Faz a inicialização da tabela - percorre vetor e insere no banco
createTable()
: : = Cria a tabela log
-
Requisitos:
- Python 3.7
- PostgreSQL
-
Como executar:
-
Você deve ter em um diretório o arquivo da aplicação e o arquivo de entrada.
-
Antes de executar a aplicação, você deve deve configurar o banco de dados, com nome do banco, usuário, senha e host. Estas alterações devem ser feitas diretamente no código a partir da linha 27.
-
Execute o arquivo da aplicação no terminal da seguinte maneira:
python3 log-redo.py <arquivo_de_entrada.txt>
-
- Descrição do mecanismo de Log REDO:
- Este modelo de log recovery percorre o arquivo de Log em busca de commits e checkpoints, quando um commit de uma transação é encontrado deve se refazer as operações que a transação efetuou. As transações commitadas antes de um Checkpoint não necessitam ser refeitas pois o Checkpoint garante que as informações que foram alteradas e/ou atualizadas estão presentes no disco.
-
Funções a serem implementadas:
-
Carregar o banco de dados com a tabela antes de executar o código do log (para zerar as configurações e dados parciais);
-
Carregar o arquivo de log;
-
Verifique quais transações devem realizar REDO. Imprimir o nome das transações que irão sofrer Redo. Observem a questão do checkpoint;
-
Checar quais valores estão salvos nas tabelas (com o select) e atualizar valores inconsistentes (update);
-
Reportar quais dados foram atualizados;
-
Seguir o fluxo de execução conforme o método de REDO, conforme visto em aula;
-
-
Execução:
-
Pode ser implementado em duplas;
-
A nota será individual;
-
Deve ser enviado o repositório no GIT (será avaliado a participação dos membros através dos commits). Um único commit com o código pronto será entendido como uma cópia e receberá nota zero. Os commits irão interferir na nota final dos membros da dupla;
-
Será testado com outro arquivo de log a execução do programa;
-