Recursos de soma de verificação do banco de dados - redundantes? útil?

2

Quase todos os principais bancos de dados têm um recurso para calcular as somas de verificação por página, por setor ou por registro.

Agora, para um banco de dados que recupera completamente após qualquer falha, como o PostgreSQL, a soma de verificação é útil? Não haverá perda de dados, contanto que o xlog esteja ok, não importa o tipo de corrupção ocorrida nos dados em si, pois o redo log é repetido a cada transação confirmada será restaurada. Portanto, as somas de verificação são inúteis na restauração.

O sistema de arquivos ou disco não mantém as somas de verificação de qualquer maneira para detectar a corrupção? Então, a menos que a soma de verificação seja por registro, tudo o que ele faz é dizer que há corrupção - que o sistema operacional deveria estar gritando com você no minuto em que você tentar lê-lo - tão inútil na operação?

Não consigo imaginar como uma soma de verificação pode ser útil em qualquer banco de dados sã - mas, como todos os usam, diria que é apenas falta de imaginação de minha parte. Então, como isso é útil?

    
por Eloff 05.01.2010 / 06:21

3 respostas

4

Os checksums são importantes e úteis por vários motivos. Provavelmente o mais alto inclui:

  • Verificando se os bancos de dados replicados / em cluster estão sincronizados
  • Verificando se os dados foram restaurados corretamente do backup
  • Garantindo que os processos de recuperação não falharam ou atingiram um bug
  • Verificando a integridade do banco de dados (por exemplo, para ver se alguém tocou com o arquivo quando você não estava procurando)
por 05.01.2010 / 08:14
3

O fato é que apenas uma fração dos sistemas de arquivos populares carregam somas de verificação do conteúdo real dos arquivos [artigo da wikipedia] . Quanto aos discos rígidos, suas métricas de durabilidade nunca atingiram as capacidades crescentes, portanto, com dados e / ou taxa de transferência suficientes, você tem a garantia de receber erros não detectados de vez em quando [pesquisa do CERN] . Ou seja, a menos que você tenha checksums suficientes para detectá-los, o que, nesse ponto, exige a verificação no nível do aplicativo.

    
por 02.04.2011 / 08:12
2

Como a maioria dos sistemas de arquivos não mantém as somas de verificação (a exceção notável é o ZFS), uma soma de verificação no banco de dados ainda seria útil.

No PostgreSQL, os registros do WAL são soma de verificação, mas não as páginas de dados, portanto você não poderá detectar se o sistema operacional ou o hardware fragmentou seus dados. A implementação de uma soma de verificação para páginas de dados é um recurso planejado no PostgreSQL, mas há alguns problemas muito difíceis com a implementação se a simultaneidade for mantida. Procure por "postgresql block level crc" ou algo assim para saber mais (ou ficar totalmente confuso).

    
por 02.04.2011 / 09:41