La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "Giorgio CalderoneBologna, 14/12/2006 Software per database a supporto di progetti di ricerca astronomici: MCS, MyRO, DIF."— Transcript della presentazione:

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

2 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;

3 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

4 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...

5 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 !

6 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:

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

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

9 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); }

10 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);

11 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);

12 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)

13 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)

14 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

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

16 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 ?

17 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

18 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*"/> 010.68 +41.27 N 224 287.43 -63.85 N 6744 VOT_VOTable VOT_Resource VOT_Param VOT_Field VOT_Data VOT_Row VOT_Column

19 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" />

20 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 è:

21 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()

22 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 !!!

23 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.

24 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:

25 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 | +---+------+------+------+ 1) 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 | +---+------+------+------+--------+--------+---------+ 2) 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);

26 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 | +---------+----------+----------+---+------+------+------+

27 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):

28 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

29 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);

30 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 (htmID) WHERE HTM_Circle(@Ra, @Dec, @Rad); :1 SELECT Messier.* FROM Messier INNER JOIN dif USING (htmID) WHERE (HTM_Circle(@Ra, @Dec, @Rad) AND ( (htmFull = 1) OR (sphedist(@Ra,@Dec,Ra,Dec) <@Rad)) ); Selezione su un cerchio perfetto:

31 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;

32 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); http://aa.usno.navy.mil/software/novas/novas_info.html WCS (World Coordinate System); http://tdc-www.harvard.edu/software/wcstools Ecc.. Aggiunta della possibilità di chiamare routine esterne di uso comune, con la stessa sintassi da qualsiasi linguaggio di programmazione.

33 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: http://ross.iasfbo.inaf.it/mcs IDL user contributed library : http://ross.iasfbo.inaf.it/mcs-download/mcs_usrlib.pro


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

Presentazioni simili


Annunci Google