cs0104008/impl.tex
1: \section{Implementation of the ZEUS Tag Database}
2: \label{sec:impl}
3: 
4: The ZEUS tag database was implemented using the Objectivity/DB database
5: management system. This commercial software product of Objectivity
6: Inc.~\cite{OBJECTIVITY} is an object-oriented database management
7: system based on the concept of database federations. 
8: Objectivity/DB can handle databases up to a limit of 10000 petabytes.
9:  
10: A number of other HEP experiments are currently using or planning to use
11: Objectivity/DB for their event storage. An example is the BaBar
12: experiment at SLAC~\cite{BABAR} which was the first HEP experiment to
13: choose this product. Other examples are the future experiments at the
14: CERN LHC, for which the RD45 project at CERN~\cite{RD45}
15: had studied databases with sizes of up to several terabytes in order to
16: establish that Objectivity/DB could be used for storing the event data
17: of the LHC experiments. These experiments expect to record data samples of
18: several petabytes, about two orders of magnitude larger than the
19: volume expected for the ZEUS event data.
20: 
21: The code for the ZEUS tag database system is written in C++. This was
22: the natural choice given the selection of an object-oriented database
23: management system. Since most ZEUS code is written in FORTRAN, it was
24: necessary to provide an interface layer in order to make the system usable
25: by all physicists in the experiment with minimal modifications to their
26: analysis codes. This layer mimics the existing FORTRAN interface layer
27: between the analysis codes and the data storage.
28: 
29: Figure~\ref{fig:datamodel} shows the data model of the tag database at
30: different levels of detail. Figure~\ref{fig:datamodel}(a) shows event
31: and MDST objects. An event object contains run and event numbers as
32: well as a variable-length array of more than 200 event variables with
33: information on kinematics, identified particles, calorimetry, tracking and
34: jets, as well as the selection bits used in event directories. An
35: overview of the stored variables is given in Appendix~\ref{app:a}.
36: \begin{figure}[htbp]
37:   \begin{center}
38:     \epsfig{file=pix/datamodel.eps,height=23cm}
39:     \caption{A sketch of the data model of the ZEUS tag database. }
40:     \label{fig:datamodel}
41:   \end{center}
42: \end{figure}
43: All events of a given run are stored in one {\it container} of
44: Objectivity/DB. Several of these containers are grouped
45: together into one {\it database} of the federation. The size of these
46: databases is kept small ( around 200~MB ) for convenience of data
47: management. This is illustrated in Figure~\ref{fig:datamodel}(b).
48: Finally, as shown in Figure~\ref{fig:datamodel}(c), all these
49: databases make up the {\it federated database}.
50: Figure~\ref{fig:datamodel}(c) also shows how additional event data
51: could be stored in the system. This part could be implemented in the
52: future if needed.
53: 
54: