34
SQL START! ANCONA, 11 NOVEMBRE 2011

Database project alla riscossa

Embed Size (px)

DESCRIPTION

Presentation done on SQL Start on 11/11/11 at Ancona. Sli

Citation preview

Page 1: Database project alla riscossa

SQL START!ANCONA, 11 NOVEMBRE 2011

Page 2: Database project alla riscossa

SQL START!ANCONA, 11 NOVEMBRE 2011

Database Projects alla riscossa

Ricci Gian [email protected]

Page 3: Database project alla riscossa

Sponsors

Page 4: Database project alla riscossa

#sqlstart

Page 5: Database project alla riscossa

Agenda

• Le problematiche• Cosa è un Database Project• Deploy • Unit Testing • Refactoring e Code Analysis

Page 6: Database project alla riscossa

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

Le Problematiche

Source control

DeployTesting

Page 8: Database project alla riscossa

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

DEMOIntroduzione ai DB Projects

Creazione e funzionalità base di un database project

Page 10: Database project alla riscossa

SQL START!ANCONA, 11 NOVEMBRE 2011

Introduciamo i Db Projects

Creazione e funzionalità base di un database project

Page 11: Database project alla riscossa

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

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

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

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

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

Come viene effettuato il deploy

Schema Model

Schema Model

Diff

Page 17: Database project alla riscossa

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

DEMODeploy del database

Come risolvere le problematiche di deploy grazie ai Database Projects

Page 19: Database project alla riscossa

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

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

DEMOData Generation Plan

Gestire un database di test con dati autogenerati

Page 22: Database project alla riscossa

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

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

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

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

DEMOUnit Test

Come creare unit test per le funzionalità incluse in un database

Page 27: Database project alla riscossa

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

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

DEMORefactoring + Code Analysis

Page 30: Database project alla riscossa

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

Integrazione con Tfs Build

DB Test

TFS

Check In

Build Server

Sincronizza DB

Aggiorna Web

Page 32: Database project alla riscossa

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

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

Grazie!Non dimenticate di compilare

i moduli di feedback.Commenta la sessione che hai

appena seguito su Twitter#sqlstart