Front Page

Applet

ATSQL
  
UC
  
TUC
  
SEQ
  
NSEQ

System
  
Guidelines
  
Requirements
  
Doc
  
Support

Information
  
Contribution
  
Warranty
  
Related Work
  
Contact
  
Future Work

Tiger is a heterogeneous software system that employs different programming paradigms. The code is a mixture of C++ (81 KB), C (14 KB), Java (88 KB), and Prolog (160 KB).

The Tiger temporal layer consists of 13 modules of Prolog as illustrated in the following figure. The Architecture An arrow indicates the direction of an import (e.g., module `eval' imports predicates from module `trans'). In the sequel, we briefly describe the functionality of the depicted modules.

tiger: Definition of global data structures and variables.

interpret: Acts as a dispatcher and controller. It receives theoutput from the parser (i.e., the parse tree) and determines the appropriate actions to be performed.

parser: Scans and parses the user input. The scanner and parser are based on the definite clause grammar (DCG). Standard parsing techniques from the literature have been employed to build a parse tree (i.e., one symbol lookahead and recursive descent). Although backtracking is an inherent feature of Prolog, it is used at very few places only. Experience has shown that the (extensive) use of backtracking results in mediocre runtime performance.

rewrite: The rewrite module performs several different tasks. First, the types of variables and constants must be checked for compatibility with the predicate definitions. Then, statements have to be normalized.

dml: Handles ATSQL data manipulation statements. Particularly, the handling of transaction time is done in this module.

trans: Translates logical formulas to Prolog structures which represent SQL-commands. These ``skeletons'' are converted to strings immediately before their execution by the underlying SQL interpreter

meta: Controls database access in general and access to the meta data of Tiger in particular. In its responsibility are different optimization strategies for meta data access. For example, we may keep parts of the meta data cached in main memory, in order to speed up the read access. Another possibility is to precompile the commands that access meta data and to store them in preinstalled cursors (see the cursor facility of Oracle for details).