Database project alla riscossa
-
Upload
gian-maria-ricci -
Category
Documents
-
view
634 -
download
1
description
Transcript of Database project alla riscossa
![Page 1: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/1.jpg)
SQL START!ANCONA, 11 NOVEMBRE 2011
![Page 3: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/3.jpg)
Sponsors
![Page 4: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/4.jpg)
#sqlstart
![Page 5: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/5.jpg)
Agenda
• Le problematiche• Cosa è un Database Project• Deploy • Unit Testing • Refactoring e Code Analysis
![Page 6: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/6.jpg)
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
![Page 7: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/7.jpg)
Le Problematiche
Source control
DeployTesting
![Page 8: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/8.jpg)
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
![Page 9: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/9.jpg)
DEMOIntroduzione ai DB Projects
Creazione e funzionalità base di un database project
![Page 10: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/10.jpg)
SQL START!ANCONA, 11 NOVEMBRE 2011
Introduciamo i Db Projects
Creazione e funzionalità base di un database project
![Page 11: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/11.jpg)
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
![Page 12: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/12.jpg)
DEMOSincronia
Gestire la sincronia tra un database reale ed un Db Project per Utilizzare in contemporanea un database condiviso ed un DB project
![Page 13: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/13.jpg)
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
![Page 14: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/14.jpg)
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 )
![Page 15: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/15.jpg)
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
![Page 16: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/16.jpg)
Come viene effettuato il deploy
Schema Model
Schema Model
Diff
![Page 17: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/17.jpg)
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
![Page 18: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/18.jpg)
DEMODeploy del database
Come risolvere le problematiche di deploy grazie ai Database Projects
![Page 19: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/19.jpg)
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
![Page 20: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/20.jpg)
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.
![Page 21: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/21.jpg)
DEMOData Generation Plan
Gestire un database di test con dati autogenerati
![Page 22: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/22.jpg)
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
![Page 23: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/23.jpg)
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
![Page 24: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/24.jpg)
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
![Page 25: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/25.jpg)
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
![Page 26: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/26.jpg)
DEMOUnit Test
Come creare unit test per le funzionalità incluse in un database
![Page 27: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/27.jpg)
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
![Page 28: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/28.jpg)
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
![Page 29: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/29.jpg)
DEMORefactoring + Code Analysis
![Page 30: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/30.jpg)
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
![Page 31: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/31.jpg)
Integrazione con Tfs Build
DB Test
TFS
Check In
Build Server
Sincronizza DB
Aggiorna Web
![Page 32: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/32.jpg)
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
![Page 33: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/33.jpg)
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
![Page 34: Database project alla riscossa](https://reader034.fdocuments.us/reader034/viewer/2022052619/55643430d8b42ace308b4943/html5/thumbnails/34.jpg)
Grazie!Non dimenticate di compilare
i moduli di feedback.Commenta la sessione che hai
appena seguito su Twitter#sqlstart