Existuje kontrolní systém verze pro změny struktury databáze?

hlasů
104

Často jsem běžet do následujícího problému.

Pracuji na některých změnách projektu, které vyžadují nové tabulky nebo sloupce v databázi. Dělám změny databáze a pokračovat ve své práci. Obvykle Vzpomínám zapsat změny tak, aby mohly být replikovány na živém systému. Nicméně, já ne vždy pamatovat, co jsem se změnil a já ne vždy pamatovat na to napsat.

Takže jsem pro push do živého systému a získat velký, zjevnou chybu, že není NewColumnX, fuj.

Nehledě na skutečnost, že to nemusí být nejlepší praxe pro tuto situaci, je tam kontrolní systém verze databází? Já se nestarám o konkrétní databázové technologie. Jen chci vědět, jestli existuje. Stane-li se pracovat s MS SQL Server, pak skvělé.

Položena 02/08/2008 v 02:52
zdroj uživatelem
V jiných jazycích...                            


22 odpovědí

hlasů
9

Většina databázové stroje by měl podporovat ukládání databáze do souboru. Znám MySQL dělá, tak jako tak. To bude jen textový soubor, takže si mohl tvrdí, že do Subversion, nebo cokoliv použít. To by bylo snadné spustit diff na souborech taky.

Odpovězeno 02/08/2008 v 02:56
zdroj uživatelem

hlasů
7

Pro Oracle, já používám ropucha , který může vylít schéma s řadou samostatných souborů (například jeden soubor na stole). Mám nějaké skripty, které spravují tuto sbírku v Perforce, ale myslím, že by měl být snadno proveditelný téměř v jakémkoli řídícím revize systému.

Odpovězeno 02/08/2008 v 07:05
zdroj uživatelem

hlasů
56

Ruby on Rails, je tu koncept migrace - rychlý skript pro změnu databáze.

Vygenerovat soubor pro migraci, který má pravidla, aby zvýšila verze dB (jako je přidání sloupce) a pravidla pro downgrade verzi (jako je odstranění sloupec). Každé stěhování je očíslovány a tabulka udržuje aktuální verzi db.

Chcete-li migrovat up , spuštění příkazu s názvem „db: migraci“, který se dívá na verzi a aplikuje potřebné skripty. Můžete přenést se podobným způsobem.

Migrační skripty samotné jsou uloženy v systému pro správu verzí - pokud změníte databázi, kterou zjistit v novém skriptu, a každý vývojář může použít ji, aby své místní db na nejnovější verzi.

Odpovězeno 02/08/2008 v 07:23
zdroj uživatelem

hlasů
5

Je tu PHP5 „migraci databáze framework“ zavolal Ruckusing. Osobně jsem nepoužil, ale tyto příklady ukazují nápad, pokud budete používat jazyk pro vytvoření databáze, jak a kdy je potřeba, stačí jen sledovat zdrojové soubory.

Odpovězeno 02/08/2008 v 08:48
zdroj uživatelem

hlasů
6

Píšu své skripty uvolňování db paralelně s kódováním a držet scénáře uvolňování v určitém úseku projektu v SS. Mám-li provést změnu kódu, který vyžaduje změnu db, pak jsem aktualizovat skript uvolnění zároveň. Před propuštěním jsem spustit skript pro uvolnění na čistém dev dB (zkopírovány struktury moudrý z výroby) a dělat svou finální testování na něm.

Odpovězeno 30/08/2008 v 19:58
zdroj uživatelem

hlasů
7

Vyjádřete svůj počáteční CREATE tabulka řadič verze, přidejte ALTER TABLE, ale nikdy upravovat soubory, jen více měnit soubory v ideálním případě s názvem postupně, nebo dokonce jako „sada změn“, takže si můžete najít všechny změny za určité nasazení.

Nejvytrvalejší část, kterou vidím, je sledování závislostí, například pro konkrétní nasazení tabulky B bude možná nutné aktualizovat před tabulce A.

