Scope of this project is find an alternative database to use instead of Mysql or Oracle (relational famous databases) that it is reliable and safe, reduce maintenance stop and updating in control systems, concerning various activities in the same and eliminate failure (outage loss data) of the EPICS Archiver. Sometimes is a necessary no failure and stops, for guarantee 99.999% operationally uptime, that in time means 5 minutes stop/year.
Mysql obtains that percentage with assist of clusters, reply and more, even if it is a secure program; it’s architecture is based of stand alone type and not a distributed database.
Oracle, just from the beginning, disposes of various recovery tools, for recover data and it gives more attentions to connections make use of:
- Distributed process: application that works on tie net called client, but approach on database that reside on different tie net called server. Oracle Kernel is installed on database’s tie. Most applications plug in to the same database. The management of database is divided from applications start.
- Distributed database: it’s a ensemble of database, seen as a single logical one. The user mustn’t know where data physically live (location transparency). Each physically database stay independent by the others in any case (site autonomy).
The developers of CSS, have implemented “the archiveEngine”, for better use the dialog in Mysql and Oracle, as so as optimize both performance.
Also in this case, the most performance was Oracle; only one drawback using Oracle, was that’s a very expensive database; so often the choice of which program used, rebound on Mysql or on the old Archiver with the database embedded.
Please, have a look to first results on Hypertable performance tests, managed by Mauro Giacchini at Brookhaven National Laboratories with Robert Petkus, he decided to modify actual Archive Engine, as so use Hypertable, and in a second time able to modify CSS for the retrieval of historicize data, instead of Mysql or Oracle on Hypertable, and it visualized data by means of data browser.
Hypertable is a database supplied by GNU licence, that manage application with big dimensions data set; it’s quick to find errors and fails-over and be found on big table idea of Google.
You can find more informations on web site www.hypertable.com
How we decide to proceed.
We let all the actual configuration structures in Mysql and we memorized only the samples on Hyper table. This choice has been done for been sure on Hypertable performance, before substitute the complete structure. The most critical part is in fact in the storing of the samples
A Second phase of the project foreseen sample trace, stored in hypertable and shown them inside CSS using DataBrowser.
The first phase with samples insertion and them extractions, is finished til 30/05/2010, just in time to the 2010 Spring Epics Collaboration Meeting.
Archivengine
Here below a structure image of actual database in Mysql, for better understand what has been changed. As you can see from tables relevant to samples are Sample and Array value.

Archive engine is formed by two plug-ins
- org.csstudio.archive.engine;
- org.csstudio.archive.rdb;
Inside you can find these packages:
- org.csstudio.archive.engine
- org.csstudio.archive.engine.model
- org.csstudio.archive.engine.scanner
- org.csstudio.archive.engine.server
- org.csstudio.util.stats
- org.csstudio.util.time
- org.csstudio.archive.rdb
- org.csstudio.archive.rdb.engineconfig
- org.csstudio.archive.rdb.engineconfig.test
- org.csstudio.archive.rdb.internal
- org.csstudio.archive.rdb.internal.test
In the TAR you find in the following link, you will find my self modified as follow:
RDBArchive.java where I connect myself to hyper table and recall one of the following status as the scheme memorized in hypertable:
EngineModel.java wher every 500 samples, will done a flush on hypertable the same that in MySql.
Archivereader
We start from existing plug-in org.csstudio.srchivereder.rdb and then we create another one with modifications necessary to connect to mysql and hypertable; the package you will find at the follow link.
The classes, that I modiefed, are: