Martin Fowler napsal můj oblíbený článek na toto téma, http://martinfowler.com/articles/evodb.html. Rozhodl jsem se neuvádět výpisy schémat pod správu verzí jako alumb a další navrhují, protože chci snadný způsob, jak upgradovat svou produkční databázi.
Pro webovou aplikaci, kde budu mít jednu instanci produkční databáze, používám dvě techniky:
Skripty pro upgrade databáze
Skripty upgradu sekvenční databáze, které obsahují DDL nezbytné k přesunutí schématu z verze N na N+1. (Tyto položky jsou součástí vašeho systému správy verzí.) Tabulka _version_history_, něco jako
create table VersionHistory (
Version int primary key,
UpgradeStart datetime not null,
UpgradeEnd datetime
);
dostane nový záznam pokaždé, když se spustí skript aktualizace, který odpovídá nové verzi.
To zajišťuje, že je snadné zjistit, jaká verze schématu databáze existuje, a že skripty upgradu databáze se spouštějí pouze jednou. Opět nejsou výpisy z databáze. Každý skript spíše představuje změny nutné přejít z jedné verze do druhé. Jsou to skripty, které použijete na svou produkční databázi, abyste ji "upgradovali".
Synchronizace izolovaného prostoru pro vývojáře
- Skript pro zálohování, dezinfekci a zmenšení produkční databáze. Spusťte to po každém upgradu na produkční DB.
- Skript pro obnovení (a v případě potřeby vyladění) zálohy na pracovní stanici vývojáře. Každý vývojář spustí tento skript po každém upgradu na produkční DB.
Upozornění:Moje automatické testy probíhají proti schématicky správné, ale prázdné databázi, takže tato rada nebude zcela vyhovovat vašim potřebám.