Fusible Data Structures for Fault-Tolerance
Vijay K. Garg, Vinit A. Ogale · 2007
We introduce the concept of fusible data structures to maintain fault-tolerant data in distrib-uted programs. Given a fusible data structure it is possible to combine a set of such structures into a single fused structure that is smaller than the combined size of the original structures. When any of the original data structures is updated, the fused structure can be updated incre-mentally using local information about the update and does not need to be entirely recomputed. In case of a failure, the fused structure, along with the correct original data structures, can be used to efficiently reconstruct the failed structure. We show that many commonly used data structures like arrays, hash tables, stacks and queues are fusible and we present algorithms to fuse and recover such structures. This approach often requires significantly less space than conventional backups by replication and still allows efficient operations on the original data structures. For example, our experiments with fault servers on a distributed system suggests that for a system with k servers, this approach requires k times less space than the active replication approach.