Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Qual é a maneira mais compacta de armazenar diferenças em um banco de dados?


É muito mais fácil armazenar cada registro em sua totalidade do que armazenar diferenças deles. Então, se você quiser uma diferença de duas revisões, você pode gerar uma conforme necessário usando o Text_Diff biblioteca .

Gosto de armazenar todas as versões do registro em uma única tabela e recuperar a mais recente com MAX(revision) , um atributo booleano "atual" ou similar. Outros preferem desnormalizar e ter uma tabela espelhada que contém revisões não atuais.

Se você armazenar diferenças, seu esquema e algoritmos se tornarão muito mais complexos. Você então precisa armazenar pelo menos uma revisão "completa" e várias versões "dif" e reconstruir uma versão completa a partir de um conjunto de diferenças sempre que precisar de uma versão completa. (É assim que o SVN armazena as coisas. O Git armazena uma cópia completa de cada revisão, não diffs.)

O tempo do programador é caro, mas o espaço em disco geralmente é barato. Por favor, considere se armazenar cada revisão na íntegra é realmente um problema.