In this section, we describe the implications of extending traditional replication models to provide various degrees of support for adaptation-aware editing and progressive update propagation.
We assume that it is possible to decompose documents into their component structure (e.g., pages, images, sounds, video). Component decomposition can be guided by the document's file format, or by a policy set by the content provider or by the client. For example, HTML documents [24], as well as documents from popular productivity tools [4] use well defined tags to signal the presence of multimedia elements such as images, sounds, and videos.
Multiple versions of a component can co-exist in different replicas. Two versions of a component may differ because they have different creation times, and hence reflect different stages in the development of the component, or because they have different fidelity levels. We consider two fidelity classes: full and partial. For a given creation time, a component can have only one full-fidelity version but many partial-fidelity versions. A component is present at full fidelity when its version contains data that is equal to the data when the version was created. Conversely, a component is present with partial fidelity if it has been lossily transcoded from the component's original version. Fidelity is by nature a type-specific notion, and hence there can be a type-specific number of different partial-fidelity versions. We assume that it is possible to determine whether one version has higher fidelity than another one.
This discussion considers both pessimistic and optimistic replication models. A pessimistic replication model guarantees that at most one replica modifies a component at any given time, and that a replica does not modify a component while it is being read by some other replica. The mutual exclusion guarantee can be realized by various mechanisms, such as locks or invalidation messages. With optimistic replication, replicas may read and write components without any synchronization. A manual or automatic reconciliation procedure resolves conflicts caused by concurrent writes on different replicas.
Replication models are typically represented by state diagrams, and we follow this general paradigm. The states and transitions for a replication model are independent of the specific mechanisms used for consistency maintenance and depend only on whether the replication model is pessimistic or optimistic. The discussion in this section is therefore independent of specific mechanisms used for consistency maintenance, such as invalidations, leases, or timeouts. The mechanisms for consistency maintenance only determine what events trigger specific transitions (e.g., transition from Clean to Empty on receiving an invalidation message). This discussion is also independent of the specific mechanisms used to propagate versions between replicas. The use of data or operation shipping, as well as optimizations, such a version diffing, are implementation decisions that do not affect the underlying replication model.
We consider both primary replica and serverless approaches. In a primary replica approach, a server holds the primary replica of the document. Clients can replicate subsets or all of the document's components by reading them from the server's primary replica. Client modifications are sent to the server, and there is no direct communication between clients. In contrast, in a serverless configuration there is no centralized server or primary replica and replicas communicate directly.
In the rest of this section, we first describe the implications of supporting adaptation-aware editing and progressive update propagation in isolation. We then describe replication models that support both mechanisms. The initial discussion assumes a primary replica. Serverless systems are discussed afterwords.