Virtual files: a framework for experimental design
Abstract
The increasing power and decreasing cost of computers has resulted in them being applied
in an ever widening area. In the world of Computer Aided Design it is now practicable to
involve the machine in the earlier stages where a design is still speculative, as well as in the
later stages where the computer's calculating ability becomes paramount. Research on
database systems has not followed this trend, concentrating instead on commercial applications,
with the result that there are very few systems targeted at the early stages of the
design process. In this thesis we consider the design and implementation of the file manager
for such a system, first of all from the point of view of a single designer working on an
entire design, and then from the point of view of a team of designers, each working on a
separate aspect of a design.
We consider the functionality required of the type of system we are proposing, defining the
terminology of experiments to describe it. Having ascertained our requirements we survey
current database technology in order to determine to what extent it meets our requirements.
We consider traditional concurrency control methods and conclude that they are incompatible
with our requirements. We consider current data models and conclude that, with the
exception of the persistent programming model, they are not appropriate in the context
required, while the implementation of the persistent programming model provides transactions
on data structures but not experiments.
The implementation of experiments is considered. We examine a number of potential
methods, deciding on differential files as the one most likely both to meet our requirements
and to have the lowest overheads. Measurements conducted on both a preliminary and a
full-scale implementation confirm that this is the case. There are, nevertheless, further
gains in convenience and performance to be obtained by exploiting the capabilities of the
hardware to the full; we discuss these in relation to virtual memory systems, with particular
reference to the VAX/VMS environment.
Turning to the case where several designers are each working on a (nearly) distinct part of
a design, we consider how to detect conflicts between experiments. Basing our approach on
optimistic concurrency control methods, we show how read and write sets may be used to
determine those areas of the database where conflicts might arise. As an aside, we show
how the methods we propose can be used in an alternative approach to optimistic concurrency
control, giving a reduction in system overheads for certain applications. We consider
implementation techniques, concluding that a differential files approach has significant advantages
in maintaining write sets, while a two-level bitmap may be used to maintain read
sets efficiently.