- Kleppmann, M. (2017). Designing data-intensive applications: The big ideas behind reliable, scalable, and maintainable systems. “ O’Reilly Media, Inc.”.
There are various reasons why you might want to distribute a database across multiple machines:
- Scalability
- Fault tolerance/high availability
- Latency
Replication
Replication means keeping a copy of the same data on multiple machines that are connected via a network. All of the difficulty in replication lies in handling changes to replicated data.
- 使数据和用户地理邻近 (减少延迟)
- 系统部分故障也能继续工作 (提高可用性)
- 横向扩展处理读取请求 (提高读取吞吐量)
In this chapter we will assume that your dataset is so small that each machine can hold a copy of the entire dataset.

