Skip to content

Latest commit

 

History

History
95 lines (53 loc) · 3.76 KB

README.md

File metadata and controls

95 lines (53 loc) · 3.76 KB

Implementação do mecanismo de Log REDO com checkpoint usando PostgreSQL em Python

Implementado por: Andrew Gabriel e Igor Radkte


Conteúdo:

  1. Funções Implementadas
  2. Como testar/executar ?
  3. Como funciona o mecanismo de Log REDO ?
  4. Requisitos

Funções Implementadas:

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

Como testar/executar:

  • 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> 
      

Funcionamento:

  • 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.

Requisitos do trabalho acadêmico:

  • Funções a serem implementadas:

    1. Carregar o banco de dados com a tabela antes de executar o código do log (para zerar as configurações e dados parciais);

    2. Carregar o arquivo de log;

    3. Verifique quais transações devem realizar REDO. Imprimir o nome das transações que irão sofrer Redo. Observem a questão do checkpoint;

    4. Checar quais valores estão salvos nas tabelas (com o select) e atualizar valores inconsistentes (update);

    5. Reportar quais dados foram atualizados;

    6. Seguir o fluxo de execução conforme o método de REDO, conforme visto em aula;

  • Execução:

    1. Pode ser implementado em duplas;

    2. A nota será individual;

    3. 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;

    4. Será testado com outro arquivo de log a execução do programa;