Database replication is widely used for fault-tolerance, scalability and performance.
The failure of one database replica does not stop the system from working as available replicas can take over the tasks of the failed replica.
Scalability can be achieved by distributing the load across all replicas, and adding new replicas should the load increase.
Finally, database replication can provide fast local access, even if clients are geographically distributed clients, if data copies are located close to clients.
Despite its advantages, replication is not a straightforward technique to apply, and there are many hurdles to overcome.
At the forefront is replica control: assuring that data copies remain consistent when updates occur.
There exist many alternatives in regard to where updates can occur and when changes are propagated to data copies, how changes are applied, where the replication tool is located, etc.
A particular challenge is to combine replica control with transaction management as it requires several operations to be treated as a single logical unit, and it provides atomicity, consistency, isolation and durability across the replicated system.
The book provides a categorization of replica control mechanisms, presents several replica and concurrency control mechanisms in detail, and discusses many of the issues that arise when such solutions need to be implemented within or on top of relational database systems. Furthermore, the book presents the tasks that are needed to build a fault-tolerant replication solution, provides an overview of load-balancing strategies that allow load to be equally distributed across all replicas, and introduces the concept of self-provisioning that allows the replicated system to dynamically decide on the number of replicas that are needed to handle the current load.
As performance evaluation is a crucial aspect when developing a replication tool, the book presents an analytical model of the scalability potential of various replication solution. For readers that are only interested in getting a good overview of the challenges of database replication and the general mechanisms of how to implement replication solutions, we recommend to read Chapters 1 to 4.
For readers that want to get a more complete picture and a discussion of advanced issues, we further recommend the Chapters 5, 8, 9 and 10.
Finally, Chapters 6 and 7 are of interest for those who want get familiar with thorough algorithm design and correctness reasoning.