Mysql
 sql >> Database >  >> RDS >> Mysql

Qual è il modo più compatto per archiviare le differenze in un database?

È molto più facile archiviare ogni record nella sua interezza che archiviare le differenze di essi. Quindi, se desideri una differenza di due revisioni, puoi generarne una secondo necessità utilizzando il PECL Text_Diff biblioteca .

Mi piace archiviare tutte le versioni del record in un'unica tabella e recuperare quella più recente con MAX(revision) , un attributo booleano "corrente" o simile. Altri preferiscono denormalizzare e avere una tabella mirror che contiene revisioni non correnti.

Se invece memorizzi le differenze, lo schema e gli algoritmi diventano molto più complessi. È quindi necessario archiviare almeno una revisione "completa" e più versioni "diff" e ricostruire una versione completa da un insieme di differenze ogni volta che è necessaria una versione completa. (Questo è il modo in cui SVN memorizza le cose. Git memorizza una copia completa di ogni revisione, non le differenze.)

Il tempo del programmatore è costoso, ma lo spazio su disco è generalmente economico. Si prega di considerare se l'archiviazione completa di ogni revisione rappresenta davvero un problema.