This paper presents Alpine, a distributed file system which supports atomic transactions. Alpine was built to aid database research efforts at Xerox PARC; but, once available and reliable, Alpine also became a general-purpose file server for the utilitarian storage of databases, documents, and programs. It is written in Cedar, an advanced PARC programming language and support environment.
The paper is particularly interesting for three reasons: (1) Alpine was built to assist other research and was not itself a research effort per se. It thus exhibits the robustness of careful engineering: its builders, reducing theory to practice, had to make the hard decisions which can be deferred when experimenting and prototyping. Alpine works. (2) Despite a conservative design, Alpine inherits unusual and curious properties from Cedar, an efficient, strongly typed compiled language running on specialized PARC hardware. Helpful Cedar features included garbage collection, lightweight processes, remote procedure calls, run-time type discrimination, and package interfaces kept distinct from their implementations. (3) Alpine differs from most server file systems in two respects: atomic file update is supported using a redo log, rather than shadow pages; and client access is provided through Cedar’s Remote Procedure Call (RPC) facility--which exports a locally transparent package interface--rather than through a communications protocol.
The paper contains eight sections: 1–3 describe Alpine’s background, motivations, and goals; 4 discusses the two guiding design choices (the use of logs and RPC); 5 and 6 present Alpine’s interfaces and implementation; 7 assesses system results and performance; 8 reviews Cedar’s influence. The interface and implementation sections (5 and 6) are useful but unclear; they read like lightly edited program documentation. Nevertheless, the paper as a whole is plausible and enlightening. Alpine tests a key design strategy: placing support for atomic transactions within the file system rather than in file system clients. This approach offers both conceptual and practical benefits, including Alpine’s tenfold performance improvement over its predecessor.
The paper will be of interest to scholars, and it is quite important for implementors of database systems, file servers, operating systems, and distributed applications.