The primary goal of CORAL is to provide functionality for accessing data in relational databases using a C++ and SQL-free API, shielding the user from the technology-specific APIs and removing at the same time the need to submit directly SQL commands. Therefore CORAL allows the development of software components that can be used without any code modification or conditional constructs against multiple relational technologies.
A user is not expected to be an expert on all possible optimization techniques relevant to a particular relational technology. This is handled as much as possible by the RDBMS-specific implementations of the CORAL interfaces. In fact, a user is expected to be familiar only with the basic concepts of relational database systems, while the only SQL fragments that would ever have to be provided are the condition clauses in queries. On the other hand, the CORAL interfaces have been designed such that a user is guided towards standard "best" practices in RDBMS programming, such as variable binding, result-set prefetching, bulk operations, etc.
The CORAL API is limiting the set of generated SQL statements to a relational server to a rather small subset of whatever would be possible through an interface for issuing arbitrary SQL statements. Thanks to this feature, applications which are based on CORAL are easier to monitor and tune.
CORAL is expected to be used by applications running on a grid-enabled and distributed environment. In such environment there is a need to
The acritecture and design of CORAL provides the relevant infrastructure and mechanisms addressing these issues.