Amazon Aurora: MySQL on Steroids

Amazon Aurora: MySQL on Steroids

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:

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!