DRAFT -- November 25, 1987 8:16:11 am PST -- DRAFT Internal Memo XEROX To From Distribution Bob Hagmann PARC/CSL Subject Date 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