<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Database</title>
        <link>http://blogs.ugidotnet.org/bmatte/category/Database.aspx</link>
        <description>Database</description>
        <language>it-IT</language>
        <copyright>Matteo Baglini</copyright>
        <generator>Subtext Version 2.6.0.0</generator>
        <item>
            <title>Evolutionary Databases - Design and Deployment</title>
            <link>http://blogs.ugidotnet.org/bmatte/archive/2008/03/26/evolutionary-databases---design-and-deployment.aspx</link>
            <description>&lt;p&gt;Esistono diversi tools di Refactoring, in continua evoluzione, che aiutano uno sviluppatore agile ad evolvere in maniera incrementale il proprio codice. Lo stesso non si può dire per quanto riguarda il refactoring del database, si perchè anche quest'ultimo vuole la sua parte, quindi anche il design della del database deve evolvere in maniera incrementale, user story dopo user story. A questo punto nasce il probleblema di gestire questa naturale evoluzione all'interno del processo di sviluppo software.&lt;/p&gt;
&lt;p&gt;L'approccio generalmente usato è quello di partire da uno script di base di crazione del database, da lì in poi per ogni user story che andrà a "toccare" il database verrà generato un script di aggiornamento che contiene le modifiche dalla versione precedente ed eventauli migrazione dati. Allo stesso modo lo script deve essere in grado di far "regredire" la struttura del database alla una release precedente. Tutti gli script seguenti a quello base saranno numerati, naturalmente in ordine crescente. Nel processo di build del progetto ci sarà un task che si occuperà di verificare la versione corrente del database e di eseguirein ordine tutti gli script necessari ad allineare il database alla nuova versione. &lt;/p&gt;
&lt;p&gt;Esistono diversi tools in rete sia per il mondo .NET che per altri come Java e Ruby. Tutti si basano sulla filosofia che ho descritto prima, però hanno forme diverse di implementazione. Esiste una categoria di tools che utilizza gli script SQL, un'altra che utilizza file XML ed un'ultima categoria che utilizza file di codice (C#,VB.NET,ecc). Di seguito un elenco (sicuramente non completo) dei tools, basati su script SQL: &lt;/p&gt;
&lt;p&gt;- dbdeploy.NET - &lt;a href="http://sourceforge.net/projects/dbdeploy-net/"&gt;http://sourceforge.net/projects/dbdeploy-net/&lt;/a&gt;     &lt;br /&gt;
- dbdeploy - &lt;a href="http://dbdeploy.com"&gt;http://dbdeploy.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;basati su XML: &lt;/p&gt;
&lt;p&gt;- MIGRATEdb - &lt;a href="http://migratedb.sourceforge.net/"&gt;http://migratedb.sourceforge.net/&lt;/a&gt;     &lt;br /&gt;
- LiquiBase - &lt;a href="http://www.liquibase.org/"&gt;http://www.liquibase.org/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;basati su codice: &lt;/p&gt;
&lt;p&gt;- ActiveRecordMigration  - &lt;a href="http://wiki.rubyonrails.com/rails/pages/UnderstandingMigrations"&gt;http://wiki.rubyonrails.com/rails/pages/UnderstandingMigrations&lt;/a&gt;     &lt;br /&gt;
- SubSonic Migrate - &lt;a href="http://blog.wekeroad.com/2007/10/03/subsonic-migrate-me/"&gt;http://blog.wekeroad.com/2007/10/03/subsonic-migrate-me/&lt;/a&gt;     &lt;br /&gt;
- RikMigrations - &lt;a href="http://www.codeplex.com/RikMigrations"&gt;http://www.codeplex.com/RikMigrations&lt;/a&gt;     &lt;br /&gt;
- Migrator.NET - &lt;a href="http://code.google.com/p/migratordotnet/"&gt;http://code.google.com/p/migratordotnet/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tutti questi tools si assomigliano molto, quello che secondo me può determinare la scelta di uno piuttosto che di un'altro è lo skill di chi dovrà creare l'update del database. Sicuramente se a modificare il database sarà un DBA, il quale ha una profonda conoscenza di SQL, il tool migliore sarà uno di quelli basati su script. Diversamente se sarà uno sviluppatore il tool più adatto sarà uno quelli basati su codice. Resta infine la categoria dei tools basati su file XML, a mio modesto parere, un ibrido senza nessun vantaggio, dato che richiede di racchiudere script SQL all'interno di appositi tag XML, complicandone la leggibilità. &lt;/p&gt;
&lt;p&gt;Io personalmente ho iniziato ad usare dbdeploy.NET, consigliatomi da &lt;a href="http://blogs.ugidotnet.org/ABS/Default.aspx"&gt;Marco Abis&lt;/a&gt;, che ringrazio. In fine segnalo questo &lt;a href="http://trgoodwin.blogspot.com/2008/01/using-dbdeploynet.html" target="_blank"&gt;post-guida&lt;/a&gt; all'uso di dbdeploy.NET e questo white paper &lt;a href="http://dbdeploy.com/documentation/taking-control-of-your-database-development-white-paper/" target="_blank"&gt;Taking Control of your Database Development&lt;/a&gt;,utile a prescindere dal tool usato.&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:083152f7-fcc2-4e7a-b20f-990bb6c09501" style="margin: 0px; padding: 0px; display: inline;"&gt;Technorati Tag: &lt;a href="http://technorati.com/tags/Refactoring" rel="tag"&gt;Refactoring&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Agile" rel="tag"&gt;Agile&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Database" rel="tag"&gt;Database&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/bmatte/aggbug/91872.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Matteo Baglini</dc:creator>
            <guid>http://blogs.ugidotnet.org/bmatte/archive/2008/03/26/evolutionary-databases---design-and-deployment.aspx</guid>
            <pubDate>Wed, 26 Mar 2008 14:09:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/bmatte/archive/2008/03/26/evolutionary-databases---design-and-deployment.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/bmatte/comments/commentRss/91872.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/bmatte/services/trackbacks/91872.aspx</trackback:ping>
        </item>
        <item>
            <title>Linkare FoxPro da SQL Server</title>
            <link>http://blogs.ugidotnet.org/bmatte/archive/2007/01/12/66327.aspx</link>
            <description>&lt;p&gt;Oggi dovevo linkare un database FoxPro ad un' istanza di SQL Server 2005, esperienza per me nuova. &lt;/p&gt;
&lt;p&gt;La store procedure per effettuare il link di fonti dati remote a SQl Server è la &lt;a href="http://msdn2.microsoft.com/it-it/library/ms190479.aspx"&gt;sp_addlinkedserver&lt;/a&gt; ,&lt;/p&gt;
&lt;p&gt; mentre la &lt;a href="http://msdn2.microsoft.com/it-it/library/ms189811.aspx"&gt;sp_addlinkedsrvlogin&lt;/a&gt; serve a fare il mapping degli account tra l'istanza locare e la fonte remota, &lt;/p&gt;
&lt;p&gt;indispensabile per eseguire le nostre query distribuite. &lt;/p&gt;
&lt;p&gt;Le istruzioni per collegare FoxPro sono indicate nella seguente kb: &lt;a href="http://support.microsoft.com/kb/207595/en-us"&gt;http://support.microsoft.com/kb/207595/en-us&lt;/a&gt;&lt;/p&gt;
Technorati tags: &lt;a rel="tag" href="http://technorati.com/tags/FoxPro"&gt;FoxPro&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tag/SQL+Server"&gt;SQL Server&lt;/a&gt;&lt;img src="http://blogs.ugidotnet.org/bmatte/aggbug/66327.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Matteo Baglini</dc:creator>
            <guid>http://blogs.ugidotnet.org/bmatte/archive/2007/01/12/66327.aspx</guid>
            <pubDate>Fri, 12 Jan 2007 22:32:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/bmatte/archive/2007/01/12/66327.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/bmatte/comments/commentRss/66327.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/bmatte/services/trackbacks/66327.aspx</trackback:ping>
        </item>
    </channel>
</rss>