CORAL 1.9.1 User guide

12 October 2007

Table of Contents

1. Introduction
2. Software Project Scope
3. CORAL Architecture
4. Developing Client Software Components
5. Public API Description
6. Public API Reference
7. Implementation Components

About this document

CORAL is a software toolkit which is part of the LCG Persistency Framework. This document is a User Guide targeting mainly developers of software components using directly the CORAL API.

The User Guide describes the overall architecture of the system as it has derived from the need to serve the relevant use cases coming from the LHC experiments. It gives guidelines for developing efficient CORAL-based components and applications. Finally, it describes all released components in detail.

1. Introduction

CORAL is the set of software deliverables of the "Database Access and Distribution" work package of the POOL project. The development of libraries for the vendor-independent database access, collectively referred to as the Relational Abstraction Layer (RAL), started within POOL in spring 2004. At that time the main requirement that needed to be met was the creation of an insulation layer that would allow the development of software components responsible for accessing data in RDBMS without the knowledge of the subtle differences among the various technology-specific solutions. The access patterns which had to be served were the ones followed by the existing relational components of POOL, which were implemented based on particular technologies, and were used either in production (FileCatalog, Collection) or in validation/prototyping (Relational Storage Manager, Conditions Database) environments.

The RAL is publicly available with every POOL release as of June 2004 together with the first direct clients such as the RelationalFileCatalog and RelationalCollection components. Since then the usage of RAL in POOL has been extended with the development of the RelationalStorageService component and the COOL (Conditions Database) project. At the same time within the LHC experiment software projects new applications have been developed using directly the RAL public API in order to serve different use cases from the ones which were the basis for the definition of the RAL architecture and design. Given that the software components based on RAL are expected to be used in a grid-enabled and distributed environment, RAL had to be extended in order to address issues such as database service indirection, client-side monitoring and certificate-based authentication mechanisms.

In spring 2005 a formal review took place of the existing RAL API with feedback from the direct clients of RAL, within and outside POOL. In this review all the emerging use cases have been considered. The outcome was the design of an improved version of RAL which is now being developed and packaged independently of the rest of the POOL components under the new name CORAL (COmmon Relational Abstraction Layer).