350 likes | 627 Views
Relatore Chiar.mo Prof. Sonia Bergamaschi. Tesi di Laurea di Mauro Verardi. UNIVERSITA’ DEGLI STUDI DI MODENA E REGGIO EMILIA Facoltà di Ingegneria – Sede di Modena Corso di laurea in Ingegneria Informatica. Progetto MOMIS : I wrapper DB2/ODLi3 e Oracle/ODLi3. MOMIS:.
E N D
Relatore Chiar.mo Prof. Sonia Bergamaschi Tesi di Laurea di Mauro Verardi UNIVERSITA’ DEGLI STUDI DI MODENA E REGGIO EMILIA Facoltà di Ingegneria – Sede di Modena Corso di laurea in Ingegneria Informatica Progetto MOMIS : I wrapper DB2/ODLi3 e Oracle/ODLi3
MOMIS: Mediator envirOnment for Multiple Information Sources Obiettivo: Realizzazione di uno strumento semi-automatico per l’integrazione di sorgenti eterogenee e distribuite Approccio adottato:semantico e virtuale Architettura di riferimento I3 (ARPA) Intelligent Integration of Information
SERVIZI DI WRAPPING (I3) • Comunicazione • Trasformazione interfaccia delle chiamate • Gestione del traffico di eventi • Trasformazione di chiamate di metodi e funzioni • Ristrutturazione dei dati • Traslazione tra differenti formati di dati • Trasformazione di metadati • Trasformazione del Comportamento • Modifica della semantica • Modifica dei protocolli • Traslazione tra differenti linguaggi di manipolazione dati
SERVIZI DI WRAPPING (I3) • Comunicazione • Trasformazione interfaccia delle chiamate • Gestione del traffico di eventi • Trasformazione di chiamate di metodi e funzioni • Ristrutturazione dei dati • Traslazione tra differenti formati di dati • Trasformazione di metadati • Trasformazione del Comportamento • Modifica della semantica • Modifica dei protocolli • Traslazione tra differenti linguaggi di manipolazione dati
MOMIS: Mediator envirOnment for Multiple Information Sources
MOMIS: Mediator envirOnment for Multiple Information Sources
MOMIS: Mediator envirOnment for Multiple Information Sources
MOMIS: Mediator envirOnment for Multiple Information Sources
I WRAPPER NEL SISTEMA MOMIS: Interfaccia Wrapper • Implementato in JAVA • Oggetto CORBA • Dichiara le funzioni • String getDescription() • String getDescriptionXml() • String getSourceName() • WrapperRS runQuery() • String getType() Wrapper già disponibili in MOMIS: Wrapper XML Wrapper JDBC-ODBC-MS_Access Wrapper JDBC generico Wrapper Microsoft SQL Server
LA TECNOLOGIA JDBC: Java DataBase Connectivity • Stabilire una connessione • Inviare query • Elaborare i risultati ottenuti Interfaccia DatabaseMetadata • Nomi delle tabelle • Nomi e tipi dei campi delle tabelle • Chiavi primarie • Foreign key API JAVA implementate dai Driver
I DRIVER ORACLE/JDBC • JDBC OCI Client Side driver • JDBC Thin Client-Side driver • JDBC Thin Server-Side driver • JDBC Server-Side Internal driver
I DRIVER ORACLE/JDBC • JDBC OCI Client Side driver • JDBC Thin Client-Side driver • JDBC Thin Server-Side driver • JDBC Server-Side Internal driver I DRIVER DB2/JDBC • DB2 Universal JDBC Driver • JDBC/SQLJ 2.0 Driver per OS/390 • DB2 JDBC Type 2 Driver for Linux,UNIX e Windows
IL WRAPPER JDBC GENERICO MetodoSchema getSchema() • Nomi delle tabelle • Nomi e tipi dei campi delle tabelle MetodoType getAttributeType( int t ) per le traduzione da tipo JDBC a tipo ODLI3
IL WRAPPER JDBC GENERICO MetodoSchema getSchema() • Nomi delle tabelle • Nomi e tipi dei campi delle tabelle CREATE TABLE TBL_AMBITI_CDS_SPECIFICI ( IDCds numeric(18, 0) NOT NULL, IDAttivita numeric(18, 0) NOT NULL, IDAmbitoSpecifico numeric(18, 0) NOT NULL, Denominazione varchar (100), CFU varchar (10)) ; ALTER TABLE TBL_AMBITI_CDS_SPECIFICI ADD CONSTRAINT PK_TBL_AMBITI_SPEC PRIMARY KEY (IDCds,IDAttivita,IDAmbitoSpecifico); ALTER TABLE TBL_AMBITI_CDS_SPECIFICI ADD CONSTRAINT FK_TBL_AMBITI_SPECIFICI_TBL_AMBITI_CDS FOREIGN KEY (IDAttivita,IDCds) REFERENCES TBL_AMBITI_CDS (IdAttivita,IDCdS); interface TBL_AMBITI_CDS_SPECIFICI ( extent TBL_AMBITI_CDS_SPECIFICI) { attribute string DENOMINAZIONE; attribute float IDAMBITOSPECIFICO; attribute float IDCDS; attribute float IDATTIVITA; attribute string CFU;}
IL WRAPPER JDBC GENERICO MetodoType getAttributeType( int t ) Mapping tra tipi di dato JDBC e ODLI3
I WRAPPER SQL_SERVER/ODLI3, DB2/ODLI3, ORACLE/ODLI3 MetodoSchema getSchema() • Nomi delle tabelle • Nomi e tipi dei campi delle tabelle • Chiavi primarie • Foreign key • Metodoboolean theTableShouldBeDescribed(String tableName) • per l‘esclusione delle tabelle di sistema • Data dictionary di Oracle • System catalog di DB2 MetodoType getAttributeType( int t ) per le traduzione da tipo JDBC a tipo ODLI3 ereditato dal wrapper JDBC generico
I WRAPPER SQL_SERVER/ODLI3, DB2/ODLI3, ORACLE/ODLI3 MetodoSchema getSchema() CREATE TABLE TBL_AMBITI_CDS_SPECIFICI ( IDCds numeric(18, 0) NOT NULL, IDAttivita numeric(18, 0) NOT NULL, IDAmbitoSpecifico numeric(18, 0) NOT NULL, Denominazione varchar (100), CFU varchar (10)) ; ALTER TABLE TBL_AMBITI_CDS_SPECIFICI ADD CONSTRAINT PK_TBL_AMBITI_SPEC PRIMARY KEY (IDCds,IDAttivita,IDAmbitoSpecifico); ALTER TABLE TBL_AMBITI_CDS_SPECIFICI ADD CONSTRAINT FK_TBL_AMBITI_SPECIFICI_TBL_AMBITI_CDS FOREIGN KEY (IDAttivita,IDCds) REFERENCES TBL_AMBITI_CDS (IdAttivita,IDCdS);
I WRAPPER SQL_SERVER/ODLI3, DB2/ODLI3, ORACLE/ODLI3 MetodoSchema getSchema() interface TBL_AMBITI_CDS_SPECIFICI ( extent TBL_AMBITI_CDS_SPECIFICI key (IDCDS,IDATTIVITA,IDAMBITOSPECIFICO) foreign_key FK_TBL_AMBITI_SPEC_TBL_AMB_CDS (IDATTIVITA,IDCDS) references TBL_AMBITI_CDS (IDATTIVITA, IDCDS) ){ attribute string DENOMINAZIONE; attribute float IDAMBITOSPECIFICO; attribute float IDCDS; attribute float IDATTIVITA; attribute string CFU;} DB2/ODLI3 interface TBL_AMBITI_CDS_SPECIFICI ( extent TBL_AMBITI_CDS_SPECIFICI key (IDAMBITOSPECIFICO,IDATTIVITA, IDCDS) foreign_key FK_TBL_AMBITI_SPEC_TBL_AMB_CDS (IDATTIVITA,IDCDS) references TBL_AMBITI_CDS (IDATTIVITA,IDCDS) ){ attribute string DENOMINAZIONE; attribute float IDAMBITOSPECIFICO; attribute float IDCDS; attribute float IDATTIVITA; attribute string CFU;} Oracle/ODLI3 interface TBL_AMBITI_CDS_SPECIFICI ( extent TBL_AMBITI_CDS_SPECIFICI key (IDAmbitoSpecifico, IDAttivita, IDCds) foreign_key FK_TBL_AMBITI_SPECIFICI_TBL_AMBITI_CDS (IDAttivita, IDCds) references TBL_AMBITI_CDS (IdAttivita, IDCdS) ){ attribute double IDAmbitoSpecifico; attribute string Denominazione; attribute double IDCds; attribute double IDAttivita; attribute string CFU;} SQL_Server/ODLI3
I WRAPPER SQL_SERVER/ODLI3, DB2/ODLI3, ORACLE/ODLI3 MetodoSchema getSchema() interface TBL_AMBITI_CDS_SPECIFICI ( extent TBL_AMBITI_CDS_SPECIFICI key (IDCDS,IDATTIVITA,IDAMBITOSPECIFICO) foreign_key FK_TBL_AMBITI_SPEC_TBL_AMB_CDS (IDATTIVITA,IDCDS) references TBL_AMBITI_CDS (IDATTIVITA, IDCDS) ){ attribute string DENOMINAZIONE; attribute float IDAMBITOSPECIFICO; attribute float IDCDS; attribute float IDATTIVITA; attribute string CFU;} DB2/ODLI3 interface TBL_AMBITI_CDS_SPECIFICI ( extent TBL_AMBITI_CDS_SPECIFICI key (IDAMBITOSPECIFICO,IDATTIVITA}, IDCDS) foreign_key FK_TBL_AMBITI_SPEC_TBL_AMB_CDS (IDATTIVITA,IDCDS) references TBL_AMBITI_CDS (IDATTIVITA,IDCDS) ){ attribute string DENOMINAZIONE; attribute float IDAMBITOSPECIFICO; attribute float IDCDS; attribute float IDATTIVITA; attribute string CFU;} Oracle/ODLI3 interface TBL_AMBITI_CDS_SPECIFICI ( extent TBL_AMBITI_CDS_SPECIFICI key (IDAmbitoSpecifico, IDAttivita, IDCds) foreign_key FK_TBL_AMBITI_SPECIFICI_TBL_AMBITI_CDS (IDAttivita, IDCds) references TBL_AMBITI_CDS (IdAttivita, IDCdS) ){ attribute double IDAmbitoSpecifico; attribute string Denominazione; attribute double IDCds; attribute double IDAttivita; attribute string CFU;} SQL_Server/ODLI3
I WRAPPER SQL_SERVER/ODLI3, DB2/ODLI3, ORACLE/ODLI3 MetodoSchema getSchema() interface TBL_AMBITI_CDS_SPECIFICI ( extent TBL_AMBITI_CDS_SPECIFICI key (IDCDS,IDATTIVITA,IDAMBITOSPECIFICO) foreign_key FK_TBL_AMBITI_SPEC_TBL_AMB_CDS (IDATTIVITA,IDCDS) references TBL_AMBITI_CDS (IDATTIVITA, IDCDS) ){ attribute string DENOMINAZIONE; attribute float IDAMBITOSPECIFICO; attribute float IDCDS; attribute float IDATTIVITA; attribute string CFU;} DB2/ODLI3 interface TBL_AMBITI_CDS_SPECIFICI ( extent TBL_AMBITI_CDS_SPECIFICI key (IDAMBITOSPECIFICO,IDATTIVITA, IDCDS) foreign_key FK_TBL_AMBITI_SPEC_TBL_AMB_CDS (IDATTIVITA,IDCDS) references TBL_AMBITI_CDS (IDATTIVITA,IDCDS) ){ attribute string DENOMINAZIONE; attribute float IDAMBITOSPECIFICO; attribute float IDCDS; attribute float IDATTIVITA; attribute string CFU;} Oracle/ODLI3 interface TBL_AMBITI_CDS_SPECIFICI ( extent TBL_AMBITI_CDS_SPECIFICI key (IDAmbitoSpecifico, IDAttivita, IDCds) foreign_key FK_TBL_AMBITI_SPECIFICI_TBL_AMBITI_CDS (IDAttivita, IDCds) references TBL_AMBITI_CDS (IdAttivita, IDCdS) ){ attribute double IDAmbitoSpecifico; attribute string Denominazione; attribute double IDCds; attribute double IDAttivita; attribute string CFU;} SQL_Server/ODLI3
I WRAPPER SQL_SERVER/ODLI3, DB2/ODLI3, ORACLE/ODLI3 MetodoSchema getSchema() interface TBL_AMBITI_CDS_SPECIFICI ( extent TBL_AMBITI_CDS_SPECIFICI key (IDCDS,IDATTIVITA,IDAMBITOSPECIFICO) foreign_key FK_TBL_AMBITI_SPEC_TBL_AMB_CDS (IDATTIVITA,IDCDS) references TBL_AMBITI_CDS (IDATTIVITA, IDCDS) ){ attribute string DENOMINAZIONE; attribute float IDAMBITOSPECIFICO; attribute float IDCDS; attribute float IDATTIVITA; attribute string CFU;} DB2/ODLI3 interface TBL_AMBITI_CDS_SPECIFICI ( extent TBL_AMBITI_CDS_SPECIFICI key (IDAMBITOSPECIFICO,IDATTIVITA, IDCDS) foreign_key FK_TBL_AMBITI_SPEC_TBL_AMB_CDS (IDATTIVITA,IDCDS) references TBL_AMBITI_CDS (IDATTIVITA,IDCDS) ){ attribute string DENOMINAZIONE; attribute float IDAMBITOSPECIFICO; attribute float IDCDS; attribute float IDATTIVITA; attribute string CFU;} Oracle/ODLI3 interface TBL_AMBITI_CDS_SPECIFICI ( extent TBL_AMBITI_CDS_SPECIFICI key (IDAmbitoSpecifico, IDAttivita, IDCds) foreign_key FK_TBL_AMBITI_SPECIFICI_TBL_AMBITI_CDS (IDAttivita, IDCds) references TBL_AMBITI_CDS (IdAttivita, IDCdS) ){ attribute double IDAmbitoSpecifico; attribute string Denominazione; attribute double IDCds; attribute double IDAttivita; attribute string CFU;} SQL_Server/ODLI3
I WRAPPER SQL_SERVER/ODLI3, DB2/ODLI3, ORACLE/ODLI3 MetodoSchema getSchema() interface TBL_AMBITI_CDS_SPECIFICI ( extent TBL_AMBITI_CDS_SPECIFICI key (IDCDS,IDATTIVITA,IDAMBITOSPECIFICO) foreign_key FK_TBL_AMBITI_SPEC_TBL_AMB_CDS (IDATTIVITA,IDCDS) references TBL_AMBITI_CDS (IDATTIVITA, IDCDS) ){ attribute string DENOMINAZIONE; attribute float IDAMBITOSPECIFICO; attribute float IDCDS; attribute float IDATTIVITA; attribute string CFU;} DB2/ODLI3 interface TBL_AMBITI_CDS_SPECIFICI ( extent TBL_AMBITI_CDS_SPECIFICI key (IDAMBITOSPECIFICO,IDATTIVITA, IDCDS) foreign_key FK_TBL_AMBITI_SPEC_TBL_AMB_CDS (IDATTIVITA,IDCDS) references TBL_AMBITI_CDS (IDATTIVITA,IDCDS) ){ attribute string DENOMINAZIONE; attribute float IDAMBITOSPECIFICO; attribute float IDCDS; attribute float IDATTIVITA; attribute string CFU;} Oracle/ODLI3 interface TBL_AMBITI_CDS_SPECIFICI ( extent TBL_AMBITI_CDS_SPECIFICI key (IDAmbitoSpecifico, IDAttivita, IDCds) foreign_key FK_TBL_AMBITI_SPECIFICI_TBL_AMBITI_CDS (IDAttivita, IDCds) references TBL_AMBITI_CDS (IdAttivita, IDCdS) ){ attribute double IDAmbitoSpecifico; attribute string Denominazione; attribute double IDCds; attribute double IDAttivita; attribute string CFU;} SQL_Server/ODLI3
I WRAPPER SQL_SERVER/ODLI3, DB2/ODLI3, ORACLE/ODLI3 Metodoboolean theTableShouldBeDescribed(String tableName) public ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) TABLE_CAT String => table catalog (may be null) TABLE_SCHEM String => table schema (may be null) TABLE_NAME String => table name TABLE_TYPE String => table type. Typical types are "TABLE", "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYNONYM". REMARKS String => explanatory comment on the table TYPE_CAT String => the types catalog (may be null) TYPE_SCHEM String => the types schema (may be null) TYPE_NAME String => type name (may be null) SELF_REFERENCING_COL_NAME String => name of the designated "identifier" column of a typed table (may be null) REF_GENERATION String => specifies how values in SELF_REFERENCING_COL_NAME are created. Values are "SYSTEM", "USER", "DERIVED". (may be null)
I WRAPPER SQL_SERVER/ODLI3, DB2/ODLI3, ORACLE/ODLI3 Metodoboolean theTableShouldBeDescribed(String tableName) public ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) TABLE_CAT String => table catalog (may be null) TABLE_SCHEM String => table schema (may be null) TABLE_NAME String => table name TABLE_TYPE String => table type. Typical types are "TABLE", "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYNONYM". REMARKS String => explanatory comment on the table TYPE_CAT String => the types catalog (may be null) TYPE_SCHEM String => the types schema (may be null) TYPE_NAME String => type name (may be null) SELF_REFERENCING_COL_NAME String => name of the designated "identifier" column of a typed table (may be null) REF_GENERATION String => specifies how values in SELF_REFERENCING_COL_NAME are created. Values are "SYSTEM", "USER", "DERIVED". (may be null)
I WRAPPER SQL_SERVER/ODLI3, DB2/ODLI3, ORACLE/ODLI3 Metodoboolean theTableShouldBeDescribed(String tableName) public ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) TABLE_SCHEM String => table schema (may be null) TABLE_TYPE String => table type. Typical types are "TABLE", "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYNONYM".
I WRAPPER SQL_SERVER/ODLI3, DB2/ODLI3, ORACLE/ODLI3 Metodoboolean theTableShouldBeDescribed(String tableName) public ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) TABLE_SCHEM String => table schema (may be null) TABLE_TYPE String => table type. Typical types are "TABLE", "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYNONYM". getSchema() TABLE_TYPE = "TABLE"
I WRAPPER SQL_SERVER/ODLI3, DB2/ODLI3, ORACLE/ODLI3 Metodoboolean theTableShouldBeDescribed(String tableName) public ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) TABLE_SCHEM String => table schema (may be null) TABLE_TYPE String => table type. Typical types are "TABLE", "VIEW", "SYSTEM TABLE", "GLOBAL TEMPORARY", "LOCAL TEMPORARY", "ALIAS", "SYNONYM". getSchema() TABLE_TYPE = "TABLE" MDSYS OLAPSYS SYS SYSTEM WKSYS XDB Oracle TABLE_SCHEM ≠ SYSIBM SYSTOOLS DB2 TABLE_SCHEM ≠
I WRAPPER GUI Metodo getAllDatabase() • DB2 Universal Database per z/OS Database DSNDB06 Tabella SYSIBM.SYSDATABASE • DB2 Universal Database per Linux, Unix, Windows Comando “LIST DATABASE DIRECTORY” File <home_dir>/sqldbdir • Oracle Databasesu sistemi UNIX File /etc/oratab (/var/opt/oracle se sistemi Solaris ) • Oracle Databasesu sistemi Windows Registri di sistema HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_HOME_NAME\ORACLE_SID
CONCLUSIONI WrapperJdbcCore_DB2Server WrapperJdbcCore_oracle DB2ServerWrapperGUI Metodo getAllDatabase() OracleServerWrapperGUI Metodo getAllDatabase()
CONCLUSIONI WrapperJdbcCore_DB2Server WrapperJdbcCore_oracle DB2ServerWrapperGUI Metodo getAllDatabase() OracleServerWrapperGUI Metodo getAllDatabase() Oracle DBA Forum DUGI Listserv
PROGETTO MOMIS: I WRAPPER DB2/ODLI3E ORACLE/ODLI3 Grazie per l’attenzione Mauro Verardi