Giorgio CalderoneBologna, 14/12/2006 Software per database a supporto di progetti di ricerca astronomici: MCS, MyRO, DIF.

Slides:



Advertisements
Presentazioni simili
VIA GIULIO RATTI, CREMONA – Tel. 0372/27524
Advertisements

CREAZIONE UTENTE SU ORACLE1 Pagina delle risorse: crea utente oracle ( Password:… Dora in poi, in questi lucidi,
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità B1 Introduzione alle basi di dati.
Database MySql.
SQL applicato a SQL Server
Sicurezza e concorrenza nelle basi di dati
Unità D2 Database nel web. Obiettivi Comprendere il concetto di interfaccia utente Comprendere la struttura e i livelli che compongono unapplicazione.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità D3 Sicurezza e concorrenza nelle basi di dati.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
PHP.
Utilizzare PHP 5 Corso Interazione Uomo – Macchina AA 2005/2006.
Connessione con MySQL.
Università degli Studi di Modena e Reggio Emilia
Università La Sapienza Web programming e programmazione multimediale 1 Web Programming e comunicazione multimediale Lezione 10: PHP.
SQL Structured Query Language
Struttura dei sistemi operativi (panoramica)
I Thread.
SQL Per la definizione di basi di dati SQL per definire ed amministrare Ogni utente puo definire una base di dati di cui diventa lamministratore potendo.
SIMULAZIONE RETE INTERNET INTERNET SERVICE PROVIDER GRUPPO 2 COMMESSA – INFORMATICA GRANATA Corso Sicurezza su Reti II Prof. A. De Santis Anno Accademico.
Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.
Modello Relazionale Definisce tipi attraverso il costruttore relazione, che organizza i dati secondo record a struttura fissa, rappresentabili attraverso.
1 Linux day /11/2003 ADA. Dai requisiti al progetto Come nasce il progetto di una piattaforma e-learning Open Source.
Cos’è un CMS? Content Management System
Viste. Cosè una vista? è possibile creare un subset logico di dati o una combinazione di dati una vista è una tabella logica basata su una tabella o su.
Corso di PHP.
Ing. Enrico Lecchini BetaTre S.r.l.
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
Analisi (Analista) Progettazione (Progettista) Sviluppo o Traduzione (Sviluppatore) Documentazione.
Elaborazioni server-side: dalle CGI al PHP
Sistemi Informativi sul Web
Basi di Dati e Sistemi Informativi SQL per Applicazioni Home page del corso:
Presentazione Data Base Ovvero: il paradigma LAPM (Linux - Apache - PHP - mySQL) come supporto Open Source ad un piccolo progetto di Data Base relazionale,
BIOINFO3 - Lezione 341 INTERAZIONE CON UN SERVER MYSQL Quando abbiamo parlato dei database relazionali SQL vi avevo già accennato che linterazione (invio.
BIOINFO3 - Lezione 41 ALTRO ESEMPIO ANCORA Progettare il comando di creazione di una tabella di pubblicazioni scientifiche. Come chiave usare un numero.
1 Applet ed HTML Fondamenti di Informatica Corso D.
Amministrazione della rete: web server Apache
CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 4 - Dicembre Utenti e privilegi del database - 1 Root è lutente amministratore predefinito, ma.
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Programma del Corso.
Threads.
ASP – Active Server Pages Introduzione Pagine Web Statiche & Dinamiche(ASP)
L’architettura a strati
CREAZIONE UTENTE SU ORACLE1 Pagina delle risorse: crea utente oracle ( D’ora in poi, in questi lucidi, il vostro utente oracle.
PHP - PHP: Hypertext Preprocessor. Introduzione PHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor") è un linguaggio di scripting general-purpose.
Protocolli e architetture per WIS. Web Information Systems (WIS) Un Web Information System (WIS) usa le tecnologie Web per permettere la fruizione di.
1 Università della Tuscia - Facoltà di Scienze Politiche.Informatica 2 - a.a Prof. Francesco Donini Accesso a basi di dati con ASP.
Pagine ASP parte 3 I data base Stefano Schacherl.
Fabrizio Felici LAMP workshop GROsseto Linux Users Group.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità D3 Sicurezza e concorrenza nelle basi di dati.
PLSQL 1.1 LA REALIZZAZIONE DI APPLICAZIONI Quattro parti: Gestione dati Business rules Logica applicativa Interfaccia utente Molte possibili architetture.
1 Il file system di Unix Caratteristiche generali dei FS comunemente usati da Unix/Linux.
Programmazione Web PHP e MySQL 1. 2Programmazione Web - PHP e MySQL Esempio: un blog.
Education & Training Training per Microsoft Access 97 Perché Education & Training ? Perché StartPoints crede nell’importanza strategica delle Risorse Umane.
Interazione col DB Per interagire con una base dati da una pagina PHP occorre procedere come segue: Eseguire la connessione al DBMS MySQL in ascolto;
Esercizio ODBC. Configurare il driver ODBC Start  Control Panel  Administrative Tools Aprire: Data Source(ODBC) User DSN  Add…. Selezionare il driver.
MySQL Database Management System
PHP MySQL Accesso a database via web. Connessione Script PHP per la connessione a un server MySQL mysql_connect(nomeServer,nomeUtente,password);
Database Elaborato da: Claudio Ciavarella & Marco Salvati.
Esercizio ODBC Roberto Pecchioli, Nicola Salotti, Massimiliano Sergenti - Gruppo Admin.
1 File System ed Input/Output UNIX Caratteristiche del FS Unix Implementazione Il file system di Linux Organizzazione dell’ I/O.
DIGITAL FOLDER Pesatori Carlo
Istituto Tecnico Industriale Don Orione Fano
Eprogram SIA V anno.
Eprogram informatica V anno.
PHP.  HTML (Hyper Text Markup Language)  CSS (Cascading Style Sheets)  Javascript (linguaggio di programmazione client)  PHP ( Hypertext Preprocessor.
Gaetano Anastasi Beatrice Miotti Lorenzo Guerriero Monica Pellegrinelli Massimiliano Sartor Giorgio Macauda SQLite Esempi di utilizzo della libreria in.
Elementi di statistica con R e i database LEZIONE 2 Rocco De Marco rocco.demarco(a)an.ismar.cnr.it Ancona, 12 Aprile 2012.
IV Corso di formazione INFN per amministratori di siti GRID Tutorial di amministrazione DGAS Giuseppe Patania.
FESR Trinacria Grid Virtual Laboratory AMGA Web Interface Salvatore Scifo TRIGRID Second TriGrid Checkpoint Meeting Catania,
Giorgio Calderone Bologna, 14/12/2006 Software per database a supporto di progetti di ricerca astronomici: MCS, MyRO, DIF.
Transcript della presentazione:

Giorgio CalderoneBologna, 14/12/2006 Software per database a supporto di progetti di ricerca astronomici: MCS, MyRO, DIF

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF Presentazioni: MCS: My Customizable Server: Accesso a database; Implementazione servizi informativi; Gestione file VOTable; MyRO: My Record Oriented privilege system: Struttura per la gestione di account utente; Privilegi a livello di record; DIF: Dynamical Index Facility: Link a librerie HTM e HealPix;

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF MCS: My Customizable Server I sistemi informativi si possono dividere in due categorie: Indirizzati agli esseri umani Indirizzati ad altri sistemi informatici Web server, scripting language, HTML protocol Nessuna standardizzazione ==> MCS

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF MCS: My Customizable Server Come può un sistema informativo fare da supporto a un progetto scientifico ? Dati scientifici e di house-keeping: Backup e validazione; Quick-look ed eventuale automatizzazione del sistema; Accesso per ricercatori: Accesso ai dati da vari linguaggi di programmazione: C, C++, Fortran, IDL; Possibilità di installare facility per una analisi veloce dei dati; Possibilità di download dei dati grezzi; Accesso per tecnici; Possibilità di monitoraggio e controllo remoto del sistema; Accesso dal pubblico (outreach): Generazione automatica di statistiche e pagine web con ultime immagini, ecc...

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF MCS: My Customizable Server Interfaccia di accesso di alto livello, ad esempio: Seleziona le osservazioni fatte in data...; Seleziona tutte le osservazioni della zona di cielo...; Seleziona le osservazioni in cui la temperatura dello strumento è minore...; Possibilità di scambio di file in diversi formati: Ascii, FITS, VOTable, ecc... Come può un sistema informativo fare da supporto a un progetto scientifico ?...tutto questo è possibile con MCS !

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF MCS: My Customizable Server Server TCP multithread; Facilità di configurazione; Autenticazione e supporto di permessi utente; Connessioni sicure (tramite SSL); Accesso a database (MySQL); Supporto per la personalizzazione del server; Accessiblità da diversi linguaggi di programmazione: C, C++, Fortran, IDL, PHP, Python (in futuro anche Java e Perl); Le caratteristiche del server MCS sono: Aggiungendo programmi di analisi esterni, sia binari che BATCH di comandi MCS; Aggiungendo programmi SQL (da eseguire sul server MySQL); Aggiungendo comandi personalizzati (derivando la classe UserThread); Modificando il comportamento del thread lato server (derivando la classe LocalThread); La personalizzazione del server può essere realizzata:

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF MCS: My Customizable Server Eventi durante una tipica sessione MCS:

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF MCS: My Customizable Server Architettura del sistema informativo:

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF MCS: My Customizable Server Codice minimo per un server MCS: #include using namespace mcs; int main(int argc, char *argv[]) { Env* env = mcsStart("test"); mcsWait(env); }

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF MCS: My Customizable Server Aggiunta di un comando personalizzato: MCS_CUSTOM_USER(User); RetValue hk_exec(CommandParser* cmd, bool& cmd_executed) { if (! loginok) return OK; if (cmd_executed = cmd->cmpCmd("HISTO")) { if (cmd->argc() < 1) //Check number of arguments return Send( MCS_ERROR( MSG_MISSING_ARGUMENT, "filename"));... computation... Data d(FLOAT); Send(d); Send(file); } } MCS_CUSTOM_USER_END(User);

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF MCS: My Customizable Server Personalizzazione server thread: MCS_CUSTOM_LOCAL(Local); void run() { for(;;) { s = "QRY SELECT * FROM Producer_log; if (prod->exec(s)) { Record& rec = prod->rec(); q->prepare_with_parameters(MCS_INSERT, "*", "Mainsrv_log); q->param()["id"] = rec["id"]; q->param()["camera"] = rec["camera"]; q->param()["filename"] = rec["filename"]; query->execute(); } } } MCS_CUSTOM_LOCAL_END(Local);

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF MCS: My Customizable Server Codice client (IDL): cli = new_Client(null, "", "localhost", 9001, 0) dummy = Client_login(cli, 'demo_mcs', 'demo_mcs', 'demo_mcs') dummy = Client_exec(cli, 'qry SELECT camera, filename, datein, exposure FROM Mainsrv_log', null) nrows = RecordSet_nRows(cli) cmd = "histo " + name + ".fits.gz" dummy = Client_exec(cli, cmd, null) cmd = "get " + name + "_h.gif" dummy = Client_exec(cli, cmd, null)

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF MCS: My Customizable Server Codice client (Fortran): cli = new_Client(null, "", "localhost", 9001, 0) dummy = Client_login(cli, 'demo_mcs', 'demo_mcs', 'demo_mcs') dummy = Client_exec(cli, 'qry SELECT camera, filename, datein, exposure FROM Mainsrv_log', null) nrows = RecordSet_nRows(cli) WRITE(cmd, '(A6, A10, A8)'), "histo ",, ".fits.gz" dummy = Client_exec(cli, cmd, null) WRITE(cmd, '(A4, A10, A6)'), "get ", s, "_h.gif" dummy = Client_exec(cli, cmd, null)

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF MCS: My Customizable Server Interfaccia grafica (PHP): Informazioni generate dinamicamente Informazioni lette da DB Accesso ai comandi personalizzati

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF MCS: My Customizable Server Show as gif:Get image pix. statistics

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF VOTable: il formato definito dal Virtual Observatory Struttura keyword; Non è necessaria la keyword NAXIS2 (numero di record); Quindi un file VOTable è streamable; Possono contenere solo metadata e link ai dati effettivi; I dati possono essere inclusi in VOTable in vari formati (serialization): Tabella HTML; Formato binario dedicato; File Fits (codificato con Base64); Quali sono i principali vantaggi rispetto al formato FITS ?

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF MCS: le classi per l'accesso ai VOTable VOT_Element VOT_Binary VOT_Column VOT_Coosys VOT_Data VOT_Definitions VOT_Description VOT_Field VOT_FieldRef VOT_Fits VOT_Group VOT_Info VOT_Link VOT_Max VOT_Min VOT_Parser_Stream VOT_Parser_Tree VOT_Writer_Stream (ancora in fase di sviluppo) VOT_Option VOT_Param VOT_ParamRef VOT_Resource VOT_Row VOT_Stream VOT_Table VOT_Tabledata VOT_Values VOT_VOTable

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF Per ogni possibile nodo XML esiste una classe Velocities and Distance estimations <PARAM name="Telescope" datatype="float" ucd="phys.size;instr.tel" unit="m" value="3.6"/> <FIELD name="RA" ID="col1" ucd="pos.eq.ra;meta.main" ref="J2000" datatype="float" width="6" precision="2" unit="deg"/> <FIELD name="Dec" ID="col2" "pos.eq.dec;meta.main" ref="J2000" datatype="float" width="6" precision="2" unit="deg"/> <FIELD name="Name" ID="col3" ucd="meta.id;meta.main" datatype="char" arraysize="8*"/> N N 6744 VOT_VOTable VOT_Resource VOT_Param VOT_Field VOT_Data VOT_Row VOT_Column

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF Gli attributi dei nodi sono anche attributi della classe Accesso a un nodo di tipo FIELD: VOT_Field* field = stream->next() field->name() field->ID() field->ucd() field->datatype() field->width() field->precision() field->unit <FIELD name="RA" ID="col1" ucd="pos.eq.ra;meta.main" ref="J2000" datatype="float" width="6" precision="2" unit="deg" />

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF Lettura di un file VOTable Modalità stream: VOT_Parser_Stream stream; stream.open(filename.vot); while ((node = stream.next())) { node->print(true); } stream.close(); I nodi sono letti uno per uno; Non è disponibile l'intera struttura del file VOTable; E' richiesta poca memoria; Il codice per leggere e stampare tutto il contenuto del file è:

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF Lettura di un file VOTable Modalità tree: VOT_Parser_Tree tree(); tree.open(filename.vot); tree.root()->print(true); I nodi sono letti tutti in una volta; E' disponibile l'intera struttura del file VOTable, ed è navigabile; E' richiesta una quantità di memoria dell'ordine delle dimensioni del file; Il codice per leggere, stampare tutto il contenuto del file è: Per recuperare un valore dalla struttura: tree.root()->Resource(2)->Table(1) ->Data()->TableData()->Row(0)->Column(5) ->value()

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF Nuove classi per gestione VOTable (ancora in fase di test) Lettura dei dati in tutti i tipi di serializazzione (HTML table, binary, fits, fits remoto); Incapsula le chiamate alla libreria FITSIO; Validazione tramite DTD (Document Type Definition); Modalità di lettura : stream o tree; Capacità di streaming da rete; Interfaccia derivata dalla class mcs::Recordset; E' l'unica interfaccia C++ con tutte queste caratteristiche !!!

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF MyRO: My Record Oriented privilege system MySQL gestisce permessi a livello di Database; Tabella; Campo all'interno di una tabella; Ma non a livello di record !!! MyRO permette di gestire i permessi a livello di record.

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF MyRO: My Record Oriented privilege system Per ogni record i permessi sono simili a quelli di un file su un file system UNIX: Senza MyRO: mysql> select * from tab; | i | c | f1 | f2 | | 1 | A | 2.3 | 4.5 | | 2 | B | 0 | 0 | | 3 | C | -1 | -2 | mysql> select * from tab; | my_user | my_group | my_fperm | i | c | f1 | f2 | | root | root | rwr--- | 1 | A | 2.3 | 4.5 | | test | users | rwr-r- | 2 | B | 0 | 0 | | root | root | rwrwrw | 3 | C | -1 | -2 | Con MyRO:

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF MyRO: My Record Oriented privilege system Come funziona MyRO ? mysql> select * from tab_myro; | i | c | f1 | f2 | | 1 | A | 2.3 | 4.5 | | 2 | B | 0 | 0 | | 3 | C | -1 | -2 | ) Si aggiungono i campi per utente proprietario, gruppo e permessi mysql> select * from tab_myro; | i | c | f1 | f2 | my_uid | my_gid | my_perm | | 1 | A | 2.3 | 4.5 | 1 | 2 | 1 | | 2 | B | 0 | 0 | 3 | 3 | 2 | | 3 | C | -1 | -2 | 1 | 1 | 6 | ) Si crea una view che filtra solo i record che possono essere letti CREATE VIEW tab AS SELECT tab_myro.* FROM tab_myro WHERE (myro_cGranted(user(), my_perm, my_uid, my_gid, 'r') = 1);

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF MyRO: My Record Oriented privilege system Risultati diversi con account diversi | my_user | my_group | my_fperm | i | c | f1 | f2 | | test | users | rwr-r- | 2 | B | 0 | 0 | | root | root | rwrwrw | 3 | C | -1 | -2 | Selezione effettuata tramite l'account 'test': Selezione effettuata tramite l'account 'root': | my_user | my_group | my_fperm | i | c | f1 | f2 | | root | root | rwr--- | 1 | A | 2.3 | 4.5 | | test | users | rwr-r- | 2 | B | 0 | 0 | | root | root | rwrwrw | 3 | C | -1 | -2 |

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF DIF: Dynamical Index Facility Far funzionare i programmi è facile, il difficile è farli andare veloci ! HTM (Hierarchical Triangular Mesh): HealPix (Hierarchical Equal Area isoLatitude Pixelization):

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF DIF: Dynamical Index Facility Vogliamo utilizzare l'indice sul campo htmID Secondo esempio: SELECT * FROM Messier WHERE htmID IN (29572, 14638,...); CREATE TABLE tmp (HTMid INT); INSERT INTO tmp VALUES(29572); INSERT INTO tmp VALUES(14638);... SELECT * FROM Messier INNER JOIN tmp USING (htmID); DROP TABLE tmp; Altre soluzioni ? Primo esempio

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF DIF: Dynamical Index Facility Il DIF permette di creare dinamicamente la tabella degli HTM id. Il DIF è composto da: Una tabella fittizia (non occupa spazio su disco); Una UDF (User Defined Function) che popola dinamicamente la tabella; Nel nostro caso: La tabella si chiama dif; Vi sono diverse UDF che popolano la tabella dif, useremo HTM_Circle; SELECT * FROM dif; #Non produce alcun risultato SELECT * FROM dif WHERE HTM_Circle(83.6, 22.0, 2);

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF DIF: Dynamical Index Facility Mettiamo tutto insieme La query completa: SELECT Messier.* FROM Messier INNER JOIN dif USING :1 SELECT Messier.* FROM Messier INNER JOIN dif USING AND ( (htmFull = 1) OR ); Selezione su un cerchio perfetto:

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF Database Engines per VOTable e FITS Mysql offre l'opportunità di creare database Engine: Si tratta di software che permette di integrare qualsiasi tipo di file all'interno del DBMS; Si possono quindi fare i operazioni di lettura e scrittura su questi file come se fossero normali tabelle, in maniera completamente trasparente; Stiamo lavorando ad un database Engine per l'accesso a file FITS e VOTable; Questi file si possono quindi leggere utilizzando le classi di MCS;

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF Librerie di uso comune in astronomia Astrometria, conversione di coordinate e di date (NOVAS); WCS (World Coordinate System); Ecc.. Aggiunta della possibilità di chiamare routine esterne di uso comune, con la stessa sintassi da qualsiasi linguaggio di programmazione.

Software a supporto dei progetti di ricerca: MCS, MyRO e DIF Cercasi collaborazione per futuri sviluppi: Proposte di nuove funzionalità, critiche su quelle esistenti; Test del software; Scrittura documentazione ed esempi; Contributed library facilities per i vari linguaggi (C, IDL, Fortran, Python, PHP, Perl, Java) Implementazione classe VOTable_Writer_Stream; Database engine VOTable e FITS; Implementazione interfacce a NOVAS, WCS, ecc...; Interfaccia per facility di Virtual Observatory (PLASTIC); Analizzare la portabilità su altri DBMS; Porting su altre piattaforme (UNIX e Windows); Links: MCS, MyRO: IDL user contributed library :