next up previous contents
Next: Relay Up: A Simple Shared Data Previous: Shared Data Spaces

Design of a Simple Shared Data Space

  This chapter describes the design of Relay, a simple shared data space. The goal of this system is to build a fundamental structure for satisfying the basic needs of DCAs, in particular, shared state, client side updates, and data consistency. Caches replicate shared data on a user's machine, client-side updates are handled through a cache/application API, and cache consistency is enforced with an eventual consistency protocol. With respect to the other aspects of a shared data space, i.e., cache management and disconnected operation, performance and functionality are sacrificed for the sake of simplicity. This simple shared data space is intended to be a reference and building block for more advanced designs.

The design for this system centers on replication of shared data. When a cached object is modified, an update record is created. The update must be transmitted to all clients. Each client will decide if the update should be applied.

There are many design decisions that affect the path an update takes between the client that creates it and the clients that apply it. How does an update enter the system? How is it replicated to all clients? What criteria determines if it is applied? When is it applied and exposed to the user?

Our implementation of a simple shared data space is based on a client/server structure. Client-side Relay caches accept updates from DCA applications, and forward them to a Relay server for propagation to all clients. When caches receive an update from the server, they use timestamps from logical clocks [11] and a ``last writer wins'' policy to determine if the update should be applied.





Carmine F. Greco
Wed Mar 26 23:44:38 EST 1997