The selective replication work, described above, is a major part of this, as it becomes even more important in mobile environments where users are constrained by disk space, communication time, and communication cost. Papers regarding selective replication can be found on my list of papers . Of course, any large distributed project has its accompanying distributed algorithms. Of major note, I designed two. The first are algorithms to perform version vector compression.
Version vectors are the entities used to perform versioning in the replication system.
They guarantee to detect all updates, properly allow gossiping of updates between third-party sites, and detect all concurrent updates or conflicts. Unfortunately, they traditionally don't scale well, because one element of the vector is needed for each replica that has ever produced an update. We improve on the algorithm from Ficus to lessen the impact on users from garbage collection. There is much to say here, but there is also much to do. You can read more about ROAM on ROAM's web page .