A couple of weeks, I published a series of three articles explaining two papers published by the AWS Aurora team. The papers discussed the internal design of Aurora and the design considerations for building high throughput cloud-native database.
The series which you can find here, discussed the following papers:
- Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databases
- Amazon Aurora: On Avoiding Distributed Consensus for I/Os, Commits and Membership Changes
Contents
Part 1:
In this part we go over some of the main ideas behind the design of Aurora such as:
- Decoupling the compute tier from the storage tier.
- A discussion of what durability in databases mean.
- A discussion of consistency is usually achieved in distributed systems via quorum protocols.
- How Aurora leverages a segmented storage model to achieve a constant, expected repair times.
- How Aurora achieves availability via storage replication.
Part 2:
In this part we go over the following:
- The amplified writes problems caused by the 6-way replication used in Aurora.
- An example of a conventional mirrored MySQL setup and its drawbacks.
- A discussion of what are database redo logs and how they are used to achieve durability.
- How Aurora leverages redo logs only during replication to solve the burden of amplified writes.
- A benchmark comparison of the gain Aurora achieves by only depending on redo logs during replication.
Part 3:
In this part we go over the following:
- How Aurora handles writes by keeping storage consistency points and advancing them.
- How Aurora improves writes throughput by using redo logs.
- How Aurora handles replication failures via gossiping protocols.
- How Aurora achieves almost instant crash recovery.
- How Aurora makes reads efficient by doing single segment reads instead of quorum reads while keeping consistency.
- How Aurora scales read throughput via read replicas.
- How Aurora handles failures in quorum sets and how it handles membership changes.
What will you learn?
This is series should give you:
- A brief introduction into consistency in distrusted systems.
- A brief idea on the basic rules of quorum protocols.
- A good understanding of how MySQL executes and persists queries.
- A detailed understanding of how Aurora works internally.
- Important ideas in distributed systems in general.
I hope it will be useful!