|
Abstract : |
"You cannot step twice into the same river; for fresh waters are ever flowing in upon you." Heraclitus, circa. 500 B.C. There are a variety of advanced database features which require the ability to manipulate "virtual" database states along with the actual stored state; examples of this include rule-based triggers in active databases, support for hypothetical reasoning, and some concurrent transaction processing systems. This paper introduces the database programming language Heraclitus[Rel], which provides a general framework for experimenting with the semantics and implementation of virtual states. The primary novel feature presented is the notion of a delayed update or delta, which is a first-class value representing a set of proposed modifications to the state. Deltas can be created, inspected, and combined without committing to the given modifications. Heraclitus[Rel] provides a rich relational calculus sublanguage that can be used to compute relations and deltas. The usual notion of "safety " for calculus formulas is extended to support both a sophisticated notion of quantifiers and the use of variables and functions defined elsewhere in a program. Safe formulas can be translated into extended relational algebra expressions for evaluation. 1, |