it-swarm-eu.dev

Jak se může změnit schéma databáze skupinových stop?

Jaké metodiky řízení verzí pomáhají týmům lidí sledovat změny schématu databáze?

68
Toby

před pár minutami jsem to kontroloval: Tabulka, která by měla existovat ve všech projektech s databází , se zdá být dost jednoduchá na to, aby se dala do praxe, podívejte se na to:

Říká se tomu schema_version (nebo migrace nebo cokoli vám vyhovuje) a jeho účelem je sledovat strukturální nebo datové změny v databázi. Možná struktura (příklad v MySQL) je:

create table schema_version (
     `when` timestamp not null default CURRENT_TIMESTAMP,
     `key` varchar(256) not null,
     `extra` varchar(256),
     primary key (`key`)
) ENGINE=InnoDB;

vložte do hodnot schema_version (key, extra) ('001', 'verze schématu');

Ať už přidáte tuto tabulku od začátku projektu nebo ihned po nasazení první verze na pracovní nebo produkční server, je jen na vás.

Kdykoli potřebujete provést skript SQL, abyste změnili strukturu databáze nebo provedli migraci dat, měli byste do této tabulky přidat také řádek. A udělejte to prostřednictvím příkazu insert na začátku nebo na konci tohoto skriptu (který je zavázán do úložiště kódu projektu).

45
eiefai

Myslím, že nejlepší metodou je mít databáze vygenerovaná jako součást vašeho procesu sestavení . Udržujte všechny skripty pod kontrolou zdroje se zbytkem kódu a každý je zodpovědný za svá vlastní prostředí.

V opačném případě má RedGate nástroj pro integraci řízení zdroje do SSMS a SQL Compare je užitečný pro porovnání/synchronizaci schémat MS SQL Server. Visual Studio Database Edition má také vestavěný nástroj pro porovnání schémat .

Další SO otázka mě vede k Migrator Dot Net , které budu začít vyšetřovat během svého hojného volného času. Vypadá to jako dobrá metoda, ale může to být více času/režijní investice, než jste ochotni provést.

23
Larry Smithmier

eiefai již zmíněno Tabulka, která by měla existovat ve všech projektech s databází . Toto je skvělý blogový příspěvek, ale IMO jde pouze část cesty k funkčnímu řešení pro kontrolu revize databáze. Myslím, že jakýkoli pokus o „zodpovězení“ této otázky v reálném světě musí vzít v úvahu některé další informace o VCS a databázích:

12
TML

Myslím, že existuje několik různých úhlů přístupu k této otázce. Věřím, že úhel „prvního nástroje“ se bude lišit v závislosti na platformě a osobních preferencích. Příklad: Používám databázový projekt v MS Visual Studio, ale nejsem si jistý, že je to skvělé řešení pro MySQL. Znám také lidi, kteří se docela prodávají na svých oblíbených nástrojích od Redgate, Erwin, Embarcadero atd.

Je zde také úhel „procesu-první“ pro tuto otázku, který bude (doufejme) na této stránce znovu uveden v následujících otázkách. Klíčovými kameny v tomto procesu jsou vaše schéma pod kontrolou zdroje a správa změn tak, že můžete použít změny schématu z verze „x“ na verzi „y“ na vyžádání.

Definitivní odpověď na toto téma bude nakonec vypadat jako kniha, takže asi stojí za to začít odkazem na jednu: Redgate nedávno zveřejnila bezplatnou ebook s názvem „ Průvodce Red Gate k vývojovému týmu SQL Server Team "ai když je tu spousta diskusí, je docela dobré začít debatovat, IMO. Na rozdíl od názvu je většina materiálu v této knize dostatečně obecná, aby se mohla použít na jakoukoli databázi DB (nejen na SQL Server) a na jakoukoli sadu nástrojů (nejen na Redgate). Pokud jste to ještě neviděli, určitě to určitě stojí za skim.

Nakonec se vyplatí propojit v „starší odpověď“ z stackoverflow .

8
D. Lambert

SchemaCrawler je můj nástroj k vytváření textového souboru se všemi objekty databázového schématu. Tento textový výstup jsem navrhl tak, aby byl jak lidsky čitelný, tak i srovnatelný s podobným výstupem z jiného serveru.

V praxi jsem zjistil, že výstup textového souboru schématu databáze je užitečný, když se provádí jako součást sestavení. Tímto způsobem můžete zkontrolovat textový soubor do systému řízení zdrojového kódu a mít historii verzí toho, jak se vaše schéma postupem času vyvíjelo. SchemaCrawler je navržen tak, aby to také automatizoval z příkazového řádku.

5
Sualeh Fatehi