Odpovězeno 31/08/2008 v 12:25
zdroj uživatelem

hlasů
1

V nepřítomnosti VCS pro změny tabulky jsem je přihlašování do wiki. Nejméně pak mohu zjistit, kdy a proč to bylo měněno. Je to daleko k dokonalosti jako ne každý dělá to a máme několik verzí produktu v použití, ale lepší než nic.

Odpovězeno 01/09/2008 v 08:29
zdroj uživatelem

hlasů
7

Podívejte se na oracle balíčku DBMS_METADATA.

Zejména tyto metody jsou zvláště vhodné:

  • DBMS_METADATA.GET_DDL
  • DBMS_METADATA.SET_TRANSFORM_PARAM
  • DBMS_METADATA.GET_GRANTED_DDL

Jakmile se seznámíte s tím, jak fungují (docela samozřejmý) můžete napsat jednoduchý skript pro výpis výsledků těchto metod do textových souborů, které mohou být dány pod kontrolou zdroje. Hodně štěstí!

Není si jistý, jestli tam je něco to jednoduché pro MSSQL.

Odpovězeno 01/09/2008 v 21:57
zdroj uživatelem

hlasů
8

Pokud používáte SQL Server, že by bylo těžké porazit dat Dude (aka Database Edition Visual Studio). Jakmile se dostanete na kloub, že dělá schéma porovnat mezi zdrojovým kontrolované verze databáze a verze ve výrobě je hračka. A jediným kliknutím si můžete vytvořit svůj diff DDL.

Je tu instruktážní videa na webu MSDN, která je velmi užitečná.

Vím o DBMS_METADATA a ropuchy, ale kdyby někdo mohl přijít s Dude dat pro Oracle a pak by byl život opravdu sladký.

Odpovězeno 10/09/2008 v 20:49
zdroj uživatelem

hlasů
6

Udělal jsem tento off a na dlouhá léta - řízení (nebo se snaží řídit) verze schématu. Nejlepší postupy jsou závislé na nástrojích, které máte. Pokud můžete získat nástroj Quest Software „Schema správce“ budete v dobré kondici. Oracle má svou vlastní inferiorní nástroj, který je také nazýván „Schema Manager“ (matoucí hodně?), Že jsem nedoporučujeme.

Bez automatizovaného nástroje (viz další připomínky zde o datových vole), pak budete používat skripty a soubory DDL přímo. Vyberte si takový přístup, zdokumentovat jej a sledovat jej důsledně. Líbí se mi, že má schopnost znovu vytvořit databázi, v každém okamžiku, a tak jsem raději mít plný export DDL celé databáze (jestli jsem DBA), nebo vývojářské schématu (pokud jsem v přípravku -vývoj mode).

Odpovězeno 15/09/2008 v 16:01
zdroj uživatelem

hlasů
6

PLSQL Developer, což je nástroj ze všech arround automatizace, má zásuvný modul pro úložišť, která pracuje v pořádku (ale ne velký) s Visual Source Safe.

Z webu:

Version Control Plug-In poskytuje těsnou integraci mezi PL / SQL Developer IDE >> a každý systém Version Control, který podporuje SCC Interface Specification Microsoft. >> To zahrnuje nejpopulárnější kontrolní systémy Verze jako je například Microsoft Visual SourceSafe, >> Merant PVCS a MKS Zdroj Integrity.

http://www.allroundautomations.com/plsvcs.html

Odpovězeno 17/09/2008 v 16:50
zdroj uživatelem

hlasů
5

ER Studio vám umožní zvrátit databázového schématu do nástroje a pak můžete porovnat ji žít databází.

Příklad: Zpětné vývojového schématu do ER Studio - porovnat jej s výrobou a vypíše všechny rozdíly. To může skript změny nebo jen tlačit je prostřednictvím automaticky.

