UNIVERSITA’ DEGLI STUDI DI MODENA E REGGIO EMILIA FACOLTA’ DI INGEGNERIA – SEDE DI MODENA Corso di Diploma di Laurea in Ingegneria Informatica Valutazione delle Tecnologie XML, Web Service per l'interoperabilità tra DBMS relazionali Relatore: Chiar.mo Prof. Sonia Bergamaschi Tesi di laurea di: Yuri Debbi Correlatori Parole Chiave RDBMS Benchmark SQL Server 2000 MySQL XML Web Service Ing. Lorenzo Canali Ing. Daniele Bergonzini Anno Accademico 2002/2003 OutLine della presentazione La presentazione si articola in tre parti principali: • RDBMS Benchmark • XML e Web Service • Conclusioni Le tecnologie studiate in questo progetto sono state tutte integrate e sperimentate all’interno di applicazioni Webdatabase implementate tramite la tecnologia .NET SQL Server 2000 VS MySQL 4.0.12 Licenza: Commerciale GPL(Open Source) o Commerciale Piattaforme: Windows XP/NT/2000 Linux, Solaris, DEC, BSDI, Windows 95/98/NT/2000/XP, MacOS, AIX, OS/2, Tru64, FreeBSD, NetBSD, OpenBSD. Interfacce: ODBC, OLEDB, JDBC, C/C++/C#, PHP ODBC, JDBC, C/C++/C#, PHP Indici e Lock: B – Tree, Lock a Livello di Riga. B - Tree, Lock a Livello di Riga. Strumenti: Trigger, Stored Procedure, Schemi, Viste e Diagrammi Nessuno Sicurezza: ACID Compliant, READ-UNCOMMITTED READE-COMMITTED REPEATABLE-READ SERIALIZABLE Con InnoDB e BDB ACID Compliant, READ-UNCOMMITTED READE-COMMITTED REPEATABLE-READ SERIALIZABLE Installazione: Medie Difficoltà (270 MB) Facile (69 MB) Note: Elevata Sicurezza, numerosi tool per lo sviluppo, interfaccia intuitiva e sicura, Integrazione completa dell’ XML, possibilità di Creare funzioni SQL proprie. Elevata velocità, possibilità di scegliere le tabelle più adatte (ISAM, MyISAM, Merge, HEAP, InnoDB, BDB), ottima gestione degli utenti e delle risorse, uso di XML Database Benchmark - Costi SQL Server 2000 è un RDBMS che viene attualmente distribuito dalla Microsoft che fornisce solo licenze commerciali: • Licenza Server: 830,00 €. • Licenze Client: 182,00 € ognuna. MySQL 4.0.12 è Open Source, scaricabile dalla rete e offe vari tipi di licenza: GPL, LGPL o Commerciale. • Ricerche senza scopo di lucro: Gratuito. • Uso senza modifiche della sorgente: Gratuito. • Con modifiche alla sorgente : 440,00 € per la versione Transaction Safe. 220,00 € per la versione non Transactin Safe. Database Benchmark - SQL - Al contrario di SQL Server 2000, MySQL 4.0.12 non supporta i seguenti costrutti SQL92: • SELECT innestate. • IN e NOT IN con parametro una SELECT. • EXIST e NOT EXIST. Questa mancanza rende l’ interrogazione del database molto meno intuitiva, più prolissa e molto più difficile per un progettista che deve quindi avere ottime conoscenze di algebra relazionale per implementare, costrutti di interrogazioni ormai di uso comune sia a livello accademico che negli ambienti lavorativi. Database Benchmark - SQL - Interrogazione SQL Server 2000 Selezionare tutte le istanze di Tab1 che contengono tutte le istanze di Tab3 dove il campo CC è uguale al campo CC della tabella Tab2 e il campo CD di Tab2 è uguale a ‘D1’. SELECT * Questa interrogazione può essere riferita a tre tabelle: studenti, professori e loro corsi ed esami sostenuti. FROM Tab1 WHERE NOT EXISTS ( SELECT * Selezionare tutti gli studenti che hanno sostenuto tutti gli esami relativi ai corsi del docente D1. FROM Tab2 WHERE CD="D1" AND NOT EXISTS (SELECT * FROM Tab3 WHERE Tab3.Matr=Tab1.Matr AND Tab3.CC=Tab2.CC)) Database Benchmark - SQL - Relativa interrogazione MySQL 4.0.12 CREATE TABLE temptab ( )TYPE=HEAP SELECT Tab1.matr FROM Tab1,Tab2 Creo una tabella temporanea e la riempio con i dati presi da una SELECT che implementa il costrutto EXIST. LEFT JOIN Tab3 ON Tab3.matr=Tab1.matr AND Tab3.CC=Tab2.CC WHERE Tab2.CD='D1' AND Tab3.matr IS NULL AND Tab3.CC IS NULL; SELECT * FROM Tab1 LEFT JOIN temptab ON Tab1.MATR=temptab.matr WHERE temptab.matr IS NULL; DROP TABLE temptab; Elimino la tabella temporanea. Eseguo una select facendo la differenza fra gli studenti che non hanno dato tutti gli esami di un professore e il totale egli studenti ottenendo il risultato voluto. Database Benchmark - Velocità Una delle caratteristiche fondamentali per la scelta di un RDBMS è la velocità di risposta alle principali interrogazioni SQL; per questo sono state esaminate le risposte di: • SQL Server 2000 • MySQL 4.0.12 Per un miglior confronto sono stati messi in relazione con altri due RDMBS comunemente usati quali: • Oracle 9.2.0.1 • DB2 6.1. Sono state verificate le reazioni dei RDBMS con carichi di lavoro che variano da un minimo di 500 Record Coinvolti ad un massimo di 150000 Record. Database Benchmark - Velocità 500,00 450,00 400,00 -- INSERIMENTO -- Nell’inserimento MySQL risulta essere fino al 57% più veloce di SQL Server 2000 che quando raggiunge i 100000 Record inseriti pianta l’applicazione il 40% delle volte. 350,00 300,00 250,00 200,00 150,00 100,00 50,00 0,00 (Sec) 1 500 2 3 4 25000 5 SQL Server 2000 DB2 Persona ED 6.1 6 7 150000 9 8 MySQL Server 4.0.12 Oracle 9.2.0.1 16 Fino alla soglia dei 25000 record modificati, MySQL risulta essere fino all’88% più veloce di SQL Server 2000; ma superata questa solia, MySQL rallenta bruscamente arrivando ad essere fino al 37% più lento di SQL Server. Il divario diminuisce con l’aumentare del volume di carico. 14 -- MODIFICA -- 12 10 8 6 4 2 0 1 (Sec) 500 2 3 4 25000 5 6 7 SQL Server 2000 MySQL 4.0.12 DB2 Personal ED 6.1 Oracle 9.2.0.1 8 9 150000 Database Benchmark - Velocità 4 3,5 -- SELEZIONE -- 3 Fino ai 25000 record selezionati, le prestazioni dei due RDBMS sono simili; ma superata questa solia, MySQL rallenta drasticamente arrivando ad essere fino al 86% più lento di SQL Server. 2,5 2 1,5 1 0,5 0 1 500 2 3 4 250005 SQL Server 2000 DB2 Personal ED 6.1 6 7 9 150000 8 MySQL Server 4.0.12 Oracle 9.2.0.1 14 Fino ai 25000 record selezionati, MySQL è un po più veloce, ma superata questa solia, MySQL rallenta arrivando ad essere il 90% più lento di SQL Server. Il divario fra i due RDBMS diminuisce con l’aumentare del carico fino ai 50000 record selezionati dove SQL Server rallenta per poi perdere ancora velocità raggiunti i 75000 record selezionati. Il distacco fra i due RDBMS diventa piccolissimo se si lavora con 150000 record. 12 -- SELEZIONE – 10 (da JOIN a 3 Vie) 8 6 4 2 0 1 500 2 3 425000 5 SQL Server 2000 DB2 Personal ED 6.1 6 7 MySQL Server 4.0.12 Oracle 9.2.0.1 8 150000 9 XML e XSD Schema L’ XML fornisce uno strumento dinamico, semplice e strutturato per scambiare dati in modo formale e, creando documenti leggibili tanto dagli elaboratori che dagli utenti; è possibile vedere un documento XML come un albero a nodi che rappresenta tramite la nidificazione dei TAG la complessità dell’ informazione. L’ XSD Schema rende univocamente interpretabili i dati scambiati tramite un documento XML fornendo potenti strumenti di controllo: • Definizione di tipi complessi e controllo sulla posizione e sul numero di volte che possono apparire nel documento. • Annotazioni e commenti per rendere leggibile il documento. • Introduzioni di elementi Nulli. • Definizione di elementi Unici. • Definizione di Chiavi e Relazioni. XML come Database L’ XML è dunque un formato rigoroso e sufficientemente libero da permettere ad applicativi molto differenti tra loro di scambiarsi dati e informazioni senza nessuna difficoltà. Creando documenti del tipo: <?xml version="1.0" standalone="yes"?> <DATAPACKET> <ROWDATA> <ROW ID="1" datainserimento="12/06/2002 16.02.00" multiportal="1"/> <ROW ID="2" datainserimento="01/30/2003 10.35.00" multiportal="1"/> </ROWDATA> </DATAPACKET> E’ possibile spingersi oltre e utilizzare l’ XML affiancato dall’ XSD Schema come strumenti per la gestione dei dati; si deve tenere conto però che un documento XML può essere considerato un database solo nel senso più ristretto del termine; cioè come collezione di dati. Utilizzo di un Database XML in .NET con l’uso del DOM (Document Object Model) Acquisizione Documento Dati XML Indicizzazione del DataSet DOM DataSet Scrittura Dati A questo punto è possibile scorrere e modificare i dati con l’uso di interrogazioni XPath del tipo : MioDoc.DocumentElement.SelectNodes("//T_Software[@ID<2]"); Seleziono gli elementi con ID<2 della tabella T_Software Vantaggi: Svantaggi: • Velocità e potenza nelle selezioni dello strumento XPath. • Codice complesso; • Intuitività dello Strumento XPath. • Possibilità di una gestione separata dei dati selezionati. • Ridondanza dei Dati; • Duplicazione dell’intero DataSet; • Duplicazione dei Dati delle Selezioni in tabelle temporanee. Utilizzo di un Database XML in .NET con l’uso dell’Oggetto DataSet di .NET Acquisizione Dati Modifica Dati Documento DataSet XML Funzioni ASP .NET Scrittura Dati Lavorando con il DataSet (rappresentazione nella cache dei dati) saranno quindi necessarie funzioni software che implementino dei cicli per leggere e modificare i dati dalla collezione di tabelle (DataTable) del Dataset. Vantaggi: Svantaggi: • Nessuna duplicazione dei Dati una volta importati in memoria. • Codice prolisso. • Ottima implementazione di controlli software sull’integrità dei dati. • Codice Strutturato. • Numerosi cicli a livello di codice per sostituire le interrogazioni SQL. XML come Database – Conclusioni Vantaggi: Svantaggi: • Bassi Costi • Mancanza di un linguaggio • Utilizzo estremamente semplice. • Elevata organizzazione dei Dati. • Ottima Standardizzazione. • Elevata interoperabilità. • Elevata Velocità per moli di dati medio piccole. espressivo come SQL. • Scarsa protezione dei dati. • Nessuna gestione della Multiutenza. • Mancanza di Schemi, Viste, Trigger o Stored Procedure. Consigli per lo sviluppo: Sono percorribili entrambe le strade precedentemente illustrate, ma risulta preferibile, utilizzare la soluzione sviluppata appoggiandosi completamente e solamente sull’oggetto DataSet del Framework .NET. Questa implementazione rende più arduo il compito degli sviluppatori che dovranno utilizzare il codice sorgente per implementare molti controlli e molte funzioni che si occupino della gestione dei dati e del loro recupero all’interno del database rendendo così, il codice più prolisso e meno intuitivo (rispetto alla soluzione che utilizza XPath); questi sforzi però saranno premiati da un oculato utilizzo delle risorse e quindi da ottime prestazioni in termini di velocità. Linguaggio a TAG, in formato XML che descrive il Web Service come collezione di endpoint in grado di scambiarsi messaggi XML Web Service Web Catalogazione e recupero degli XML Web Service presenti sul Web UDDI Recupero informazioni sul Web Service Codice WSDL del Web Service Un XML Web Service può essere creato in un qualsiasi linguaggio o scritto direttamente tramite WSDL. Funziona sia come un motore di ricerca che come un applicaione interrogabile durante il Runtime. Se si usa il Framework .NET sono presenti appositi oggetti che rendono intuitivo lo sviluppo di questi servizi anche per chi non è esperto di WSDL o di XML Web Service in generale. Il Framework .NET fornisce anche gli strumenti per l’interrogazione dell’UDDI durante il Runtime. Applicazione che usa il Web Service Tool del Framework .NET Classe Proxy C# Conclusioni Il progetto che intendevo realizzare può dirsi concluso: • Approfondimento di un RDBMS Commerciale quale SQL Server 2000 Sono state soprattutto esaminate le nuove potenzialità nell’utilizzo dell’XML. • Valutazione di un alternativa Open Source data da MySQL 4.0.12. E’ stata creata un interfaccia completa che permette ad applicazioni web complesse di adattarsi alla differente tecnologia per i loro Database. • Esame approfondito delle differenze fra i due RDBMS. Sono state esaminate nel dettaglio tutte le differenze fra le due piattaforme: velocità, costi, capacità espressiva delle funzioni proprietarie, aderenza agli standard, metodi di connessione, sicurezza e affidabilità. • Studio approfondito dell’ XML come metodo per trasferire dati e come “database” per piccole applicazioni. E’ stata esaminata nel dettaglio la capacità espressiva dell’XML che lo rende estremamente adatto nel trasferimento dati, garantendo l’interoperabilità fra applicazioni e RDBMS. E’ stata inoltre valutata e sperimentata la possibilità di usare documenti XML come “database” per piccole applicazioni Web. • Creazione e utilizzo di XML Web Service.