quarta-feira, 5 de setembro de 2018

Entenda o funcionamento das transações do Entity File Manager

Entity file manager é um recurso que permite persistir entidades em arquivos estruturados. Ele foi desenvolvido com a finalidade de dar suporte à persistência de dados no BRCache.

Transações


Uma transação é uma coleção de operações que desempenha uma função lógica única. Ela tem que ter as seguintes propriedades:

  • atomicidade: todas as operações contidas na transação são tratadas como uma única unidade. Todas as operações são feitas ou nada é feito.
  • consistência: uma transação concluída deixa o sistema em um estado interno consistente.
  • isolamento: em um ambiente de múltiplas transações, uma não interfere na outra.
  • durabilidade: os resultados das transações são armazenadas permanentemente no sistema.

O entity file Manager permite que transações confirmadas possam ser efetivadas em paralelo com transações em execução. Também favorece a redução das operações de I/O, pois ele permite atualizações em lote. Todas as operações de inserção e atualização são executadas em um arquivo temporário num primeiro momento e depois em segundo plano no arquivo original.

Insert/Update


As transações confirmadas são gravadas no arquivo recoverylogX e os dados das entidades também são gravadas no arquivo temporário. Elas são inseridas sempre no final do arquivo. Este método reduz o I/O em updates, pois toda atualização também é uma inserção e pode ser feito em lote. No momento em que não existir nenhum transação sendo processada, o arquivo temporário é sincronizado com o arquivo original.


Select


Quando um arquivo está envolvido em uma transação, a pesquisa sempre ocorre primeiro no arquivo temporário e depois no arquivo original. A pesquisa ocorre sempre primeiro no arquivo temporário, porque nele ficam armazenadas as alterações feitas pelas transações anteriores depois da última sincronização com o arquivo original.


Efetivando as transações


Quando o arquivo recoverylogX atinge o seu tamanho máximo, ele é fechado e enviado para um processo paralelo que aplica as alterações no arquivo original. O arquivo temporário é sincronizado com o arquivo original somente quando não houver transações ativas.


Nenhum comentário:

Postar um comentário