Jakmile budete mít schéma v ER Studio můžete buď uložit skript vytvoření nebo jej uložit jako proprietární binární a uložit jej do správy verzí. Pokud jste někdy chtěli vrátit k dřívější verzi systému, stačí se podívat ven a tlačit ji do svého db platformy.

Odpovězeno 17/09/2008 v 19:04
zdroj uživatelem

hlasů
1

Dvě doporučení knihy: „Refaktoring databází“, podle Ambler a Sadalage a „agilní databáze techniky“ od Ambler.

Někdo zmínil Rails migrací. Myslím, že fungují skvěle, a to i mimo Rails aplikace. Použil jsem je na aplikaci ASP s SQL Server, který jsme byli v procesu přechodu na Rails. Zkontrolovat skripty pro migraci sebe do VCS. Zde je příspěvek od pragmatickou Dave Thomas na toto téma.

Odpovězeno 22/09/2008 v 19:17
zdroj uživatelem

hlasů
1

Já bych doporučil jeden ze dvou přístupů. Za prvé, investovat do PowerDesigneru od Sybase. Enterprise Edition. To vám umožní navrhovat Fyzikální datamodels, a mnohem víc. Ale přichází s úložiště, které vám umožní zjistit ve svých modelech. Každá nová příjezdu na místo může být nová verze, může porovnávat libovolné verze na jinou verzi, a dokonce i to, co je ve vaší databázi v té době. To se pak předložit seznam všech rozdílu a požádat, které je třeba migrovat ... a pak staví scénář, jak to udělat. Není to levné, ale je to výhodná koupě dvojnásobnou cenu, a to je ROI je asi 6 měsíců.

Druhou myšlenkou je zapnout DDL auditu (pracuje v Oracle). Tím se vytvoří tabulku s každou změnou, které provedete. Jestliže dotaz změny z časového razítka posledního přesunut změny databáze prod právě teď, budete mít seřazený seznam všechno, co jste udělal. Několik kde klauzule o odstranění nulovým součtem mění jako vytvoření tabulky foo; následuje pokles tabulky foo; a můžete snadno vytvořit mod skript. Proč zachovat změny ve wiki, to je dvojnásobek práce. Nechte databáze sledovat za vás.

Odpovězeno 26/09/2008 v 18:53
zdroj uživatelem

hlasů
2

Použili jsme MS Team System Database Edition s docela dobrým úspěchem. Integruje se s kontrolou verzí TFS a Visual Studio více či méně plynule a umožňuje nám podaří uložené procs, pohledy atd snadno. Řešení konfliktů může být bolest, ale historie verze je úplná, jakmile je to hotovo. Poté, migrace do QA a výroby jsou velmi jednoduchá.

Je třeba říci, že se jedná o produkt verze 1.0, i když, a není bez několika otázek.

Odpovězeno 26/09/2008 v 19:12
zdroj uživatelem

hlasů
29

Jsem trochu ze staré školy, ve které jsem použít zdrojové soubory pro vytvoření databáze. Tam jsou vlastně 2 soubory - projektové database.sql a projektově updates.sql - první pro schématu a perzistentních dat a druhý pro úpravy. Samozřejmě, oba jsou pod kontrolou zdroje.

Když se změny databáze, jsem nejprve aktualizovat hlavní schéma v projektové database.sql, zkopírujte relevantní informace k projektové updates.sql, například ALTER TABLE. I pak mohou použít aktualizace pro vývoj databáze, test, opakovat, než dobře. Poté zkontrolujte v soubory, test znovu, a vztahují se na produkci.

Také jsem obvykle mají tabulky v DB - Config - jako například:

SQL

CREATE TABLE Config
(
    cfg_tag VARCHAR(50),
    cfg_value VARCHAR(100)
);

INSERT IGNORE  INTO Config(cfg_tag, cfg_value) VALUES
( 'db_version', '$Revision: $'),
( 'db_revision', '$Revision: $');

Poté přidám následující části Aktualizace:

UPDATE Config SET cfg_value='$Revision: $' WHERE cfg_tag='db_revision';

