Vast differences in terminology aside, there is considerable
overlap between work in knowledge representation, programming
language data types, and database models. Our current work on
the Cedar programming environment has necessitated integrating
a number of ideas in these areas.
As part of the Cedar project in the Computer Science Lab at
Xerox PARC, we have been constructing a database
management system. The goal of the Cedar environment is to
greatly increase our productivity by combining the best currently
known principles from programming languages, programming
tools, and user interfaces into a single integrated system. Cedar
is based on the Mesa programming language [1]. The goal of
our database subproject of Cedar is to provide a uniform
prepackaged way to perform access to data structures, as
contrasted to the current state of affairs in which Mesa
programmers rePeatedly re-invent the facilities we intend to
provide to type, structure, index, link, robustly store, concurrently
access, and cache data stored in the primary or secondary
memory of one or more computers on a network.
An initial version of our database system is now operational; we
are testing it with some simple applications. This initial system
provides to Mesa programs concurrent transaction-based access
to distributed data at the level of tuples (records) and their fields,
with iteration over tuples satisfying some simple types of queries.
In the second phase of our database work, which we have now
begun, we are extending this low-level system to make it more
useful to both programs and end users. Three tasks are involved
in this extension, all of which involve some aspect of data
abstraction: