DRAFT -- November 25, 1987 8:16:11 am PST -- DRAFT
Internal Memo
ToFrom
DistributionBob Hagmann
 PARC/CSL
SubjectDate
Yggdrasil Implementation: Phase 1 Plan November 25, 1987
Introduction
This memo addresses the issue of how to implement the first phase of Yggdrasil.
Features needed in Phase 1
Below are the features of the system as taken from the overview memo. In strikeout are the features that are to be omitted in phase 1.
f large number of documents
f documents can be large
f documents can be small
f documents ``types'' understood by the system include text, bitmaps, digitized audio, digitized video (?), graphics, ...
f documents ``types'' are extensible
f documents can be connected via links (hypertext)
f documents can be named via a ``hierarchical'' name system
f documents can have attributes and keywords
f documents are grouped into contexts called containers
f keyword and other indices maintained per container
f support for versions and alternatives
f data compression and decompression
f support for archival storage
f alerters (send a message when a system event occurs)
f query language and query optimizer
f page level access within a document
f transactions
f robust
f good performance
f fast recovery
f good availability
f hooks for multi-server and foreign server support
Implementation factoring
Server Level 0
Disk.mesa and below
The system has to have some way do finding and using ``raw'' disks. This is Disk.mesa in Cedar. We have to do something on SUN OS to interface to their ``raw'' disks.
Low level communications support
Runtime support
B-tree and other data structures
Server Level 1
Buffer manager
Similar to the file and segment layers of Cypress and the file page manager of Alpine.
Log manager
Lock manager
Transaction manager
Access Control
Server Communications
Multi-frontend coordination manager
Server Level 2
Object encoder/decoder
Similar to the page layer of Cypress.
Backup and backup recovery
Crash recovery
DID manager
Performance monitoring and historical and debugging logging
Client
Client stub for Cedar
xxx
Test code from Cedar client