Upload
gian-maria-ricci
View
635
Download
1
Tags:
Embed Size (px)
DESCRIPTION
Presentation done on SQL Start on 11/11/11 at Ancona. Sli
Citation preview
SQL START!ANCONA, 11 NOVEMBRE 2011
Sponsors
#sqlstart
Agenda
• Le problematiche• Cosa è un Database Project• Deploy • Unit Testing • Refactoring e Code Analysis
Le Problematiche
• Lo sviluppo di un database spesso segue procedure di ALM differenti rispetto al resto del progetto
• Solitamente molte funzionalità che sono disponibili per il codice sono assenti per lo sviluppo del database
Le Problematiche
Source control
DeployTesting
Database Project
• I database project sono stati introdotti per superare questo gap
• Un database project permette di «definire» la struttura di un database tramite file sorgente
• Un DP può essere compilato, deployato e su di esso si possono scrivere unit tests
DEMOIntroduzione ai DB Projects
Creazione e funzionalità base di un database project
SQL START!ANCONA, 11 NOVEMBRE 2011
Introduciamo i Db Projects
Creazione e funzionalità base di un database project
Se ho gia un progetto avviato?
• La possibilità di importare la struttura di un database esistente garantisce l’introduzione dei DB Project su progetti esistenti
• La possibilità di sincronizzazione permette inoltre di mixare lo sviluppo «tradizionale» all’uso dei DB Project
DEMOSincronia
Gestire la sincronia tra un database reale ed un Db Project per Utilizzare in contemporanea un database condiviso ed un DB project
Come rilascio gli update del DB
• Esistono strumenti che sincronizzano la struttura di due istanze di database
• In questo modo possiamo generare script di upgrade da includere in un setup
DEV PROD
Come rilascio update del DB?
• Cosa accade se in produzione ho potenzialmente versioni differenti del database?
• Cosa accade se qualcuno ha modificato il database? (non è infrequente come potete pensare )
Come rilascio update del DB?
• Compilando un database project viene prodotto un file .dbschema chiamato «database logico»
• Esiste un tool redistribuibile che può sincronizzare un «database logico» con un database fisico
Come viene effettuato il deploy
Schema Model
Schema Model
Diff
Come rilascio update del DB?
• Posso includere il «database logico» in uno script di setup e risolvere i problemi
1.2
1.5
2.3
DEMODeploy del database
Come risolvere le problematiche di deploy grazie ai Database Projects
Unit Testing
• Stored procedures e funzioni dovrebbero essere coperte da Unit Testing
• Grazie ad un DB Project possiamo automatizzare– Creazione di un db locale di test– Popolazione di dati di test– Unit test eseguibili da MsTest e quindi integrati nel
ciclo di sviluppo
Dati di test
• Affinche uno Unit Test sia ripetibile è necessario poter replicare i dati nel db
• È possibile associare ad un DBProj uno o più Data Generation Plan
• La generazione dei dati è automatica, rispetta le chiavi del database e permette flessibilità / ripetibilità sui dati generati.
DEMOData Generation Plan
Gestire un database di test con dati autogenerati
Unit Testing• Si possono creare con pochi click unit test
di stored procedure, trigger e funzioni
• Visual Studio si occupa di generare il database di test, allinearlo ed eseguire la generazione dati
Aggiornamento struttura
Generazione Dati Esecuzione Verifica
risultati
Unit Testing
• Gli unit test di database sono scritti in T-SQL rispettando il paradigma per cui gli unit test dovrebbero essere scritti nello stesso linguaggio del codice
• Internamente viene comunque generato un test standard che può comunque essere editato
Customizzazione Unit Test
• È quindi possibile aggiungere funzionalità ai test del database semplicemente andando ad editare il file di «code behind»
• Grazie a questo si possono aggiungere interessanti funzionalità, come i Data Driven Database test
Es. Unit Test Transazionali• È possibile ad esempio anche aggiungere una
gestione delle transazioni
WrapperFixture Setup
Fixture Teardown
Test Setup
Test Cleanup
Test
Begin Transaction
Execute test code
Rollback Transaction
DEMOUnit Test
Come creare unit test per le funzionalità incluse in un database
Refactoring
• Il refactoring è una procedura standard dello sviluppo agile
• In un DB Project si hanno a disposizione dei refactoring sulla struttura– Rename– Move to schema– Expand wildcards
Analisi del codice
• Analogamente ai progetti C# o di altri linguaggi è presente un analizzatore di codice
• Tre distinte categorie: Naming, Performance e Design attivabili distintamente
• Possibilità di scrivere Regole proprie per assicurare ad esempio le proprie naming conventions
DEMORefactoring + Code Analysis
Integrazione con Tfs Build
• E’ possibile integrare il deploy del progetto DB in una team build. Es, progetto web.
• In questo modo si automatizzano le procedure di deploy, sia nell’ambiente di test che in produzione
Integrazione con Tfs Build
DB Test
TFS
Check In
Build Server
Sincronizza DB
Aggiorna Web
Disponibilità nelle versioni di VS
Visual Studio 2010 Premium/Ultimate
Visual Studio 2010 ProfessionalSchema Compare
Data Compare
Refactoring
Data Generation*
Database Unit Testing*
Static Code Analysis*
Project System IntelliSense
Build Deploy
Build Integration Command Line Deploy
Sql Server 2012 e Juneau
• I database project verranno rimpiazzati dai Sql Server Developer Tools (code-name Juneau)– http://msdn.microsoft.com/en-us/library/hh272686(v=vs.103).aspx– http://blogs.msdn.com/b/ssdt/archive/2010/11/08/welcome.aspx
• Conversioni e compatibilità con gli attuali Database Project– http://msdn.microsoft.com/en-us/library/hh272689(v=vs.103).aspx
• Informazioni sui nuovi Database Project– http://msdn.microsoft.com/en-us/library/hh272702(v=VS.103).aspx
Grazie!Non dimenticate di compilare
i moduli di feedback.Commenta la sessione che hai
appena seguito su Twitter#sqlstart