sql >> Database >  >> RDS >> Mysql

Wat is de meest compacte manier om diffs op te slaan in een database?

Het is veel gemakkelijker om elk record in zijn geheel op te slaan dan om verschillende ervan op te slaan. Als u een diff van twee revisies wilt, kunt u er indien nodig een genereren met de PECL Text_Diff bibliotheek .

Ik bewaar graag alle versies van het record in een enkele tabel en haal de meest recente op met MAX(revision) , een "huidig" booleaans attribuut of iets dergelijks. Anderen geven er de voorkeur aan om te denormaliseren en een spiegeltabel te hebben die niet-huidige revisies bevat.

Als u in plaats daarvan diffs opslaat, worden uw schema en algoritmen veel complexer. Je moet dan ten minste één "volledige" revisie en meerdere "diff" versies opslaan, en een volledige versie reconstrueren uit een set diffs wanneer je een volledige versie nodig hebt. (Dit is hoe SVN dingen opslaat. Git slaat een volledige kopie van elke revisie op, niet diffs.)

Programmeurstijd is duur, maar schijfruimte is meestal goedkoop. Overweeg of het een probleem is om elke revisie volledig op te slaan.



  1. Waarom worden er geen sleutels gebruikt in deze EXPLAIN?

  2. Problemen met UTF-8-tekens; wat ik zie is niet wat ik heb opgeslagen

  3. SQL Server-blokkeringsquery

  4. Hoe zie ik alle externe sleutels van een tabel of kolom?