Giorgio Calderone - PowerPoint PPT Presentation

About This Presentation
Title:

Giorgio Calderone

Description:

Software per database a supporto di progetti di ricerca astronomici: MCS, MyRO, DIF Giorgio Calderone Bologna, 14/12/2006 Software a supporto dei progetti di ricerca ... – PowerPoint PPT presentation

Number of Views:107
Avg rating:3.0/5.0
Slides: 34
Provided by: GiorgioC9
Category:

less

Transcript and Presenter's Notes

Title: Giorgio Calderone


1
Software per database a supporto di progetti di
ricerca astronomici MCS, MyRO, DIF
Giorgio Calderone
Bologna, 14/12/2006
2
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
MCS My Customizable Server
I sistemi informativi si possono dividere in due
categorie
Indirizzati agli esseri umani
Web server, scripting language, HTML protocol
Indirizzati ad altri sistemi informatici
Nessuna standardizzazione gt MCS
4
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
MCS My Customizable Server
Come può un sistema informativo fare da supporto
a un progetto scientifico ?
  • 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...

...tutto questo è possibile con MCS !
6
MCS My Customizable Server
Le caratteristiche del server MCS sono
  • 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)

La personalizzazione del server può essere
realizzata
  • 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)

7
MCS My Customizable Server
Eventi durante una tipica sessione MCS
8
MCS My Customizable Server
Architettura del sistema informativo
9
MCS My Customizable Server
Codice minimo per un server MCS
include ltmcs.hhgt using namespace mcs int
main(int argc, char argv) Env env
mcsStart("test") mcsWait(env)
10
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-gtcmpCmd("HISTO")) if
(cmd-gtargc() lt 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
MCS My Customizable Server
Personalizzazione server thread
MCS_CUSTOM_LOCAL(Local) void run() for()
s "QRY SELECT FROM Producer_log if
(prod-gtexec(s)) Record rec
prod-gtrec() q-gtprepare_with_parameters(MCS_I
NSERT, "", "Mainsrv_log) q-gtparam()"id"
rec"id" q-gtparam()"camera"
rec"camera" q-gtparam()"filename"
rec"filename" query-gtexecute()
MCS_CUSTOM_LOCAL_END(Local)
12
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
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
MCS My Customizable Server
Interfaccia grafica (PHP)
Informazioni generate dinamicamente
Informazioni lette da DB
Accesso ai comandi personalizzati
15
MCS My Customizable Server
Show as gif
Get image pix. statistics
16
VOTable il formato definito dal Virtual
Observatory
Quali sono i principali vantaggi rispetto al
formato FITS ?
  • 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)

17
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_Option
  • VOT_Param
  • VOT_ParamRef
  • VOT_Resource
  • VOT_Row
  • VOT_Stream
  • VOT_Table
  • VOT_Tabledata
  • VOT_Values
  • VOT_VOTable
  • VOT_Parser_Stream
  • VOT_Parser_Tree
  • VOT_Writer_Stream (ancora in fase di sviluppo)

18
Per ogni possibile nodo XML esiste una classe
lt?xml version"1.0"?gt ltVOTABLE version"1.1"gt
ltCOOSYS ID"J2000" equinox"J2000."
epoch"J2000." system"eq_FK5"/gt ltRESOURCE
name"myFavouriteGalaxies"gt ltTABLE
name"results"gt ltDESCRIPTIONgtVelocities and
Distance estimationslt/DESCRIPTIONgt ltPARAM
name"Telescope" datatype"float"
ucd"phys.sizeinstr.tel" unit"m"
value"3.6"/gt ltFIELD name"RA" ID"col1"
ucd"pos.eq.rameta.main" ref"J2000"
datatype"float" width"6" precision"2"
unit"deg"/gt ltFIELD name"Dec" ID"col2"
"pos.eq.decmeta.main" ref"J2000"
datatype"float" width"6" precision"2"
unit"deg"/gt ltFIELD name"Name" ID"col3"
ucd"meta.idmeta.main"
datatype"char" arraysize"8"/gt ltDATAgt
ltTABLEDATAgt ltTRgt
ltTDgt010.68lt/TDgtltTDgt41.27lt/TDgtltTDgtN 224lt/TDgt
lt/TRgt ltTRgt
ltTDgt287.43lt/TDgtltTDgt-63.85lt/TDgtltTDgtN 6744lt/TDgt
lt/TRgt lt/TABLEDATAgt lt/DATAgt
lt/TABLEgt lt/RESOURCEgt lt/VOTABLEgt
VOT_VOTable
VOT_Resource
VOT_Param
VOT_Field
VOT_Data
VOT_Row
VOT_Column
19
Gli attributi dei nodi sono anche attributi della
classe
Accesso a un nodo di tipo FIELD
ltFIELD name"RA" ID"col1"
ucd"pos.eq.rameta.main" ref"J2000"
datatype"float" width"6" precision"2"
unit"deg" /gt
VOT_Field field stream-gtnext() field-gtname() fi
eld-gtID() field-gtucd() field-gtdatatype() field-gtwi
dth() field-gtprecision() field-gtunit
20
Lettura di un file VOTable
Modalità stream
  • 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 è

VOT_Parser_Stream stream stream.open(filename.vo
t) while ((node stream.next()))
node-gtprint(true) stream.close()
21
Lettura di un file VOTable
Modalità tree
  • 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

VOT_Parser_Tree tree() tree.open(filename.vot)
tree.root()-gtprint(true)
tree.root()-gtResource(2)-gtTable(1)
-gtData()-gtTableData()-gtRow(0)-gtColumn(5)
-gtvalue()
22
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 mcsRecordset

E' l'unica interfaccia C con tutte queste
caratteristiche !!!
23
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
MyRO My Record Oriented privilege system
Per ogni record i permessi sono simili a quelli
di un file su un file system UNIX
mysqlgt select from tab --------------------
- i c f1 f2 ----------------
----- 1 A 2.3 4.5 2 B
0 0 3 C -1 -2
---------------------
Senza MyRO
Con MyRO
mysqlgt 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
-------------------------------------------
-------
25
MyRO My Record Oriented privilege system
Come funziona MyRO ?
1) Si aggiungono i campi per utente proprietario,
gruppo e permessi
mysqlgt select from tab_myro ---------------
------ i c f1 f2
--------------------- 1 A 2.3
4.5 2 B 0 0 3 C
-1 -2 ---------------------
mysqlgt 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
MyRO My Record Oriented privilege system
Risultati diversi con account diversi
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 -------------------------------------
-------------
Selezione effettuata tramite l'account 'test'
--------------------------------------------
------ 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
-------------------------------------------
-------
27
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
DIF Dynamical Index Facility
Vogliamo utilizzare l'indice sul campo htmID
  • Primo esempio

SELECT FROM Messier WHERE htmID IN (29572,
14638, ...)
  • Secondo esempio

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 ?
29
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
DIF Dynamical Index Facility
Mettiamo tutto insieme
  • La query completa

SELECT Messier. FROM Messier INNER JOIN dif
USING (htmID) WHERE HTM_Circle(_at_Ra, _at_Dec, _at_Rad)
  • Selezione su un cerchio perfetto

SELECT Messier. FROM Messier INNER JOIN dif
USING (htmID) WHERE (HTM_Circle(_at_Ra, _at_Dec, _at_Rad)
AND ( (htmFull 1) OR
(sphedist(_at_Ra,_at_Dec,Ra,Dec) lt_at_Rad)) )
81
31
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
Librerie di uso comune in astronomia
Aggiunta della possibilità di chiamare routine
esterne di uso comune, con la stessa sintassi da
qualsiasi linguaggio di programmazione.
  • 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..

33
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
Write a Comment
User Comments (0)
About PowerShow.com