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

Hvad er den mest kompakte måde at gemme diffs på i en database?

Det er meget nemmere at gemme hver post i sin helhed, end det er at gemme diffs af dem. Så hvis du vil have en forskel på to revisioner, kan du generere en efter behov ved at bruge PECL Text_Diff bibliotek .

Jeg kan godt lide at gemme alle versioner af posten i en enkelt tabel og hente den seneste med MAX(revision) , en "aktuel" boolesk attribut eller lignende. Andre foretrækker at denormalisere og have en spejltabel, der indeholder ikke-aktuelle revisioner.

Hvis du i stedet gemmer diffs, bliver dit skema og algoritmer meget mere komplekse. Du skal derefter gemme mindst én "fuld" revision og flere "diff"-versioner og rekonstruere en fuld version fra et sæt af diffs, når du har brug for en fuld version. (Sådan gemmer SVN ting. Git gemmer en fuld kopi af hver revision, ikke forskelle.)

Programmeringstiden er dyr, men diskplads er normalt billig. Overvej venligst, om det virkelig er et problem at gemme hver revision i sin helhed.



  1. Unitils og DBMaintainer - hvordan får man dem til at fungere med flere brugere/skemaer?

  2. SQL-fejl 1630:Funktionen SUBSTRING eksisterer ikke.. hva'?

  3. Sådan gør du:Rens en mysql InnoDB-lagringsmotor?

  4. Sådan opdaterer du primærnøgle