É possível que apenas um bit mude para que meu arquivo mostre uma letra “Q” em vez de um “S”

22

Em nosso aplicativo, usamos o Hibernate e o PostgreSQL para armazenar dados. Em uma de nossas tabelas de banco de dados, temos uma coluna discriminadora que diz, por exemplo, "TIPPSPIEL". É uma string fixa e não pode ser manipulada por nenhum usuário.

De repente, tivemos uma entrada nesta enorme mesa onde tínhamos "TIPPQPIEL" em vez de "TIPPSPIEL". Não temos ideia de como isso pode acontecer.

É possível por qualquer meio que nosso disco rígido esteja trocando um bit, então nossa letra "S" não é mais codificada como "1010001" mas de repente se torna um "Q" no disco rígido com um bit alternado assim: 1010011?

Eu não sou especialista em disco rígido nem em física, mas acho que um sistema operacional ou um disco tem somas de verificação e outras coisas para garantir que isso não aconteça.

É possível que apenas um bit mude para que meu arquivo mostre uma letra "Q" em vez de um "S"?

UPDATE: Fizemos uma análise mais aprofundada. Nosso banco de dados escravo obtém seus registros WAL do mestre (recurso PostgreSQL). Seja como for: nosso servidor escravo deve estar em sincronia. Mas o escravo não estava em sincronia em relação a essa linha em particular. Poderíamos ver que isso aconteceu há alguns dias sem qualquer interação de um usuário nessa entrada em particular. Então deve ser um pouco folheando. assustador!

    
por Janning 12.07.2013 / 11:10

1 resposta

10

É tão raro vermos uma pergunta genuinamente interessante neste site, então, obrigado antes de mais nada.

Acho que o que você está vendo lá é de fato um erro de bit único, incrível, você pode identificá-lo para ser honesto, mas você está correto em assumir que o segundo bit menos significativo foi trocado (supondo que você re usando ASCII de qualquer maneira).

Quanto a checksums, etc., quando foi gravado no disco, é provável que tenha sido verificado como bom - tenho certeza de que esse problema se desenvolveu posteriormente através de um erro simples de vazamento magnético. Mas você está certo, há verificações de codificação feitas, varia de fabricante, mas provavelmente há um erro em algum lugar dizendo "isso parece um pouco estranho" - mas qual opção sua cadeia de IO tem disponível? negar-lhe o bloco inteiro? Suponho que este é um único disco não RAID, pois os discos RAID tendem a ter mais opções disponíveis quando detectam erros.

É estranho, embora esse tipo de coisa provavelmente tenha acontecido várias vezes por segundo em todo o mundo.

    
por 12.07.2013 / 11:21