SQL Server Migration Day 1 Scegliere Sino ad oggi chi doveva valutare, per scegliere, un database aziendale, operava questa scelta basandosi principalmente sugli aspetti di deployment. Numerosi studi e documenti supportavano questa scelta analizzando la performance, la scalabilità, la disponibilità e la gestibilità del database. Ma qualcosa di profondamente diverso è venuto in superficie in questi anni. 2 Scegliere Si è capito che il database non è una isola separata dal mondo dei sistemi informativi, ma è una delle componenti di quella complessa attività di business che si chiama “applicazione”. Un’applicazione è una attività di business che si dipana, ad alto livello, attraverso i processi e le funzioni aziendali. A basso livello è un fluire di dati da un database (contenitore dei dati attraverso il livello di gestione dei dati) ad un fruitore dei dati (gli utenti attraverso il livello di presentazione) il tutto attraverso delle regole di gestione dei dati stessi (livello di business rules). È evidente quindi che un database per quanto performante, scalabile, etc… è solo un tassello (e forse neppure il più importante) di un mondo più complesso 3 Basi per un confronto Quando si effettua un confronto tra i diversi database del mercato bisogna tenere conto che tutti i principali RDBMS disponibili sono prodotti maturi, per taluni aspetti ai “limiti della vecchiaia”. Quindi sono tutti, senza eccezioni, strumenti completi, con dotazioni ed utility ampie e omnicomprensive Le battaglie sulle transazioni per secondo o sulla quantità di alert di sicurezza, pur essendo molto importanti, non possono essere gli elementi fondamentali del confronto (pur essendone comunque un contorno). Quali sono quindi gli elementi più importanti Caratteristiche di prestazioni, disponibilità, etc… Integrazione con gli ambienti di sviluppo delle applicazioni Supporto allo sviluppo di applicazioni basate sull’architettura SOA (Service Oriented Architecture) Flessibilità di deployment delle applicazioni 4 Caratteristiche di SQL Server Database Mirroring Restore Online È una suite di strumenti integrati per la gestione del database. Tra questi le funzionalità per sviluppare, rilasciare e ottimizzare un database con un netto miglioramento rispetto alla versione precedente. Partizionamento dei Dati Sono incluse numerose funzionalità di sicurezza tra cui cifratura, settaggi di sicurezza di default, regole per la gestione della password, granularità dei controlli dei permessi molto sottile e un modello di sicurezza esteso SQL Server Management Studio Le operazioni di indicizzazione possono essere eseguite on line, permettendo quindi attività contestuali di select ed update. Sicurezza È possibile gestire una funzionalità di restore a caldo, dove solo i dati in restore rimangono non disponibili. Indicizzazione Online Ampie funzionalità di database mirroring Il partizionamento dei dati è molto sofisticato ed attraverso funzioni native delle tabelle e degli indici è possibile gestire con semplicità grandi moli di dati. Replicatione È disponibile anche la modalità di replicazione per database mobili, utilizzando le caratteristiche peer-to-peer. E in grado di pubblicare anche database Oracle. 5 Valutazioni Tre gli elementi di valutazione su cui focalizzeremo la nostra attenzione, tutti relativi alla creazione e rilascio delle applicazioni Integrazione del Database con gli ambienti di sviluppo Sviluppo in architettura SOA (Service Oriented Architecture) Flessibilità di deployment in contesti diversi 6 Integrazione con ambienti di sviluppo Sul mercato sono presenti numerosi ambienti di sviluppo basati sulle più diverse piattaforme Si è valutato di non entrare nel dettaglio delle differenze specifiche tra le diverse piattaforme. Certamente l’attenzione primaria è focalizzata sul confronto tra Microsoft SQL Server 2005 ed Oracle 10g Release 2, tuttavia non troverete qui il dettaglio delle differenze tra i due sistemi. 7 Integrazione con ambienti di sviluppo Questo per due considerazioni: È sempre meglio vedere cosa fa di buono il sistema di cui parliamo piuttosto che cercare quello che fa “male” un altro sistema Il continuo aggiornamento dei sistemi rende obsoleta qualsiasi valutazione sulle caratteristiche specifiche, soprattutto quando queste siano importanti ma non “core”. Di certo ambedue i sistemi sono integrati con Visual Studio ed il .NET CLR (common language runtime) e presentano funzionalità avanzate di tutto rispetto. 8 Sviluppo di applicazioni SOA La prossima generazione di applicazioni basate sulla rete e di applicazioni distribuite si baserà completamente sui concetti della Service Oriented Architecture (SOA). Il SOA porterà con se profondi cambiamenti su come una applicazione è disegnata, sviluppata e rilasciata. I database hanno un ruolo significativo in questo tipo di architettura. SQL Server include numerose nuove caratteristiche per supportare lo sviluppo di applicazioni basate su SOA. 9 Sviluppo di applicazioni SOA Tra queste: XML: capacità di archiviare, interpretare, validare, interrogare e modificare efficientemente un documento XML nel database Web Services: capacità di esporre oggetti di database (tabelle, stored procedure ed altro) come web services direttamente dal Database. Accodamento di Messaggi Asincroni: capacità di garantire la spedizione di messaggi ad altre applicazioni distribuite per gestire problemi di system failures. Notifica di Eventi: capacità di distribuire eventi di business significativi ad un grande numero di periferiche, nella modalità attesa dal ricevente e in modo efficiente Notifica di Query: capacità per una applicazione di “sottoscrivere” determinati cambiamenti nel database che possano determinare un significativo cambiamento nei risultati di una specifica query che debbano essere notificati quando avvengono 10 Sviluppo di applicazioni SOA Sia Oracle che SQL Server offrono lo stesso insieme di caratteristiche che abilitano lo sviluppo di applicazioni basate su SOA. SQL Server ha tutte queste caratteristiche incluse nel server database e sono strettamente integrate In Oracle, molte API sono basate su standard Java (come il Java Messaging Service) che non forniscono valore aggiunto allo sviluppatore .NET 11 Flessibilità di deployment I Clienti chiedono di avere una flessibilità nel rilascio delle applicazioni rendendole indipendenti dalla singola versione di database. In particolare chi crea applicazioni, che devono essere vendute per un periodo di tempo sufficientemente lungo, chiede che queste siano indipendenti dalla specifica versione del database. Questo è particolarmente importante per gli ISV (Indipendent Software Vendors) Microsoft ha indirizzato la sua offerta di database in modo tale da andare incontro a questa specifica esigenza dei Clienti. 12 Flessibilità di deployment SQL Server offre edizioni multiple del database con un unico ambiente di sviluppo (.NET), tools (Visual Studio) e API per tutte le edizioni Come risultato uno sviluppatore ha necessità di creare una sola volta l’applicazione e può rilasciarla in ogni edizione di SQL Server – Mobile, Express, Workgroup, Standard o Enterprise Edition – senza dover modificare nulla. Di particolare interesse è la SQL Server Express Edition che è gratuita, anche se non destinata alle applicazioni mission critical. 13 Integrazione del Database con gli ambienti di sviluppo di applicazioni 14 Integrazione con ambienti di sviluppo SQL Server è completamente integrato con Visual Studio Uno sviluppatore, che utilizza Visual Studio con SQL Server, non ha bisogno di nient’altro, ha tutto quello che gli serve. Tutti i linguaggi che riferiscono alla piattaforma .NET sono disponibili Ambienti di sviluppo basati su linguaggi che non operano nel contesto di questa piattaforma (Es. Java) richiedono strumenti aggiuntivi causando una curva di apprendimento più elevata e una diminuzione della produttività complessiva dello sviluppatore. 15 Integrazione con .NET Il notevole successo della piattaforma .NET ha spinto molti fornitori a fornire un elevato livello di integrazione con il Microsoft .NET CLR. Così è stato sia per Microsoft che per Oracle, anche se ciascuna ha scelto strategie e modalità che differenziano i risultati 16 Integrazione con il Microsoft .NET CLR Microsoft hanno integrato il .NET CLR in SQL Server 2005. Questa integrazione ha effetti significativi sullo sviluppo delle applicazioni che utilizzano il database. Ora gli sviluppatori hanno la possibilità di sviluppare la logica di database in qualsiasi linguaggio tra quelli supportati dal .NET Framework. Non sono più confinati al Transact-SQL (con SqlServer) o PL/SQL (con Oracle). 17 Integrazione con il Microsoft .NET CLR Questo permette di sviluppare applicazioni con logica di gestione dei dati senza dover imparare un linguaggio specializzato. Inoltre lo sviluppatore di applicazioni può scegliere se rilasciare la logica applicativa a livello del database tier, di middle tier o in uno smart client. La logica può essere facilmente spostata di livello in qualsiasi momento. Le funzionalità della piattaforma .NET sono in costante aumento e lo sviluppatore di applicazioni basate sui dati può partire da un set di librerie e funzionalità piuttosto estese e non, come con Transact-SQL o PL/SQL, partendo da zero. 18 In-Process contro Out-Of-Process SQL Server 2005 gestisce il CLR “in process”. In-process hosting significa che il .NET CLR viene eseguito all’interno dello spazio di processo di SQL Server. Quindi, quando viene invocata la logica di database (stored procedures, triggers e userdefined functions) implementate come managed code, non si deve pagare l’overhead della comunicazione inter-processi. SQL Server ha integrato i propri modelli di threading e gestione della memoria con il .NET CLR, fornendo una ottima strada agli sviluppatori .NET per gestire un tuning fine delle applicazioni. 19 CLR 1.1 contro CLR 2.0 SQL Server 2005 supporta sia la versione 1.1 del CLR che la versione 2.0. Questo significa che, ad esempio, SQL Server 2005 è in grado di fornire la gestione in-process del provider ADO.NET 2.0 che crea una vista dei dati server-side completamente integrata con la memoria e la gestione dei thread del database server. 20 Supporto ai Tipi Oggetti del Database Con SQL Server si possono sviluppare direttamente diversi tipi di oggetti del database in codice managed e tra questi Stored procedures Triggers User-defined functions User-defined aggregates 21 Archiviazione degli Assemblies .NET SQL Server 2005 archivia gli assemblies .NET che implementano le stored procedures, triggers e funzioni nel database. Un vantaggio della soluzione proposta dall’approccio di SQL Server è legata alla manutenzione integrata Gli assemblies sono visti come oggetti di database e come tali gestiti nelle attività di backup, restore, replication e data mirroring. 22 Integrazione con Visual Studio Microsoft ha predisposto l’integrazione con Visual Studio, essendo questo l’IDE (Integrated Development Environment) più utilizzato per lo sviluppo di software. Così come ci si aspetta che questa integrazione cresca sempre più nel futuro. Microsoft ha incoraggiato i propri partners ad estendere Visual Studio con loro soluzioni. Oracle partecipa al programma di Microsft per l’integrazione di Visual Studio e ha integrato il suo Database attraverso Oracle Developer Tools for Visual Studio .NET. 23 Visual Studio Server Explorer SQL Server 2005 si integra con Visual Studio attraverso il SQL Server OLE DB provider che permette allo sviluppatore di interagire direttamente con il database attraverso il Server Explorer. Il Server Explorer permette agli sviluppatori di gestire vari servizi del database attraverso Visual Studio. Attraverso il Server Explorer uno sviluppatore può trovare molti dei tools presenti in SQL Server Management Studio Ad esempio uno sviluppatore può: Creare i diagrammi del database. Disegnare le tabelle. Vedere i dati delle tabelle. Creare ed eseguire le viste, le stored procedure, i trigger e le user-defined functions. Definire i constraints e gli indici 24 ADO.NET L’integrazione con Visual Studio permette allo sviluppatore di programmare graficamente. Ed ancora, ADO.NET include un provider ottimizzato che permette di accedere ai dati in SQL Server con una prestazioni elevate. Un programmatore Visual Studio può effettuare con drag e drop attività come SqlConnection, SqlCommand e SqlDataAdapter su una superficie di disegno e il wizards guida lo sviluppatore ad usare queste attività per connettersi a SQL Server. 25 Query Designer Visual Studio fornisce anche il Query Designer, un tool per creare le query e manipolare i dati nel database. Il driver espone anche le funzionalità di gestione dei diagrammi del database dove è possibile vedere e gestire le entità e le relazioni tra di loro. 26 Debug delle Stored Procedures Una quantità significativa di tempo dello sviluppatore viene spesa nel debug delle applicazioni. Di conseguenza i tools di debugging sono molto importanti per lo sviluppatore. Le caratteristiche di Visual Studio permettono di effettuare il debug del Transact-SQL entrando passo-passo all’interno della stored procedure. Non solo è possibile effettuare il debug linea per linea, ma è possibile anche veder i valori che assumono le variabili, così come è possibile inserire dei breakpoint nei quali fermare l’esecuzione della Stored Procedure 27 Progetti SQL Server L’integrazione con Visual Studio 2005 è migliorata ancora più dai SQL Server Project template. Quando si ha un Progetto SQL Server è possibile aggiungere uno qualsiasi dei template disponibili con l’inserimento automatico del codice per stored procedure, trigger, aggregati, user-defined function e user-defined type. Dopo aver creato un progetto si è in grado di effettuare il debug di tutto il codice, passo per passo, inserire il break-point o visualizzare le variabili. È possibile navigare da un linguaggio all’altro, tanto per capirci posso iniziare il debug in C# e proseguire con il passo successivo in TransactSQL per poi andare in Visual Basic.NET. 28 Progetti SQL Server Inoltre Visual Studio permette di effettuare automaticamente il deploy del codice sul server SQL Server, quello che deve fare lo sviluppatore è semplicemente configurare il progetto per il deployment. Sostanzialmente lo sviluppatore utilizza lo stesso strumento per sviluppare e fare il debugging degli oggetti database. Visual Studio 2005 prevede anche alcune altre utili caratteristiche come l’evidenziazione automatica per la sintassi e l’ IntelliSense® in Transact-SQL. 29 Business Intelligence SQL Server dispone di una ampia piattaforma per Business Intelligence che include: SQL Server Analysis Service per l’analisi dei dati (con la creazione e gestione dei Cubi) e funzionalità di data mining. SQL Server Integration Services per l’estrazione, la trasformazione ed il caricamento di dati esterni SQL Server Reporting Services per il disegno e la generazione di report con la possibilità di estrarli in diversi formati di uso comune come Microsoft Excel, HTML e Adobe PDF. Visual Studio contiene tutti gli strumenti di gestione e di sviluppo necessari allo sviluppo e gestione delle applicazioni di Business Intelligence con SQL Server. 30 Analysis Service SQL Server offre il Business Intelligence Development Studio per aiutare gli sviluppatori a costruire le applicazioni analitiche e di data mining. Il Business Intelligence Development Studio utilizza l’abituale interfaccia di Visual Studio permettendo così una curva di apprendimento molto ridotta. Gli Analysis Services consistono in due funzionalità principali e complementari: On-Line Analytical Processing (OLAP) e Data Mining. 31 Analysis Services Unified Dimensional Model Combina le migliori caratteristiche dei modelli relazionali e OLAP. Proactive caching Permette di operare con applicazioni a bassa latenza con costi di gestione dei dati vicino a zero. Key Performance Indicator (KPI) È un framework che fornisce un semplice meccanismo definito sul server per la definizione di misure aziendali. una KPI consiste nell’espressione di valori, goal, stato corrente e tendenza visualizzati semplicemente in modalità grafica. Traduzioni Fornisce un semplice meccanismo, controllato centralmente, per archiviare e presentare dati analitici agli utenti nella loro lingu preferita. Un database analitico può essere presentato il lingue multiple. 32 Analysis Services Scripts MDX La sintassi è semplificata ed è possibile effettuare il debug passo-a-passo Stored procedures È possibile creare delle routine esterne in linguaggi basati su CLR. Attraverso Wizard è possibile costruire facilmente: Semi-additive measures, Time Intelligence, Account intelligence, Financial Aggregations, Currency Conversion e Time dimension generation Data Definition Language è in XML. Il Metadata Repository è in file XML Web services: XML for Analysis (XML/A) L’XML/A è un protocollo nativo, basato su standard per la comunicazione con il server degli Analysis Services. Attraverso questo protocollo ogni server è automaticamente un Web Service. Il calcolo è centralizzato Tutti i calcoli sono eseguiti sul server con il vantaggio di non aver nessun carico sul client e migliorare le performance 33 Analysis Services Sicurezza I permessi amministrativi sono a grana fine, con possibilità di separare i permessi per i diversi oggetti del database e per distinguere tra la funzione di disegno delle modifiche e di processo. I cubi locali sono cifrati Le comunicazioni client/server sono cifrate e firmate per proteggere i pacchetti da ogni intrusione Server trace events Sono disponibili strumenti per le attività di audit come il SQL Server Profiler. Le prestazioni per i calcoli La cache sui calcoli su server è shared tra i diversi client L’ottimizzatore delle query è in grado di “riscrivere” una query per migliorarne le prestazioni. Processamento parallelo e partizionato 34 Data Mining Il Data Mining è una tecnologia di business intelligence che aiuta a costruire complessi modelli analitici e supporta l’integrazione di questi nelle operazioni di business. L’obiettivo primo del Data Mining è di fornire risultati quotidiani a persone che non hanno alcun interesse ad entrare nelle complessità computazionali dei sistemi di database, ma desiderano solo risultati di business da capire ed analizzare. Il data mining si basa sull’utilizzo di algoritmi. Una serie di algoritmi vengono forniti nell’installazione È possibile altresì estenderli con algoritmi proprietari scritti su misura. 35 Data Mining - Algoritmi Microsoft Decision Trees È primariamente un algoritmo di classificazione e opera bene per modellazione predicativa sia per attributi discreti che continui. Microsoft Naïve Bayes Calcola le probabilità per ogni possibile stato degli attributi di input dato ogni stato degli attributi predicati Microsoft Clustering Permette di raccogliere i record nel dataset in cluster che identificano caratteristiche simili. Microsoft Association È basata su un algoritmo a priori e fornisce un efficiente metodologia per reperire le correlazioni N-way in un grande database. Microsoft Sequence Clustering Combina analisi di sequenza e clustering per esplorazione e predicazione dei dati. Microsoft Time Series Crea modelli che possono essere usati per predire una o più variabili continue (ad esempio i valori di stock exchange). Microsoft Neural Net, Usato per esplorazione, classificazione e predizione di dati.36 Reporting Services SQL Server Reporting Services utilizza l’ambiente di disegno dei report di Visual per creare dei report complessi ed evoluti che possono essere rilasciati in diversi formati come PDF, Microsoft Excel o HTML. I Reporting Services sono strettamente integrati con Visual Studio e con il .NET Framework. La generazione dei report abilita gli sviluppatori ad incapsulare le complessità della logica in assemblies usati per calcolare i valori nel report. Questo permette agli sviluppatori Visual Studio di riutilizzare le componenti di business logic. Possono essere utilizzati sia per produrre report basati su eventi schedulati su una base temporale ben definita, sia per produrre report su richiesta diretta degli utenti. 37 Reporting Services Reporting Services consistono in Un insieme completo di strumenti per creare, gestire e visualizzare report Un motore per ospitare e processare i report Una architettura estensibile ed interfacce aperte per integrare report in soluzioni applicative Abilitare utenti non-programmatori alla creazione o modifica di propri report Ampia quantità di data source supportati Microsoft SQL Server, Microsoft Analysis Services, OLE DB, ODBC Strumenti di creazione flessibili Report Designer, Report Definition Language (RDL) basato su XML Formati di report flessibili Freeform, tabelle, matrici, grafici, filtri per parametrizzare i report a runtime, ordinamento e raggruppamento, drillthrough, report collegati Editor di Query flessibile Strumenti di generazione delle query SQL e query MDX Escuzione modulare dei report Il Rendering è un processo separato dalla query, lo stesso report può essere reso in diversi formati, l’esecuzione può essere a richiesta o schedulata. Disegno dei report per gli utenti finali Report Builder permette agli utenti finali la creazione di report ad hoc 38 Integration Services Gli Integration Services forniscono un ambiente grafico in Visual Studio per creare workflows per estrarre, caricare e trasformare dati (ETL). Integration Services sono stati significativamente migliorati per SQL Server 2005 per fornire un ambiente ETL migliore, più veloce e più flessibile attraverso l’utilizzo di Visual Studio. Gli Integration Services, inoltre, sono completamente estensibili con l’utilizzo di codice scritto in qualsiasi linguaggio che sia in grado di utilizzare il .NET Framework cosicché ogni sviluppatore può sviluppare, come meglio preferisce, per creare i propri oggetti. 39 Integration Services Si utilizza l’interfaccia grafico del Business Intelligence Development Studio. Il controllo di flusso ed il flusso di dati sono separati Le variabili del Package sono definite e visibili È possibile creare sistemi ETL complessi con package, subpackage, variabili, etc…. I packages sono archiviati in file XML Regole di precedenza possono essere definite per controllare nel package eventi di successo, errore o completamento Funzionalità di Loop come For, ForEach e Sequence. Le attività di comunicazione includono il Message queue e l’invio delle mail Possono essere gestite sorgenti, trasformazioni e destinazioni multiple dei dati attraverso le data flow pipeline. È possibile inserire dei Breakpoints nei flussi dei dati 40 Sviluppo di applicazioni basate su SOA (Service Oriented Architecture) 41 Sviluppo di applicazioni basate su SOA Supporto all’XML XML è lo standard di fatto per lo scambio di una grande quantità di tipi di dati nelle applicazioni attuali. È anche la tecnologia centrale dell’architettura per applicazioni che si basano su SOA e Web services. I database devono essere in grado di supportare questo tipo di applicazioni abilitando l’archiviazione, l’interrogazione e l’aggiornamento dei documenti XML. 42 Sviluppo di applicazioni basate su SOA Tipi Nativi XML e XQuery SQL Server supporta i tipi nativi di XML, ovvero è in grado di capire se una colonna contiene un documento XML. Un documento XML viene preventivamente validato, attraverso lo schema XML, prima di essere archiviato nel database. Permette di effettuare query sui documenti XML archiviati attraverso il linguaggio di query XQuery così come con XPATH. 43 Sviluppo di applicazioni basate su SOA Indicizzazione L’indicizzazione è essenziale per una efficiente e veloce esecuzione delle query. SQL Server 2005 supporta indici B*Tree sugli elementi, valori e path di ogni campo XML. L’indicizzazione velocizza significativamente l’esecuzione delle query. SQL Server 2005, inoltre, supporta altri indici per velocizzare altri tipi di query che permettono di ritrovare i dati come i PATH indexes, PROPERTY indexes e VALUE indexes. 44 Sviluppo di applicazioni basate su SOA Aggiornamento dell’XML La versione standard di XQuery, attualmente, definisce solo il supporto per lettura/fetching per il contenuto XML. Non definisce come l’XML contenuto nel Database possa essere aggiornato. 45 Sviluppo di applicazioni basate su SOA L’approccio standard è quindi: Rimpiazzare l’intero documento XML: Spesso nei database il documento XML è archiviato come un oggetto text, questo costringe il motore del database di sostituire l’intero file anche per cambiare un singolo campo. Spezzettare il documento XML: il documento XML viene spezzettato ed archiviato in un insieme di oggetti relazionati nel database. Questo richiede che lo sviluppatore comprenda come il documento è mappato su una struttura relazionale. SQL Server 2005 ha gestito questo problema estendendo l’XQuery per le operazioni di update, includendo un linguaggio per aggiungere o eliminare porzioni della struttura ed aggiornare i valori scalari. Questo permette di lavorare con facilità con i tipi dati di XML. 46 Sviluppo di applicazioni basate su SOA XML schema collections e schema evolution SQL Server permette di archiviare documenti multipli (non correlati) nella stessa colonna XML. Questa caratteristica è abilitata con la creazione di una XML SCHEMA COLLECTION che consiste in uno o più schemi XSD. Una collezione di schemi XML di SQL Server definisce il tipo di documenti XML che possono essere archiviati in una colonna XML. 47 Sviluppo di applicazioni basate su SOA XML schema collections e schema evolution Questa caratteristica fornisce una interessante via per migrare i dati XML. Quando uno schema evolve nel tempo creando un nuovo schema, è possibile evolvere anche quello contenuto nella collezione di schemi Una istanza XML esistente continua ad esistere come prima, così come le istanze conformate al nuovo schema possono essere aggiunte alle colonne XML ed essere indicizzate. Un utente può aggiungere nuovi componenti top-level di schema XML ed elementi top-level in uno schema esistente. 48 Supporto per i Web Services SQL Server 2005 fornisce il supporto nativo per i Web services. Può agire come un Web Service Provider così come un Web Service Consumer. Web Service Provider: SQL Server fornisce un meccanismo molto semplice e facile da utilizzare per permettere ad applicazioni esterne di invocare stored procedures, comandi Transact-SQL e funzioni user-defined come Web Services usando protocolli standard come il SOAP attraverso HTTP. Fornendo un accesso via SOAP/HTTP, anche i clients leggeri (come i browser Web) possono accedere al database in quanto non è necessaria alcuna libreria o componente per leggere i dati. 49 Supporto per i Web Services Per gli sviluppatori abilitare l’accesso via SOAP/HTTP è molto facile. Tutto quello che è necessario fare è creare un endpoint HTTP e specificare quale oggetto database si vuole esporre. SQL Server si occupa di fare tutto quello che è necessario. Autenticazione e sicurezza sono integrate con SQL Server e solo gli utenti autorizzati possono invocare le stored procedure. SQL Server utilizza il driver https.sys di Microsoft Windows Server™ 2003 in kernel mode e quindi non richiede che IIS sia installato. 50 Supporto per i Web Services Web Service Consumer SQL Server è integrato con il .NET CLR e quindi è estremamente semplificato l’accesso a Web Services esterni direttamente dal database Combinato con Visual Studio, SQL Server è uno strumento ideale per lo sviluppo di applicazioni SOAbased. Altri meccanismi come quelli che riferiscono a strumenti come JPublisher operano costruendo delle “wrapper” class Java che, pur essendo una strada interessante per la soluzione del problema, ne complicano la realizzazione. Questa soluzione richiede, comunque, di utilizzare un Application Server come prodotto aggiuntivo. SQL Server non richiede altre applicazioni, né Application Server né Web Server. 51 Supporto per Asynchronous Messaging Una affidabile, asincrona comunicazione tra unità di esecuzione autonome di programmi è una tecnologia chiave per sviluppare applicazioni SOA-based. Tradizionalmente venivano utilizzati i sistemi di message queuing come gli IBM MQ Series (ora conosciuti come WebSphere MQ). Tuttavia avere i sistemi di message queuing integrati nel database presenta numerosi vantaggi. SQL Server ha integrato un sistema di message queuing asincrono ed affidabile: il SQL Server Service Broker. 52 Supporto per Asynchronous Messaging Il SQL Server Service Broker Garantisce la distribuzione del messaggio al destinatario esattamente una sola volta. Abilita sia il mittente che il destinatario ad esistere nello stesso database, nello stesso computer o, in alternativa, distribuiti nella rete. Utilizza un contenitore persistente dove far archiviare i messaggi. Le code sono archiviate completamente nelle tabelle di database. SQL può accedere alle code ed il messaggio può essere trattenuto nella coda. 53 Supporto per Asynchronous Messaging Il sistema di gestione delle code è integrato nel database e non richiede un coordinatore esterno tra il sistema di gestione delle code e il database. Il Service Broker fornisce un livello di astrazione piuttosto elevato come dialogs, contracts e services. Gli sviluppatori non devono gestire le operazioni di basso livello della gestione delle code. Il Service Broker supporta anche l’attivazione automatica del programma di servizio 54 Servizi di Event Notification Microsoft SQL Server Notification Services permette agli sviluppatori di sviluppare e rilasciare con grande facilità applicazioni che generano ed inviano notifiche di eventi agli utenti. Le notifiche sono messaggi personalizzati e temporizzati che possono essere inviati a molte diverse devices. Le notifiche riflettono le preferenze del sottoscrittore. Il sottoscrittore inserisce una sottoscrizione per esprimere l’interesse per una informazione. Ad esempio: “avvisami quando il valore di magazzino raggiunge 70.000 euro” o “avvisami quando il documento di budget del mio team è stato scritto e completato” 55 Servizi di Event Notification Una notifica può essere generata ed inviata ad un utente non appena l’evento avviene o può essere generata con scadenze predefinite specificate dal singolo utente. La sottoscrizione specifica quando la notifica deve essere fatta ed inviata. La notifica può essere inviata a numerose diverse devices. Ad esempio una notifica può essere inviata al telefono cellulare di un utente, ad un PDA (Personal Digital Assistant), Microsoft Windows Messenger o da un account di posta elettronica. 56 Servizi di Query Notification SQL Server 2005 ha introdotto il supporto alla notifica delle SQL Server queries. Si può utilizzare questo supporto per inviare un comando a SQL Server, e richiedere che venga attivata una notifica se l’esecuzione del comando produce risultati diversi da quelli iniziali. Si utilizza per verificare se dei dati soggiacenti un oggetto sono cambiati. Il comando viene inviato al server attraverso qualsiasi API client come ADO.NET, OLE DB, Open Database Connectivity (ODBC), Microsoft Active Data Objects (ADO) o SOAP e può includere una tag che richiede una notifica. 57 Servizi di Query Notification Per ogni comando che viene eseguito come parte della richiesta, il server crea una "Notification Subscription" che intercetta ogni volta che il comando viene incluso in una richiesta. La notifica viene inviata attraverso una coda del SQL Service Broker che l’applicazione può chiamare e usa i servizi di attivazione o i blocking statements che ritornano se la notifica è disponibile. La Query notifications è molto utile per abilitare una cache dei risultati nelle applicazioni come i Web sites database-driven. 58 59