database project alla riscossa

Post on 26-May-2015

635 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

SQL START!ANCONA, 11 NOVEMBRE 2011

SQL START!ANCONA, 11 NOVEMBRE 2011

Database Projects alla riscossa

Ricci Gian Mariaalkampfer@nablasoft.com

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

top related