sql >> Databasteknik >  >> RDS >> Mysql

Vad är det mest kompakta sättet att lagra diffs i en databas?

Det är mycket lättare att lagra varje post i sin helhet än att lagra diffar av dem. Om du sedan vill ha en skillnad på två versioner kan du generera en efter behov med PECL Text_Diff bibliotek .

Jag gillar att lagra alla versioner av posten i en enda tabell och hämta den senaste med MAX(revision) , ett "nuvarande" booleskt attribut eller liknande. Andra föredrar att denormalisera och har en spegeltabell som innehåller icke-aktuella revisioner.

Om du istället lagrar diffs blir ditt schema och dina algoritmer mycket mer komplexa. Du måste sedan lagra minst en "full" version och flera "diff"-versioner, och rekonstruera en fullständig version från en uppsättning diffar närhelst du behöver en fullständig version. (Det här är hur SVN lagrar saker. Git lagrar en fullständig kopia av varje revision, inte diff.)

Programmerartid är dyrt, men diskutrymme är vanligtvis billigt. Tänk på om det verkligen är ett problem att lagra varje version i sin helhet.



  1. Säkerhetskopiera MySQL Amazon RDS

  2. mysqlimport med dump

  3. Hur skapar man ett index på datumdelen av DATETIME-fältet i MySql

  4. SQL-injektion som tar sig runt mysql_real_escape_string()