db_versionJen dostane změnilo, když je databáze znovu, a db_revisiondává mi údaj, jak daleko db je mimo základní linie.

Mohl bych udržet aktualizace ve svých samostatných souborech, ale vybral jsem si je všechny kaše a použijte cut & paste extrahovat relevantní části. Trochu více úklid je v pořádku, tedy odstranit ‚:‘ od $ Revision 1.1 $ zmrazit.

Odpovězeno 26/09/2008 v 21:29
zdroj uživatelem

hlasů
10

Velmi doporučuji SQL deltu . Jen jsem ji použít ke generování diff skripty když jsem udělal můj kódování funkci a nechte si ty skripty do svého řídicího source nástroj (Mercurial :))

Mají obě SQL Server a verze Oracle.

Odpovězeno 28/05/2009 v 03:12
zdroj uživatelem

hlasů
2

Schema Porovnat pro Oracle je nástroj speciálně navržen tak, aby přenést změny z naší databáze Oracle do druhého. Naleznete na níže uvedenou adresu URL pro odkaz ke stažení, kde si budou moci používat software pro plně funkční studie.

http://www.red-gate.com/Products/schema_compare_for_oracle/index.htm

Odpovězeno 10/01/2010 v 03:59
zdroj uživatelem

hlasů
10

Zajímalo by mě, že nikdo nezmínil o open source nástroj liquibase což je Java a měly by pracovat pro téměř každou databázi, která podporuje JDBC. Ve srovnání s kolejnicemi používá xml namísto rubínově provádět změny schématu. I když se mi nelíbí XML domény konkrétních jazyků velmi chladný Výhodou je, že xml liquibase ví, jak se vrátit zpět některé operace, jako je

<createTable tableName="USER"> 
   <column name="firstname" type="varchar(255)"/>
</createTable>

Takže si nemusíte zvládnout své vlastní

Čisté příkazů SQL nebo dovoz údaje jsou také podporovány.

Odpovězeno 10/07/2010 v 22:26
zdroj uživatelem

hlasů
11

MyBatis (dříve iBatis) má migrace schématu , nástroj pro použití na příkazovém řádku. Je napsán v Javě i když může být použit s jakýmkoliv projektem.

Aby se dosáhlo dobré praxe řízení změn databáze, musíme identifikovat několik klíčových cílů. To znamená, že MyBatis schématu migrace systému (nebo MyBatis Migrace pro krátký), má za cíl:

  • Pracovat s jakoukoliv databází, nové nebo existující
  • Pákový ovládací source systém (např Subversion)
  • Umožnit souběžné vývojářům nebo týmy pracovat samostatně
  • Dovolit rozpory velmi viditelné a snadno ovladatelné
  • Umožňují vpřed a vzad migrace (vyvíjejí, přecházejí v uvedeném pořadí)
  • Udělat aktuální stav databáze snadno přístupné a srozumitelné
  • Povolit migraci přes přístupovými právy či byrokracie
  • Pracovat s jakýmkoli metodikou
  • Povzbuzuje dobré a jednotné postupy
Odpovězeno 10/07/2010 v 22:56
zdroj uživatelem

hlasů
11

Redgate má produkt s názvem SQL Source Control . Integruje se s TFS, SVN, SourceGear Vault, Vault Pro, Mercurial, Perforce a Gitu.

Odpovězeno 08/07/2011 v 15:51
zdroj uživatelem

hlasů
3

Můžete použít Microsoft SQL Server Datové nástroje Visual Studio pro generování skriptů pro databázové objekty jako součást projektu SQL Server. Pak můžete přidat skripty do ovládacího prvku zdroje pomocí integrace zdroj ovládacího prvku, která je integrována do Visual Studio. Také SQL Server projekty umožňují ověřit databázových objektů pomocí kompilátoru a vytvářet nasazení skriptů k aktualizaci existující databázi nebo vytvořit novou.

Odpovězeno 22/12/2014 v 11:58
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more