Persistência (ciência da computação) - Persistence (computer science)

Na ciência da computação , persistência se refere à característica de estado de um sistema que sobrevive (persiste mais do que) o processo que o criou. Isso é obtido na prática, armazenando o estado como dados no armazenamento de dados do computador . Os programas devem transferir dados de e para dispositivos de armazenamento e fornecer mapeamentos das estruturas de dados da linguagem de programação nativa para as estruturas de dados do dispositivo de armazenamento.

Programas de edição de imagens ou processadores de texto , por exemplo, conseguem persistência de estado salvando seus documentos em arquivos .

Persistência ortogonal ou transparente

A persistência é considerada " ortogonal " ou "transparente" quando é implementada como uma propriedade intrínseca do ambiente de execução de um programa. Um ambiente de persistência ortogonal não requer nenhuma ação específica dos programas em execução para recuperar ou salvar seu estado .

A persistência não ortogonal requer que os dados sejam gravados e lidos de e para o armazenamento usando instruções específicas em um programa, resultando no uso de persist como um verbo transitivo: Na conclusão, o programa persiste os dados .

A vantagem dos ambientes de persistência ortogonal são os programas mais simples e menos sujeitos a erros.

O termo "persistente" foi introduzido pela primeira vez por Atkinson e Morrison no sentido de persistência ortogonal: eles usaram um adjetivo em vez de um verbo para enfatizar a persistência como uma propriedade dos dados, distinta de uma ação imperativa executada por um programa. O uso do verbo transitivo "persistir" (que descreve uma ação realizada por um programa) é uma formação reversa.

Adoção

A persistência ortogonal é amplamente adotada em sistemas operacionais para hibernação e em sistemas de virtualização de plataforma , como VMware e VirtualBox para salvar o estado.

Linguagens de protótipo de pesquisa, como PS-algol , Napier88 , Fibonacci e pJama, demonstraram com sucesso os conceitos junto com as vantagens para os programadores.

Técnicas de persistência

Imagens do sistema

Usar imagens do sistema é a estratégia de persistência mais simples. A hibernação do notebook é um exemplo de persistência ortogonal usando uma imagem do sistema porque não requer nenhuma ação dos programas em execução na máquina. Um exemplo de persistência não ortogonal usando uma imagem do sistema é um programa de edição de texto simples que executa instruções específicas para salvar um documento inteiro em um arquivo.

Deficiências : Requer RAM suficiente para manter todo o estado do sistema. As alterações de estado feitas em um sistema depois que sua última imagem foi salva são perdidas no caso de falha ou desligamento do sistema. Salvar uma imagem para cada alteração consumiria muito tempo para a maioria dos sistemas, portanto, as imagens não são usadas como a única técnica de persistência para sistemas críticos.

Diários

Usar diários é a segunda técnica de persistência mais simples. O registro no diário é o processo de armazenar eventos em um log antes que cada um seja aplicado a um sistema. Esses registros são chamados de diários.

Na inicialização, o diário é lido e cada evento é reaplicado ao sistema, evitando a perda de dados em caso de falha ou desligamento do sistema.

Todo o histórico de "Desfazer / Refazer" dos comandos do usuário em um programa de edição de imagem, por exemplo, quando gravado em um arquivo, constitui um diário capaz de recuperar o estado de uma imagem editada a qualquer momento.

Os diários são usados ​​por sistemas de arquivos com diário , sistemas predominantes e sistemas de gerenciamento de banco de dados, onde também são chamados de "logs de transações" ou "logs de redo".

Deficiências : Quando os diários são usados ​​exclusivamente, todo o histórico (potencialmente grande) de todos os eventos do sistema deve ser reaplicado a cada inicialização do sistema. Como resultado, os diários são frequentemente combinados com outras técnicas de persistência.

Gravações sujas

Essa técnica é a gravação no armazenamento apenas das partes do estado do sistema que foram modificadas (estão sujas) desde sua última gravação. Aplicativos sofisticados de edição de documentos, por exemplo, usarão gravações sujas para salvar apenas as partes de um documento que foram realmente alteradas desde o último salvamento.

Deficiências: Esta técnica requer que as mudanças de estado sejam interceptadas dentro de um programa. Isso é obtido de forma não transparente, exigindo chamadas API de armazenamento específicas, ou de forma transparente, com transformação automática do programa . Isso resulta em um código mais lento do que o código nativo e mais complicado de depurar.

Camadas de persistência

Qualquer camada de software que torna mais fácil para um programa persistir em seu estado é genericamente chamada de camada de persistência. A maioria das camadas de persistência não alcançará a persistência diretamente, mas usará um sistema de gerenciamento de banco de dados subjacente .

Prevalência do sistema

A prevalência do sistema é uma técnica que combina imagens do sistema e diários de transações, mencionados acima, para superar suas limitações.

Deficiências: um sistema predominante deve ter RAM suficiente para manter todo o estado do sistema.

Sistemas de gerenciamento de banco de dados (DBMSs)

Os SGBDs usam uma combinação de gravações sujas e técnicas de registro de transações mencionadas acima. Eles fornecem não apenas persistência, mas também outros serviços, como consultas, auditoria e controle de acesso.

Sistemas operacionais persistentes

Os sistemas operacionais persistentes são sistemas operacionais que permanecem persistentes mesmo após um travamento ou desligamento inesperado. Os sistemas operacionais que empregam essa capacidade incluem

Veja também

Referências

  1. ^ a b Atkinson, MP ; Bailey, PJ; Chisholm, KJ; Cockshott, WP ; Morrison, R. (1983). "PS-algol: uma linguagem para programação persistente" (pdf) . Proceedings 10th Australian National Computer Conference . 10ª Conferência Nacional de Computação da Austrália. Melbourne, Austrália. p. 70–79.
  2. ^ Balzer, Stephanie (17 de novembro de 2005). "Programação de objeto persistente contratado" (PDF) . University of Glasgow - School of CS - Research . ETH Zürich. Arquivado do original (PDF) em 31 de dezembro de 2006 . Recuperado em 21 de setembro de 2015 .