+ All Categories
Home > Documents > Giorgio CalderoneBologna, 14/12/2006 Software per database a supporto di progetti di ricerca...

Giorgio CalderoneBologna, 14/12/2006 Software per database a supporto di progetti di ricerca...

Date post: 01-May-2015
Category:
Upload: annunziata-montanari
View: 216 times
Download: 1 times
Share this document with a friend
33
Giorgio Calderone Bologna, 14/12/2006 Software per database a supporto di progetti di Software per database a supporto di progetti di ricerca astronomici: ricerca astronomici: MCS, MyRO, DIF MCS, MyRO, DIF
Transcript
Page 1: Giorgio CalderoneBologna, 14/12/2006 Software per database a supporto di progetti di ricerca astronomici: MCS, MyRO, DIF.

Giorgio Calderone Bologna, 14/12/2006

Software per database a supporto di Software per database a supporto di progetti di ricerca astronomici:progetti di ricerca astronomici:

MCS, MyRO, DIFMCS, MyRO, DIF

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

Page 3: 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

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

Page 4: 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

MCS: My Customizable ServerCome 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...

Page 5: 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

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 !

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

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:

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

MCS: My Customizable Server

Eventi durante una tipica sessione MCS:

Page 8: 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

MCS: My Customizable Server

Architettura del sistema informativo:

Page 9: 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

MCS: My Customizable ServerCodice minimo per un server MCS:

#include <mcs.hh>using namespace mcs;

int main(int argc, char *argv[]) { Env* env = mcsStart("test"); mcsWait(env);}

Page 10: 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

MCS: My Customizable ServerAggiunta 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);

Page 11: 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

MCS: My Customizable ServerPersonalizzazione 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);

Page 12: 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

MCS: My Customizable ServerCodice 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)

Page 13: 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

MCS: My Customizable ServerCodice 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)

Page 14: 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

MCS: My Customizable ServerInterfaccia grafica (PHP):

Informazioni generate dinamicamente

Informazioni lette da DB

Accesso ai comandi personalizzati

Page 15: 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

MCS: My Customizable Server

Show as gif: Get image pix. statistics

Page 16: 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

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 ?

Page 17: 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

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

Page 18: 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

Per ogni possibile nodo XML esiste una classe

<?xml version="1.0"?><VOTABLE version="1.1"> <COOSYS ID="J2000" equinox="J2000." epoch="J2000." system="eq_FK5"/> <RESOURCE name="myFavouriteGalaxies"> <TABLE name="results"> <DESCRIPTION>Velocities and Distance estimations</DESCRIPTION> <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*"/> <DATA> <TABLEDATA> <TR> <TD>010.68</TD><TD>+41.27</TD><TD>N 224</TD> </TR> <TR> <TD>287.43</TD><TD>-63.85</TD><TD>N 6744</TD> </TR> </TABLEDATA> </DATA> </TABLE> </RESOURCE></VOTABLE>

VOT_VOTable

VOT_Resource

VOT_Param

VOT_Field

VOT_Data

VOT_Row

VOT_Column

Page 19: 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

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

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

Lettura di un file VOTableModalità 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 è:

Page 21: 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

Lettura di un file VOTableModalità 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()

Page 22: 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

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

Page 23: 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

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.

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

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:

Page 25: 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

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 lettiCREATE VIEW tab ASSELECT tab_myro.*FROM tab_myroWHERE (myro_cGranted(user(), my_perm, my_uid, my_gid, 'r') = 1);

Page 26: 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

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

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

DIF: Dynamical Index Facility

“ Far funzionare i programmi è facile, il difficile è farli andare veloci !”

● HTM (Hierarchical Triangular Mesh):

● HealPix (Hierarchical Equal Area isoLatitude Pixelization):

Page 28: 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

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

Page 29: 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

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

Page 30: 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

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:

Page 31: 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

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;

Page 32: 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

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.

Page 33: 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

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


Recommended