AWS Aurora vs RDS vs DynamoDB – Database Services Compared
AWS offers multiple database services, each designed for different workloads. Amazon Aurora, Amazon RDS, and Amazon DynamoDB are three of the most widely used options. Understanding their architecture, scaling capabilities, pricing models, and ideal use cases is critical for both real-world implementations and AWS certification exams.
Overview
- Amazon RDS – Managed relational database service supporting MySQL, PostgreSQL, MariaDB, Oracle, and SQL Server. Handles provisioning, patching, backup, and failover.
- Amazon Aurora – Cloud-native relational database compatible with MySQL and PostgreSQL. Part of the RDS family but with a fundamentally redesigned storage architecture delivering up to 5x MySQL and 3x PostgreSQL throughput.
- Amazon DynamoDB – Fully managed, serverless NoSQL key-value and document database delivering single-digit millisecond performance at any scale.
Architecture
Amazon RDS Architecture
- Traditional database architecture with compute and storage tightly coupled on a single instance
- Uses Amazon EBS (gp3 or io2) for storage, attached to a single DB instance
- Multi-AZ deployment creates a synchronous standby replica in another AZ for failover
- Multi-AZ DB Clusters (MySQL/PostgreSQL) provide one writer + two readable standbys across 3 AZs with faster failover (~35 seconds)
- Read Replicas use asynchronous replication (up to 15 for MySQL/MariaDB, 5 for PostgreSQL/Oracle/SQL Server)
- Supports ENA Express for improved Multi-AZ replication (2026)
Amazon Aurora Architecture
- Separation of compute and storage – fundamentally different from RDS
- Shared distributed storage volume spanning 3 AZs with 6 copies of data
- Writes acknowledged when 4 of 6 copies confirm (quorum-based)
- Tolerates loss of 2 copies without write impact, 3 copies without read impact
- Storage auto-scales from 10 GB up to 128 TB with no provisioning
- Up to 15 low-latency read replicas sharing the same storage volume (replication lag typically <10ms)
- Failover to read replica in <30 seconds (shared storage means no data copy needed)
- Aurora Serverless – auto-scales compute capacity in ACU (Aurora Capacity Units); scales to zero; up to 30% better performance with enhanced scaling (2026)
- Aurora Global Database – cross-region replication with <1 second lag, RPO <1 second
- Aurora DSQL (GA May 2025) – distributed SQL with active-active multi-region writes, 99.999% availability, PostgreSQL-compatible
Amazon DynamoDB Architecture
- Fully serverless – no instances to provision or manage
- Distributed across multiple AZs automatically (data replicated 3 times)
- Partitioned by partition key for horizontal scalability
- Supports key-value and document data models
- Global Tables – active-active multi-region replication with multi-region strong consistency (MRSC, GA 2025) enabling zero RPO
- Cross-account replication for Global Tables (2026)
- DAX (DynamoDB Accelerator) provides microsecond read latency via in-memory caching
Data Model
| Feature | RDS | Aurora | DynamoDB |
|---|---|---|---|
| Type | Relational (SQL) | Relational (SQL) | NoSQL (Key-Value / Document) |
| Schema | Fixed schema, structured data | Fixed schema, structured data | Flexible schema, semi-structured |
| Query Language | SQL | SQL (MySQL/PostgreSQL compatible) | PartiQL, API-based access |
| Transactions | Full ACID | Full ACID | ACID (up to 100 items, 4 MB) |
| Joins | Yes (complex queries) | Yes (complex queries) | No native joins (denormalized design) |
| Secondary Indexes | Standard SQL indexes | Standard SQL indexes | GSI and LSI (max 20 GSI, 5 LSI) |
Scaling
Vertical Scaling
| Aspect | RDS | Aurora | DynamoDB |
|---|---|---|---|
| Compute scaling | Instance class change (requires downtime/failover) | Instance class change OR Aurora Serverless (auto-scales ACUs in seconds) | N/A – fully serverless, automatic |
| Storage scaling | Manual increase (up to 64 TB); auto-scaling with threshold | Automatic (10 GB to 128 TB, no action needed) | Unlimited – fully managed |
| Max storage | 64 TB (io2), 16 TB (gp3) | 128 TB | Virtually unlimited |
Horizontal Scaling
| Aspect | RDS | Aurora | DynamoDB |
|---|---|---|---|
| Read scaling | Up to 5-15 Read Replicas (async) | Up to 15 Read Replicas (shared storage, <10ms lag); Auto Scaling | Automatic partitioning; DAX for caching |
| Write scaling | Single writer (vertical only) | Single writer (Aurora DSQL supports multi-region active-active writes) | Automatic horizontal partitioning; virtually unlimited write throughput |
| Global distribution | Cross-Region Read Replicas | Aurora Global Database (<1s replication); Aurora DSQL (active-active) | Global Tables (active-active, multi-region strong consistency) |
Pricing
| Component | RDS | Aurora | DynamoDB |
|---|---|---|---|
| Compute | Per-hour instance pricing | Per-hour (provisioned) or per-ACU-second (serverless) | No compute charges (serverless) |
| Storage | EBS: ~$0.115/GB/month (gp3) | $0.10/GB/month (includes replication) | $0.25/GB/month (Standard); $0.10/GB (IA) |
| I/O | Included in EBS pricing (gp3: 3000 IOPS free) | $0.20/million I/O requests (Standard); Aurora I/O-Optimized eliminates I/O charges for +30% compute cost | On-demand: $1.25/million WRU, $0.25/million RRU; Provisioned: ~$0.00065/WCU/hour |
| Savings options | Reserved Instances (1yr/3yr) | Reserved Instances (1yr/3yr) | Reserved Capacity (up to 77% savings, 3yr); On-demand 50% price reduction (2024) |
| Free Tier | 750 hrs/month db.t2.micro or db.t3.micro (12 months) | $100 credits at sign-up for Aurora Serverless | 25 GB storage + 25 WCU + 25 RCU (always free) |
Cost Comparison Note: Aurora instances cost ~20% more per vCPU than equivalent RDS instances. However, Aurora’s shared storage and automatic replication often result in lower total cost for high-availability workloads. DynamoDB is most cost-effective for simple access patterns with predictable traffic (provisioned mode) or highly variable traffic (on-demand mode).
Performance
| Metric | RDS | Aurora | DynamoDB |
|---|---|---|---|
| Throughput | Standard MySQL/PostgreSQL performance | Up to 5x MySQL, 3x PostgreSQL throughput | Virtually unlimited (scales with partitions) |
| Latency | Low milliseconds | Low milliseconds (optimized I/O path) | Single-digit milliseconds; microseconds with DAX |
| Read Replica lag | Seconds to minutes (async) | <10ms (shared storage) | Eventually consistent reads return latest; strongly consistent available |
| Connection model | Connection-based (limited by instance) | Connection-based; RDS Proxy for pooling | HTTP API (connectionless, unlimited concurrent) |
Availability & Durability
| Feature | RDS | Aurora | DynamoDB |
|---|---|---|---|
| SLA | 99.95% (Multi-AZ) | 99.99% (Multi-AZ) | 99.99% (single region); 99.999% (Global Tables) |
| Failover time | ~60 seconds (Multi-AZ instance); ~35 seconds (Multi-AZ cluster) | <30 seconds (shared storage) | Automatic, transparent (no failover concept) |
| Data replication | Synchronous to 1-2 standbys | 6 copies across 3 AZs (quorum writes) | 3 copies across multiple AZs |
| Cross-region DR | Cross-Region Read Replicas (manual promotion) | Aurora Global Database (managed failover, RPO <1s) | Global Tables (active-active, zero RPO with MRSC) |
Backup & Disaster Recovery
| Feature | RDS | Aurora | DynamoDB |
|---|---|---|---|
| Automated backups | Daily snapshots + transaction logs; retention 0-35 days | Continuous backup to S3; retention 1-35 days | Continuous backups with PITR (35-day retention) |
| Point-in-time recovery | Yes (to any second within retention) | Yes (to any second); Backtrack for in-place rewind (MySQL only) | Yes (to any second within 35 days) |
| Manual snapshots | Yes (retained until deleted) | Yes (retained until deleted) | On-demand backups (retained until deleted) |
| Cross-region backup | Copy snapshots cross-region; AWS Backup (Multi-AZ clusters in 17 regions, 2026) | Copy snapshots cross-region; AWS Backup | AWS Backup cross-region/cross-account |
| Restore method | Creates new DB instance | Creates new cluster (Backtrack restores in-place) | Creates new table |
Security
| Feature | RDS | Aurora | DynamoDB |
|---|---|---|---|
| Network isolation | VPC, Security Groups, Private Subnets | VPC, Security Groups, Private Subnets | VPC Endpoints (Gateway); no VPC placement needed |
| Encryption at rest | AES-256 with KMS (must enable at creation) | AES-256 with KMS (must enable at creation) | AES-256 with KMS (enabled by default) |
| Encryption in transit | SSL/TLS | SSL/TLS (enforced by default) | TLS (all API calls over HTTPS) |
| Authentication | DB user/password, IAM DB Auth, Kerberos/AD | DB user/password, IAM DB Auth, Kerberos/AD | IAM policies, fine-grained access control (condition keys) |
| Access control | IAM for management; DB-level GRANT for data | IAM for management; DB-level GRANT for data | IAM policies with item-level and attribute-level control |
When to Choose Each Service
Choose Amazon RDS When:
- You need a traditional relational database with minimal migration effort
- You require Oracle, SQL Server, or MariaDB engine support
- Budget is a primary concern and Aurora’s premium isn’t justified
- Workload is moderate with predictable growth
- You need OS-level access (RDS Custom for Oracle/SQL Server)
- Simple Multi-AZ failover meets your HA requirements
Choose Amazon Aurora When:
- You need MySQL/PostgreSQL compatibility with significantly higher performance
- High availability (99.99% SLA) and fast failover (<30s) are critical
- You need 15 read replicas with minimal lag
- Storage auto-scaling up to 128 TB is required
- You need global distribution with Aurora Global Database
- Variable workloads benefit from Aurora Serverless (scale to zero)
- You want Backtrack for in-place point-in-time rewind (MySQL)
- You need distributed SQL with active-active writes (Aurora DSQL)
Choose Amazon DynamoDB When:
- You need single-digit millisecond latency at any scale
- Access patterns are well-defined (key-value lookups, simple queries)
- You need virtually unlimited horizontal scaling for reads and writes
- Serverless/zero-management operation is a priority
- Global active-active replication is needed (Global Tables)
- Event-driven architectures (DynamoDB Streams → Lambda)
- Gaming leaderboards, session stores, IoT data, shopping carts
- Traffic is highly variable or unpredictable (on-demand mode)
Comprehensive Comparison Table
| Feature | Amazon RDS | Amazon Aurora | Amazon DynamoDB |
|---|---|---|---|
| Database Type | Relational (SQL) | Relational (SQL) | NoSQL (Key-Value/Document) |
| Engines | MySQL, PostgreSQL, MariaDB, Oracle, SQL Server | MySQL-compatible, PostgreSQL-compatible | Proprietary NoSQL |
| Management | Managed (provisioned instances) | Managed (provisioned) or Serverless | Fully serverless |
| Max Storage | 64 TB | 128 TB (auto-scaling) | Unlimited |
| Performance | Standard engine performance | 5x MySQL / 3x PostgreSQL | Single-digit ms; microseconds with DAX |
| Read Replicas | Up to 5-15 (async) | Up to 15 (shared storage, <10ms lag) | N/A (automatic distribution) |
| Write Scaling | Vertical only | Vertical (DSQL: horizontal) | Automatic horizontal |
| Availability SLA | 99.95% | 99.99% | 99.99% / 99.999% (Global) |
| Failover | ~35-60 seconds | <30 seconds | Automatic (no downtime) |
| Backup | Automated + Manual snapshots | Continuous + Backtrack + Snapshots | PITR (35 days) + On-demand backups |
| Global Replication | Cross-Region Read Replicas | Global Database (<1s lag) | Global Tables (active-active, MRSC) |
| Serverless Option | No | Aurora Serverless (scale to zero) | Fully serverless (always) |
| Transactions | Full ACID | Full ACID | ACID (limited scope) |
| Best For | Traditional RDBMS workloads, multi-engine support | High-performance relational, global apps | High-scale key-value, serverless apps |
AWS Certification Practice Questions
Question 1
A company is designing a new e-commerce platform that requires sub-millisecond read latency for its product catalog, which contains millions of items accessed by product ID. The application has unpredictable traffic spikes during flash sales. Which database solution is MOST appropriate?
- Amazon RDS MySQL with Multi-AZ deployment
- Amazon Aurora PostgreSQL with Read Replicas
- Amazon DynamoDB with DAX
- Amazon RDS PostgreSQL with ElastiCache
Answer: C
Explanation: DynamoDB with DAX provides microsecond read latency for key-value lookups. Its on-demand mode handles unpredictable traffic spikes without pre-provisioning. The product catalog accessed by product ID is a perfect key-value pattern.
Question 2
A financial services company needs a relational database with 99.99% availability, automatic storage scaling, and the ability to perform point-in-time recovery by rewinding the database to a specific time without creating a new instance. Which service supports this requirement?
- Amazon RDS Multi-AZ with automated backups
- Amazon Aurora MySQL with Backtrack
- Amazon DynamoDB with PITR enabled
- Amazon RDS Multi-AZ DB Cluster with AWS Backup
Answer: B
Explanation: Aurora Backtrack (MySQL only) allows rewinding the database in-place to a specific point in time without creating a new cluster. Combined with Aurora’s 99.99% SLA and auto-scaling storage, it meets all requirements. RDS PITR creates a new instance, not an in-place rewind.
Question 3
A global gaming company needs a database that supports active-active writes across multiple AWS Regions with strong consistency and zero RPO for disaster recovery. The data model is simple player profiles accessed by player ID. Which solution meets these requirements?
- Amazon Aurora Global Database with managed failover
- Amazon RDS with Cross-Region Read Replicas
- Amazon DynamoDB Global Tables with multi-region strong consistency (MRSC)
- Amazon Aurora DSQL with multi-Region cluster
Answer: C
Explanation: DynamoDB Global Tables with MRSC (GA 2025) provides active-active multi-region writes with strong consistency and zero RPO. The simple key-value access pattern (player ID lookup) is ideal for DynamoDB. Aurora Global Database is single-writer with RPO <1s (not zero). Aurora DSQL also supports multi-region active-active writes but the simple data model makes DynamoDB the most appropriate choice.
Question 4
A startup is building a SaaS application with variable traffic. During business hours, the database handles 10,000 transactions/second, but at night traffic drops to near zero. They need MySQL compatibility and want to minimize costs. Which solution is MOST cost-effective?
- Amazon RDS MySQL with Reserved Instances
- Amazon Aurora MySQL Serverless
- Amazon DynamoDB with on-demand capacity
- Amazon Aurora MySQL provisioned with Auto Scaling replicas
Answer: B
Explanation: Aurora Serverless scales compute capacity automatically based on demand and can scale to zero during idle periods. This is the most cost-effective option for variable workloads requiring MySQL compatibility. RDS Reserved Instances charge for 24/7 capacity. DynamoDB doesn’t provide SQL/MySQL compatibility.
Question 5
A company is migrating a legacy Oracle database to AWS. The application uses complex SQL queries with multiple joins, stored procedures, and requires Oracle-specific features. They need Multi-AZ high availability. Which AWS database service should they use? (Select TWO)
- Amazon Aurora PostgreSQL (Oracle-compatible mode)
- Amazon RDS for Oracle with Multi-AZ
- Amazon DynamoDB with complex access patterns
- Amazon RDS Custom for Oracle with Multi-AZ
- Amazon Aurora MySQL with stored procedures
Answer: B, D
Explanation: Amazon RDS for Oracle provides managed Oracle database with Multi-AZ HA. RDS Custom for Oracle allows OS and database customization for Oracle-specific features requiring elevated access. Aurora does not support Oracle. DynamoDB doesn’t support SQL joins or stored procedures. Note: RDS Custom for Oracle EOL is March 31, 2027 – plan migration to RDS for Oracle or alternative.
Key Takeaways
- RDS is the go-to managed relational database when you need specific engines (Oracle, SQL Server, MariaDB) or traditional RDBMS at moderate scale
- Aurora is the premium relational choice for MySQL/PostgreSQL workloads needing higher performance, better availability, and advanced features like Serverless, Global Database, and Backtrack
- DynamoDB is the choice for NoSQL key-value workloads requiring unlimited scale, serverless operation, single-digit millisecond latency, and global active-active replication
- All three services integrate with AWS security features (KMS encryption, IAM, VPC/VPC Endpoints, CloudTrail)
- Cost optimization: Use Reserved Instances (RDS/Aurora) or Provisioned + Reserved Capacity (DynamoDB) for steady workloads; use Aurora Serverless or DynamoDB On-Demand for variable workloads