I. Introduction
Providing highly available data access operations is a common challenge in computer sciences. The data access operations are to read or write the data. If a system depends only on a single replica, it greatly limits the availability of the data. Thus, an increasing number of replicas to save the data objects becomes necessary, which as a result improves the availability of the data. This makes the system more fault-tolerant since data can be accessed by other replicas, as well. However, now the challenge comes up in managing those replicas to eliminate the consistency as well as concurrency problems. For instance, if there are multiple replicas of the same data object and one of them is updated with a new value and a user accesses the value from another replica (that stills keeps the old value), this is an incorrect value. This is not the intended behavior of the system, which is known as the consistency problem. In addition, the data must be exclusively locked for the write operation to again adhere to the correctness notion. These problems indicate that creating several replicas with simply the aim of achieving high availability does not yield the expected outcome at all.