Valutazione delle Tecnologie XML, Web Service 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: Tesi di laurea di: Chiar.mo Prof. Yuri Debbi Sonia Bergamaschi Correlatori Parole Chiave RDBMS Benchmark Ing. Lorenzo Canali SQL Server 2000 MySQL Ing. Daniele Bergonzini XML Web Service 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 MySQL 4.0.12 VS 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 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 * FROM Tab1 WHERE NOT EXISTS ( SELECT * FROM Tab2 WHERE CD="D1" AND NOT EXISTS (SELECT * FROM Tab3 WHERE Tab3.Matr=Tab1.Matr AND Tab3.CC=Tab2.CC)) Questa interrogazione può essere riferita a tre tabelle: studenti, professori e loro corsi ed esami sostenuti. Selezionare tutti gli studenti che hanno sostenuto tutti gli esami relativi ai corsi del docente D1.
Database Benchmark - SQL - Relativa interrogazione MySQL 4.0.12 CREATE TABLE temptab ( )TYPE=HEAP SELECT Tab1.matr FROM Tab1,Tab2 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; Creo una tabella temporanea e la riempio con i dati presi da una SELECT che implementa il costrutto EXIST. 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. Elimino la tabella temporanea.
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à - -- 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. 500 25000 150000 (Sec) 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. -- MODIFICA -- 500 25000 150000 (Sec)
Database Benchmark - Velocità - -- SELEZIONE -- 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. 500 25000 150000 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. -- SELEZIONE – (da JOIN a 3 Vie) 150000 500 25000
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: 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. <?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>
Indicizzazione del DataSet Utilizzo di un Database XML in .NET con l’uso del DOM (Document Object Model) Acquisizione Dati Indicizzazione del DataSet DOM Documento XML 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: Velocità e potenza nelle selezioni dello strumento XPath. Intuitività dello Strumento XPath. Possibilità di una gestione separata dei dati selezionati. Svantaggi: Codice complesso; 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 Utilizzo di un Database XML in .NET con l’uso dell’Oggetto DataSet di .NET Acquisizione Dati Modifica Dati Documento XML Funzioni ASP .NET DataSet 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: Nessuna duplicazione dei Dati una volta importati in memoria. Ottima implementazione di controlli software sull’integrità dei dati. Codice Strutturato. Svantaggi: Codice prolisso. Numerosi cicli a livello di codice per sostituire le interrogazioni SQL.
XML come Database – Conclusioni - Svantaggi: Mancanza di un linguaggio espressivo come SQL. Scarsa protezione dei dati. Nessuna gestione della Multiutenza. Mancanza di Schemi, Viste, Trigger o Stored Procedure. Vantaggi: Bassi Costi Utilizzo estremamente semplice. Elevata organizzazione dei Dati. Ottima Standardizzazione. Elevata interoperabilità. Elevata Velocità per moli di dati medio piccole. 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à.
Applicazione che usa il Web Service XML Web Service Linguaggio a TAG, in formato XML che descrive il Web Service come collezione di endpoint in grado di scambiarsi messaggi Catalogazione e recupero degli XML Web Service presenti sul Web Recupero informazioni sul Web Service Codice WSDL del Web Service Web UDDI Funziona sia come un motore di ricerca che come un applicaione interrogabile durante il Runtime. Un XML Web Service può essere creato in un qualsiasi linguaggio o scritto direttamente tramite WSDL. 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. Tool del Framework .NET Classe Proxy C# Applicazione che usa il Web Service
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.