Download DB Client Technologies - OPERA Collaboration Meeting

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Emulsion Database Design
Status Report
Extends Opera Internal Note # 38:
“Database Architecture for the European Emulsion Scanning System”
Updated DB Schema
Distributed DB Implementation
DB Client Technologies
DB Client Libraries
Conclusions
Cristiano Bozza
European Emulsion Group
LNGS, May 2003
Updated DB Schema
OPERA European Emulsion Scanning DB
TB_PREDICTIONS
ID
<ak>
Run <pk>
Event <pk>
X
Y
Z
TB_PHYSICSIDS
TB_VERTEXTYPES
ID
<ak>
DESCRIPTION <pk>
ID
<ak>
DESCRIPTION <pk>
FK_PHYSIDS_PREDTRACKS
TB_VERTICES
ID
<pk>
ID_RECONSTRUCTION <fk1>
POSX
POSY
FK_VERTEXTYPES_VERTICES
POSZ
AVERAGEDISTANCE
ID_VERTEXTYPE
<fk2>
FK_VOLTKS_UPVTX
TB_VOLUMETRACKS
ID
ID_RECONSTRUCTION
SIGMA
<pk>
<fk1>
FK_VOLTKS_DOWNVTX
DOWNZ
TB_PREDICTEDTRACKS
ID
ID_PREDICTION
ID_TRACK
ID_PHYSICS
POSX
POSY
POSZ
SLOPEX
SLOPEY
CHI2
FK_PREDICTIONS_PREDTRACKS
FK_PHYSIDS_VOLTKS
<ak>
<pk,fk1>
<pk>
<fk2>
FK_RECON_VOLTKS
FK_RECON_VERTICES
UPZ
DOWNPOSX
DOWNPOSY
DOWNPOSZ
DOWNSLOPEX
DOWNSLOPEY
UPPOSX
UPPOSY
UPPOSZ
UPSLOPEX
UPSLOPEY
MOMENTUM
ENERGY
ID_PARTICLE
<fk4>
RECONSTRUCTIONNOTES
ID_DOWNVERTEX
<fk2>
ID_UPVERTEX
<fk3>
Predictions and Final Results with Physics Info
FK_PROCSTART_PREDTKS
FK_PROCSTART_SELECTION
ID_PROCESS
<pk,fk2>
ID_PREDICTEDTRACK <pk,fk1>
ID_SELECTION
<pk,fk3>
FK_MACHINES_SITE
TB_MACHINES
ID
NAME
ADDRESS
ISSCANNINGSERVER
ISBATCHSERVER
ISDATAPROCESSINGSERVER
ISWEBSERVER
ISDATABASESERVER
ISLOCALMASTERCONTROLLER
ID_SITE
<ak2>
<pk>
<ak1>
TB_RECONSTRUCTIONS
ID
ID_RECONSTRUCTOR
ISCOMPLETE
ID_PROGRAMSETTINGS
ID_PROCESSOPERATION
TB_OPERATIONS
<ak>
<pk,fk1>
<pk,fk2>
ID
<ak>
NAME
<pk>
ISSCANNING
ISTRANSPORT
FK_SELECTIONS_OPS
FK_BATCHES_MACHINES
<fk>
System Management
TB_USERS
ID
USERNAME
PWD
NAME
SURNAME
INSTITUTION
ID_SITE
EMAIL
ADDRESS
PHONE
FK_MACHINES_PROCOPERATIONS
FK_SITES_USERS
<pk>
<pk>
FK_SELECTIONS_USERS
Scanning Predictions
TB_PROC_OPERATIONS
FK_OPERATIONS_PROCOPERATIONS
ID
<ak>
ID_PROCESS <pk,fk3>
ID_OPERATION <pk,fk1>
ID_MACHINE
<fk2>
STARTTIME
FINISHTIME
FK_RECON_USERS
<ak1>
<ak2>
<pk>
<pk>
<fk>
FK_PROCOPS_VTXLOCS
TB_PROCESSES
TB_PROGRAMSETTINGS
ID
<pk>
ID_BRICK <fk>
STARTTIME
FINISHTIME
ID
MODULENAME
MODULEIDENTITY
SETTINGS
ID_AUTHOR
<ak>
<pk>
<pk>
FK_PROGSETTING_BATCHES
FK_TEMPLATEMARKSETS
ID
<pk>
MINX
MAXX
MINY
MAXY
MINZ
MAXZ
TB_VTXLOC_SELECTIONS
ID
ID_PLATE
ID_PROCESSOPERATION
ID_SELECTOR
ID_SELECTIONTEXT
FK_VTXLOC_USERS_VSELS
<fk>
ID
ID_BRICK
ID_MARK
POSX
POSY
MARKROW
MARKCOL
SHAPE
<ak>
<pk,fk>
<pk>
FK_PLATES_BRICK
<pk>
<pk>
FK_BATCHES_REQUESTER
<ak>
<pk,fk2>
<pk,fk1>
<fk4>
<fk3>
FK_BRICKS_PROCESSES
TB_BATCHES
TB_PLATES
TB_TEMPLATEMARKSETS
<pk>
<fk1>
<fk4>
<fk3>
<fk2>
FK_PROGSETTING_RECON
FK_VTXLOC_SEL_VSEL
TB_BRICKS
TB_ALIGNEDBASETRACKS
Event Reconstruction
FK_USERS_PROGSETTINGS
FK_PROCESSES_PROCOPS
FK_PROCSTARTUPS_PROCS
<pk>
<fk2>
ID
ID_MIPBASETRACK
<fk3>
ID_RECONSTRUCTION
<fk1>FK_RECON_ALIGNEDTRACKS
ID_ALIGNEDZONE
FK_RECON_ALIGNEDZONE
ID_VOLUMETRACK
POSX
TB_ALIGNEDZONES
POSY
ID
<ak>
GRAINS
ID_ZONE
<pk,fk1>
AREASUM
ID_RECONSTRUCTION <pk,fk2>
SLOPEX
PLATE
SLOPEY
MAPXX
SIGMA
MAPXY
MAPYX
MAPYY
MAPDX
MAPDY
FK_ALIGN_ZONESTRACKS
MAPDZ
SLOPEDSX
SLOPEDSY
SLOPEMSX
SLOPEMSY
REFX
REFY
REFZ
DOWNZ
UPZ
FK_USERS_PRIVILEGES
TB_SELECTIONS
ID
ID_OPERATION
ID_SELECTOR
SELECTIONTEXT
SELECTIONDATE
DESCRIPTION
FK_VOLTKS_ALIGNBASE
TB_SITES
TB_PRIVILEGES
FK_SITES_PRIVILEGES
ID
<ak>
ID_USER
<pk,fk1>
NAME
<pk>
ID_SITE
<pk,fk2>
LATITUDE
REQUESTSCAN
LONGITUDE
REQUESTWEBANALYSIS
LOCALTIMEFUSE
REQUESTDATAPROCESSING
REQUESTDATADOWNLOAD
REQUESTPROCESSSTARTUP
FK_PROCOPERA_RECON
TB_PROCSTARTUPSELECTIONS
ID
ID_BRICK
PLATE
CALIBRATION
Z
ISCS
EXPOSURESTART
EXPOSUREFINISH
MAPXX
MAPXY
MAPYX
MAPYY
MAPDX
MAPDY
FK_BATCHES_PLATES
<ak>
<pk,fk>
<pk>
<pk>
<fk4>
<fk2>
<fk1>
<fk3>
FK_VTXLOC_VSEL_SELTKS
TB_VTXLOC_SELECTION_REASONS
ID
<ak>
DESCRIPTION <pk>
FK_ZONES_ALIGNEDZONES
FK_VTXLOC_PLATES_SELS
TB_VTXLOC_SELTRACKS
<pk>
FK_MARKS_TEMPLATEMARK
TB_MARKS
ID
<ak>
ID_PLATE
<pk,fk1>
ID_TEMPLATEMARK <fk2>
POSX
POSY
ID
ID_PLATE
ID_MACHINE
ID_PROGRAMSETTINGS
ID_REQUESTER
TEMPLATEMARKS
REQUESTTIME
STARTTIME
ENDTIME
FK_MARKS_PLATE
Bricks and Plates
TB_ZONES
ID
<pk>
ID_BATCH
<fk>
MINX
MAXX
MINY
MAXY
RAWDATAPATH
STARTTIME
ENDTIME
BASETHICKNESS
FK_ZONES_MIPBASE
FK_BATCHES_ZONES
TB_MIPEMULSIONTRACKS
FK_ZONES_MIPEMU
FK_BASE_UPTRACK
ID
<pk>
ID_ZONE <fk>
SIDE
POSX
POSY
GRAINS
AREASUM
SLOPEX
SLOPEY
SIGMA
TB_MIPBASETRACKS
ID
ID_ZONE
POSX
POSY
GRAINS
AREASUM
SLOPEX
SLOPEY
SIGMA
ID_DOWNTRACK
ID_UPTRACK
FK_BASE_DOWNTRACK
Scanning Data
<pk>
<fk1>
ID
<ak>
ID_VTXLOC_SEL
<pk,fk1>
ID_BASETRACK
<pk,fk2>
ID_MOTHERTRACK
FK_VTXLOC_SELRSN_SELTKS
ID_REASON
<fk3>
Vertex Location
FK_VTXLOC_MIPBASE_SELTKS
<fk3>
<fk2>
FK_ALIGNEDBASE_MIPBASE
SELECTIONTEXT
SELECTIONDATE <pk>
DESCRIPTION
<pk>
ISTRANSPORT
PWD
NAME
<pk>
SURNAME <pk>
INSTITUTION
ID_SITE
<fk>
EMAIL
ADDRESS
PHONE
Updated DB Schema
FK_SELECTIONS_USERS
Scanning Predictions
TB_PROC_OPERATIONS
FK_OPERATIONS_PROCOPERATIONS
ID
ID_PROCESS
ID_OPERATION
ID_MACHINE
STARTTIME
FINISHTIME
<ak>
<pk,fk3>
<pk,fk1>
<fk2>
FK_PROCOPS_VTXLOCS
Event R
FK_USERS_PROGSETTINGS
FK_PROCESSES_PROCOPS
FK_PROCSTARTUPS_PROCS
MAPDX
MAPDY
MAPDZ
SLOPEDSX
SLOPEDSY
SLOPEMSX
SLOPEMSY
REFX
REFY
REFZ
DOWNZ
UPZ
TB_PROCESSES
TB_PROGRAMSETTINGS
ID
<pk>
ID_BRICK <fk>
STARTTIME
FINISHTIME
ID
MODULENAME
MODULEIDENTITY
SETTINGS
ID_AUTHOR
<ak>
<pk>
<pk>
FK_PROGSETTING_RECON
TB
ID
ID_PLA
ID_PRO
ID_SEL
ID_SEL
FK_VTXLOC_USERS_VSELS
<fk>
FK_VTXLOC_SEL_VSEL
FK_PROGSETTING_BATCHES
TB_BRICKS
FK_TEMPLATEMARKSETS
ID
<pk>
MINX
MAXX
MINY
MAXY
MINZ
MAXZ
TB_BATCHES
TB_PLATES
TB_TEMPLATEMARKSETS
ID
ID_BRICK
ID_MARK
POSX
POSY
MARKROW
MARKCOL
SHAPE
<ak>
<pk,fk>
<pk>
FK_PLATES_BRICK
<pk>
<pk>
FK_BATCHES_REQUESTER
FK_BRICKS_PROCESSES
ID
ID_BRICK
PLATE
CALIBRATION
Z
ISCS
EXPOSURESTART
EXPOSUREFINISH
MAPXX
MAPXY
MAPYX
MAPYY
MAPDX
MAPDY
FK_BATCHES_PLATES
<ak>
<pk,fk>
<pk>
<pk>
<fk4>
<fk2>
<fk1>
<fk3>
FK_VTXLOC_VSEL_SELTKS
FK_ZONES_ALIGNEDZONES
FK_VTX
TB_VTXLOC_S
<pk>
FK_MARKS_TEMPLATEMARK
TB_MARKS
ID
<ak>
ID_PLATE
<pk,fk1>
ID_TEMPLATEMARK <fk2>
POSX
POSY
ID
ID_PLATE
ID_MACHINE
ID_PROGRAMSETTINGS
ID_REQUESTER
TEMPLATEMARKS
REQUESTTIME
STARTTIME
ENDTIME
FK_MARKS_PLATE
Bricks and Plates
TB_ZONES
ID
<pk>
ID_BATCH
<fk>
MINX
MAXX
MINY
MAXY
RAWDATAPATH
STARTTIME
ENDTIME
BASETHICKNESS
FK_ZONES_MIPBASE
FK_BATCHES_ZONES
TB_MIPEMULSIONTRACKS
FK_ZONES_MIPEMU
FK_BASE_UPTRACK
ID
<pk>
ID_ZONE <fk>
SIDE
POSX
POSY
GRAINS
AREASUM
SLOPEX
SLOPEY
SIGMA
TB_MIPBASETRACKS
ID
ID_ZONE
POSX
POSY
GRAINS
AREASUM
SLOPEX
SLOPEY
SIGMA
ID_DOWNTRACK
ID_UPTRACK
FK_BASE_DOWNTRACK
Scanning Data
<pk>
<fk1>
ID
ID_VTXLOC_SE
ID_BASETRACK
ID_MOTHERTRA
ID_REASON
Verte
FK_VTXLOC_MIPBASE_SELT
<fk3>
<fk2>
REDICTIONS
<ak>
<pk>
<pk>
TRACKS
OPS
Updated DB Schema
TB_PHYSICSIDS
TB_VERTEXTYPES
ID
<ak>
DESCRIPTION <pk>
ID
<ak>
DESCRIPTION <pk>
FK_PHYSIDS_PREDTRACKS
TB_PREDICTEDTRACKS
ID
ID_PREDICTION
ID_TRACK
ID_PHYSICS
POSX
POSY
POSZ
SLOPEX
SLOPEY
CHI2
TB_VERTICES
ID
<pk>
ID_RECONSTRUCTION <fk1>
POSX
POSY
FK_VERTEXTYPES_VERTICES
POSZ
AVERAGEDISTANCE
ID_VERTEXTYPE
<fk2>
FK_PHYSIDS_VOLTKS
<ak>
<pk,fk1>
<pk>
<fk2>
FK_RECON_VERTICES
FK_VOLTKS_UPVTX
TB_VOLUMETRACKS
ID
ID_RECONSTRUCTION
SIGMA
FK_VOLTKS_DOWNVTX
DOWNZ
UPZ
DOWNPOSX
DOWNPOSY
DOWNPOSZ
DOWNSLOPEX
DOWNSLOPEY
UPPOSX
UPPOSY
FK_RECON_VOLTKS
UPPOSZ
UPSLOPEX
UPSLOPEY
MOMENTUM
ENERGY
ID_PARTICLE
RECONSTRUCTIONNOTES
ID_DOWNVERTEX
ID_UPVERTEX
<pk>
<fk1>
<fk4>
<fk2>
<fk3>
Predictions and Final Results with Physics Info
FK_PROCSTART_PREDTKS
FK_MACHINES_SITE
TB_MACHINES
ID
NAME
ADDRESS
ISSCANNINGSERVER
ISBATCHSERVER
ISDATAPROCESSINGSERVER
ISWEBSERVER
ISDATABASESERVER
ISLOCALMASTERCONTROLLER
ID_SITE
<ak2>
<pk>
<ak1>
FK_VOLTKS_ALIGNBASE
TB_SITES
TB_PRIVILEGES
FK_SITES_PRIVILEGES
ID
<ak>
ID_USER
<pk,fk1>
NAME
<pk>
ID_SITE
<pk,fk2>
LATITUDE
REQUESTSCAN
LONGITUDE
REQUESTWEBANALYSIS
LOCALTIMEFUSE
REQUESTDATAPROCESSING
REQUESTDATADOWNLOAD
REQUESTPROCESSSTARTUP
FK_PROCOPERA_RECON
TB_RECONSTRUCTIONS
ID
ID_RECONSTRUCTOR
ISCOMPLETE
ID_PROGRAMSETTINGS
ID_PROCESSOPERATION
FK_BATCHES_MACHINES
<fk>
System Management
TB_USERS
ID
USERNAME
PWD
NAME
SURNAME
INSTITUTION
ID_SITE
EMAIL
ADDRESS
PHONE
FK_MACHINES_PROCOPERATIONS
FK_SITES_USERS
ons
TB_PROC_OPERATIONS
FK_OPERATIONS_PROCOPERATIONS
ID
ID_PROCESS
ID_OPERATION
ID_MACHINE
STARTTIME
FINISHTIME
<ak>
<pk,fk3>
<pk,fk1>
<fk2>
FK_USERS_PROGSETTINGS
TB_PROCESSES
TB_PROGRAMSETTINGS
ID
ID
<pk>
FK_RECON_USERS
<ak1>
<ak2>
<pk>
<pk>
<fk>
FK_PROCOPS_VTXLOCS
FK_PROCESSES_PROCOPS
<ak>
TB_ALIGNEDBASETRACKS
ID
ID_MIPBASETRACK
<fk3>
ID_RECONSTRUCTION
<fk1>FK_RECON_ALIGNEDTRACKS
ID_ALIGNEDZONE
FK_RECON_ALIGNEDZONE
ID_VOLUMETRACK
POSX
TB_ALIGNEDZONES
POSY
ID
<ak>
GRAINS
ID_ZONE
<pk,fk1>
AREASUM
ID_RECONSTRUCTION <pk,fk2>
SLOPEX
PLATE
SLOPEY
MAPXX
SIGMA
MAPXY
MAPYX
MAPYY
MAPDX
MAPDY
FK_ALIGN_ZONESTRACKS
MAPDZ
SLOPEDSX
SLOPEDSY
SLOPEMSX
SLOPEMSY
REFX
REFY
REFZ
DOWNZ
UPZ
FK_USERS_PRIVILEGES
TB_OPERATIONS
ID
<ak>
NAME
<pk>
ISSCANNING
ISTRANSPORT
<pk>
<fk2>
Event Reconstruction
FK_PROGSETTING_RECON
<pk>
<fk1>
<fk4>
<fk3>
<fk2>
Updated DB Schema
Overall structure unaltered, only fine tuning of data types and table columns
To assess performance, tuning must be done in real-life conditions
Not only benchmarks, but real use of DB for test exposure data
Updated DB Schema
DB size estimate
(depends on Physics as well as instrumental needs)
Assumptions for minimum size:
25000 events (OPERA half data set + tests, technical runs...)
Few data from CS (< 100 tracks per sheet), so they are negligible
Intercalibration through 4 track maps per sheet, 100 tracks / map
All sheets in a brick are intercalibrated (conservative)
1 candidate is followed on 28 sheets on average (conservative)
1 “interesting points” per event (vtx, decays, e.m. showers, ...)
3 pass scanning (Vtx location, selection, precision measurement)
100 cosmics / background / fake microtracks in each zone
Updated DB Schema
DB size estimate
(depends on Physics as well as instrumental needs)
Assumptions for maximum size:
50000 events (OPERA full data set + tests, technical runs...)
Few data from CS (< 100 tracks per sheet), so they are negligible
Intercalibration through 4 track maps per sheet, 100 tracks / map
All sheets in a brick are intercalibrated (conservative)
10 candidates are followed on 28 sheets on average (conservative)
3 “interesting points” per event (vtx, decays, e.m. showers, ...)
3 pass scanning (Vtx location, selection, precision measurement)
100 cosmics / background / fake microtracks in each zone
Updated DB Schema
DB size estimate
(depends on Physics as well as instrumental needs)
Results:
Assuming 100 bytes / track + aligned reconstructions, we have
0.11÷2.3 TB
Including safety factors for possible underestimations, the DB size
should stay within
DBSize < 2.5 TB
To estimate the network bandwidth needed, we assume that the
full dataset is read 10 times during 5 years’ data taking
0.055÷1.2 Mbit/s ON AVERAGE
Distributed DB Implementation
Workstation DB Group
Workstation DB Group
Core DB
Scanning DB
Scanning DB
Distributed DB Implementation
Core DB Group:
Centralized location
Full OPERA emulsion data set
Multimaster replication (each machine has one copy)
Scanning DB:
One machine per each scanning site (+ optional backup)
Copy of the subset of locally produced scanning data
Materialized views (each machine stores only locally produced data)
The full dataset is still accessible in a transparent way
Minimum network traffic
Distributed DB Implementation
Pilot DB farm
Core DB Group Simulation:
Two Dell servers with high speed (1 Gbit) Ethernet connection
Scanning DB Simulation:
One Dell server machine with a materialized view of Salerno data
Normal 100 Mbit/s LAN connection
DB Client Technologies
Several client connection technologies are being explored
Goal: highest possible data availability for Oracle data
Windows:
ODBC, OLE DB, Oracle ODP.NET, ADO, ADO.NET
Linux:
Oracle OCI C++ libraries, Perl, Tcl/Tk, Python, GNOME-DB, J2EE
Mono (.NET) Oracle provider
DB Client Technologies
Oracle and Windows:
Working with DB is common practice in the Windows community.
Oracle provides both the DB server and several client tools / libraries.
Oracle 9i Database Server consists of 3 installation disks (2.4 GB).
We have made several performance tests to choose the best access
method. Since our code will be under .NET, the ADO.NET layer was
common to all tests.
OCI C++: low level API, much harder than other methods.
ODBC: general DB library.
OLE DB: 50% faster than ODBC. OK!
Oracle Data Provider (ODP.NET): slightly slower (~10%?) than OLE DB.
DB Client Technologies
Oracle and Linux:
Oracle is fully committed to supporting the Linux operating system.
Indeed, Oracle was the first commercial database available on Linux.
All key Oracle products including Oracle 9i Database, Application Server,
Collaboration Suite, Developer Suite and E-Business Suite.
Oracle 9i Database consists of 3 cpio archive files ( ~ 1.4 Gb).
We installed it on a Red Hat 7.3 Linux Distribution.
DB Client Technologies
Oracle and Linux: OCI C++
Oracle Call Interface (OCI) is the Oracle software allowing access to the
database from an external application.
In principle, you can use this C-based API to build a Database application
from scratch.
Oracle and Linux: Perl
Perl is probably the most famous open source language.
It is an interpreted scripting language easy to learn and extremely quick.
It is widely used in Internet and Database applications.
DB Client Technologies
Oracle and Linux: Perl
Perl Database applications are based on the DBI module, an object
oriented architecture module. This module requires a specific database
dependent driver (DBD::Oracle) to connect to the database
Perl 5 Script
Perl DBI
DBD:: Oracle
Oracle DB
Oracle OCI
DB Client Technologies
Oracle and Linux: Perl
A sample Perl script to access data from Oracle
use strict ;
use DBI ;
# Connection to the DB
my $dbh = DBI -> connect(dbi:Oracle:operadb,operausr,operapwd);
# Database SQL Query
my $sql = qq { SELECT Grains,SlopeX,SlopeY FROM MIPBaseTracks};
# Execute SQL Query
my $sth = $dbh ->prepare ($sql);
$sth -> execute ();
# Loop on the table
While (my ($run,$event,$ntracks)= $sth->fetchrow_array){
# Here you can do whatever you want with the data
}
DB Client Technologies
Oracle and Linux: Tcl/Tk
Tcl is an excellent scripting language created in 1987 by John Ousterhout.
In 1988 he started to develop a graphic tool called Tk.
From that moment on, Tcl/Tk is one of the most favourite language in the
Open Source community.
Oratcl is the module allowing the connection to an Oracle database.
The connection to the database can be tested interactively using the Tcl
shell.
DB Client Technologies
Oracle and Linux: Tcl/Tk
A sample Tcl/Tk script to access data from Oracle
tclsh
%package require Oratcl
%set handle [oralogon operausr/operapwd@operadb]
%set cursor [oraopen $handle]
%orasql $cursor {select Grains,SlopeX,SlopeY from MIPBaseTracks}
%orafetch $cursor
25 0.400 0.003
32 0.231 0.005
……………
%oraclose $cursor
%oralogoff $handle
%exit
DB Client Technologies
Oracle and Linux: Perl/Tk
Tk is wrapped inside Perl. So you can combine Perl quickness
with Tk graphics capabilities.
Oraexplain is the Perl/Tk module used to connect a program to an Oracle
database.
Oraexplain scripts are more complex because they involve graphical
elements like windows, buttons and frames. You can use them to develop
login windows or more complex graphics applications.
DB Client Technologies
Oracle and Linux: Python
Python is a GUI open source and object-oriented
scripting language created by Guido van Rossum.
It is used for any kind of application: GUI, XML, email, ….
DCOracle is the module used to connect a Python script to an Oracle
database.
With Python you can define classes and re-use them in other scripts.
DB Client Technologies
Oracle and Linux: GNOME-DB
The GNOME-DB project aims to provide a free unified data
access architecture to the GNOME project. GNOME-DB is
useful for any application that accesses persistent data
(not only databases), since it now contains a pretty good
data management API.
We are currently testing the GNOME-DB libraries.
Oracle and Windows/Linux: Mono
ADO.NET Data Provider for Oracle databases works on
Windows and Linux with Oracle 8i and higher versions.
We are currently testing the Mono ADO.NET libraries.
Tests in progress: Web applications with Apache, JSP, PHP, Java, JDBC
DB Client Libraries
We are developing a full set of .NET / Mono classes specific to Opera DB
OperaDb
Namespaces in black
OperaDb::Connection
Classes in dark red
OperaDb::Transaction
OperaDb::Scanning
OperaDb::Scanning::Batch
OperaDb::Scanning::LinkedZone
OperaDb::Scanning::MIPBaseTrack
Who does not want to use SQL can
program the DB in C++, C#, VB,
FORTRAN, and so on, using these classes
OperaDb::Scanning::MIPIndexedEmulsionTrack
OperaDb::TotalScan
OperaDb::TotalScan::Layer
OperaDb::TotalScan::Segment
OperaDb::TotalScan::Track
OperaDb::TotalScan::Volume
OperaDb::ComputingInfrastructure
OperaDb::ComputingInfrastructure::Machine
OperaDb::ComputingInfrastructure::ProgramSettings
OperaDb::ComputingInfrastructure::User
OperaDb::ComputingInfrastructure::UserPermissions
OperaDb::ComputingInfrastructure::Site
More classes to come...
DB Client Libraries
Code samples
Sample #1: How to store a scanning zone into Opera DB
C++:
idZone = LinkedZone::Save(pMyZone, idBatch, rawDataPath, startTime, endTime, dbConn, dbTrans);
C#:
idZone = LinkedZone.Save(MyZone, idBatch, rawDataPath, startTime, endTime, dbConn, dbTrans);
Sample #2: How to retrieve a volume reconstruction from Opera DB
C++:
Volume *pVol = new Volume(dbConn, dbTrans, idVolume, true);
C#:
Volume Vol = new Volume(dbConn, dbTrans, idVolume, true);
Sample #3: How to convert a scanning zone from Opera DB to ROOT file
C++:
SySal:: Root::Opera::LinkedZone::Save(new LinkedZone(dbConn, dbTrans, idZone), filePath);
C#:
SySal.Root.Opera.LinkedZone.Save(new LinkedZone(dbConn, dbTrans, idZone), filePath);
Conclusions
The DB architecture that has been proposed some months ago is working
Oracle 9iDS looks a very good choice
(easy to implement, maintain, and develop; widely supported)
Even people that are not familiar with SQL can easily work with the
proposed structure of emulsion DB using interface libraries
All interesting OS are supported by Oracle and by our interface libraries
Conversion to Root data is trivial (1 line of code)
Interface libraries for OperaDB are almost (95%) complete
...everything fine up to now!
Related documents