Service comparisons / Amazon RDS vs Amazon Aurora vs Amazon DynamoDB
RDS vs Aurora vs DynamoDB
Amazon RDS runs familiar relational engines, Aurora is AWS's cloud-built MySQL and PostgreSQL-compatible database, and DynamoDB is serverless key-value NoSQL. When to choose each for the exam.
Last checked against AWS documentation · How we write our content
| Question | Amazon RDS | Amazon Aurora | Amazon DynamoDB |
|---|---|---|---|
| Use it when | You need a standard relational engine, including Oracle, SQL Server or Db2 | You want MySQL or PostgreSQL compatibility with more speed, scale and faster failover | Access is by key, at any scale, with single-digit millisecond latency |
| Data model | Relational, SQL, joins and transactions | Relational, SQL, joins and transactions | Key-value and document; no joins |
| High availability | Multi-AZ standby (or a Multi-AZ cluster with readable standbys) | Six copies of data across three AZs; replicas take over in about 30 seconds or less | Built in across three AZs; global tables for multi-Region |
| Read scaling | Read replicas (up to 15 for MySQL, MariaDB and PostgreSQL) | Up to 15 Aurora Replicas behind one reader endpoint | Partitioning by key; DAX for microsecond cached reads |
| Capacity | You choose an instance size; storage can autoscale | Provisioned instances or Aurora Serverless v2 | On-demand or provisioned capacity, no servers |
Database questions turn on two things: whether the data is relational, and how much scale and availability the scenario asks for.
How to choose
- Lift-and-shift of an Oracle or SQL Server database: RDS for that engine, since Aurora only speaks MySQL and PostgreSQL.
- MySQL or PostgreSQL with heavy reads, fast failover or cross-Region disaster recovery: Aurora, with Aurora Replicas and Aurora Global Database.
- Unpredictable or intermittent relational load: Aurora Serverless v2.
- Simple lookups by ID at huge scale, such as sessions, carts, gaming state or IoT readings: DynamoDB.
- Multi-Region active-active writes: DynamoDB global tables.
Exam traps
- RDS Multi-AZ is for availability, not read scaling. In the classic setup, the standby serves no traffic. Reads go to read replicas.
- Read replicas are asynchronous, so reads from a replica can lag slightly behind writes.
- “Microsecond reads” for DynamoDB is DAX. ElastiCache is the general-purpose cache in front of RDS or Aurora.
- A DynamoDB hot partition comes from a partition key with too few distinct values. The fix is a key with more spread, not more capacity.