SAABlog
DatabaseIntermediate

RDS vs Aurora vs DynamoDB: AWS Database Selection Guide

Choose RDS/Aurora for relational data, DynamoDB for NoSQL. Master AWS database service selection criteria frequently tested on SAA-C03 exam.

PHILOLAMB-Updated: January 31, 2026
RDSAuroraDynamoDBDatabaseNoSQL

Related Exam Domains

  • Domain 2: Design Resilient Architectures
  • Domain 3: Design High-Performing Architectures

Key Takeaway

Choose RDS/Aurora for SQL data and complex queries, DynamoDB for unlimited scaling and millisecond latency. Aurora is the high-performance version of RDS (5x MySQL, 3x PostgreSQL faster), and DynamoDB is fully serverless NoSQL.

Exam Tip

Exam Essential: Relational + complex JOINs = RDS/Aurora, Key-value + unlimited scale + millisecond response = DynamoDB


Three Services at a Glance

ComparisonRDSAuroraDynamoDB
Data ModelRelational (SQL)Relational (SQL)Non-relational (NoSQL)
Supported EnginesMySQL, PostgreSQL, MariaDB, Oracle, SQL ServerMySQL, PostgreSQLKey-value, Document
Max Storage64TiB128TiB (auto-scaling)Unlimited
Read ReplicasUp to 5Up to 15Global Tables
Auto FailoverRequires Multi-AZBuilt-inBuilt-in
Serverless Option✅ Aurora Serverless✅ Fully serverless
Management LevelManagedManagedFully managed
Cost ModelInstance + StorageInstance + I/ORCU/WCU or On-demand

Amazon RDS

What is RDS?

RDS (Relational Database Service) is a managed service that makes it easy to set up, operate, and scale relational databases. It automates hardware provisioning, database setup, patching, and backups.

RDS Management Scope:

AWS Manages           │ You Manage
──────────────────────┼──────────────────
Hardware              │ Schema design
OS patches            │ Query optimization
DB engine patches     │ Index management
Backups               │ Application code
High availability     │ Parameter tuning

RDS Supported Database Engines

EngineFeaturesBest For
MySQLOpen source, most commonWeb apps, general purpose
PostgreSQLAdvanced features, GIS supportComplex queries, analytics
MariaDBMySQL fork, community-drivenMySQL alternative
OracleEnterprise featuresExisting Oracle workloads
SQL ServerMicrosoft ecosystem.NET applications

RDS Ideal Use Cases

  • Traditional OLTP workloads: Transaction processing
  • On-premises migration: Minimal code changes
  • Complex JOIN queries: Relational data model
  • Oracle/SQL Server licenses: BYOL (Bring Your Own License)

Amazon Aurora

What is Aurora?

Aurora is a cloud-native relational database that is MySQL and PostgreSQL compatible while providing up to 5x (MySQL) or 3x (PostgreSQL) better performance.

Aurora Architecture:

                ┌─────────────────────────────────────┐
                │     Aurora Storage Cluster          │
                │  (6 copies auto-distributed in 3 AZs) │
                │                                     │
                │   AZ-a    │    AZ-b    │    AZ-c   │
                │   ██ ██   │   ██ ██   │   ██ ██   │
                └─────────────────────────────────────┘
                          ↑               ↑
                    ┌─────────────┐ ┌─────────────┐
                    │   Writer    │ │   Reader    │
                    │ (Primary)   │ │ (Replica)   │
                    └─────────────┘ └─────────────┘
                          ↑               ↑
                       Writes        Reads (up to 15)

Aurora vs RDS Comparison

ItemRDSAurora
PerformanceBaselineMySQL 5x, PostgreSQL 3x
StorageManual provisioning (max 64TiB)Auto-scaling (max 128TiB)
ReplicasUp to 5Up to 15
Replication LagSecondsMilliseconds
Failover1-2 minutes~30 seconds
BackupS3 backupContinuous, incremental
CostLower20-30% higher

Aurora Unique Features

1. Aurora Serverless v2

Auto-scales based on usage:
- Charged per ACU (Aurora Capacity Unit)
- Auto-adjusts between 0.5-128 ACUs
- Ideal for dev/test environments

2. Aurora Global Database

Sub-second global replication:
- 1 primary region + up to 5 secondary regions
- Sub-second reads from secondary regions
- RTO < 1 minute disaster recovery

3. Aurora Cloning

Clone TB-scale databases in seconds:
- Copy-on-Write method
- No impact on source data
- Perfect for test environments

Aurora Ideal Use Cases

  • High-performance OLTP: When exceeding MySQL/PostgreSQL limits
  • Read-heavy workloads: Utilize 15 read replicas
  • Variable traffic: Cost optimization with Aurora Serverless
  • Global applications: Reduce latency with Global Database

Exam Tip

Exam Point: "MySQL/PostgreSQL compatible + high performance + auto-scaling storage" keywords → Choose Aurora


Amazon DynamoDB

What is DynamoDB?

DynamoDB is a fully managed NoSQL database that delivers single-digit millisecond performance at any scale. Server provisioning, patching, and scaling are fully automated.

DynamoDB Data Model:

Table: Users
┌─────────────────────────────────────────────────┐
│ Partition Key │ Sort Key  │ Attributes          │
├───────────────┼───────────┼─────────────────────┤
│ user_001      │ profile   │ {name, email, ...}  │
│ user_001      │ order#001 │ {items, total, ...} │
│ user_001      │ order#002 │ {items, total, ...} │
│ user_002      │ profile   │ {name, email, ...}  │
└─────────────────────────────────────────────────┘
        ↓
   Data distributed by partition key → Unlimited horizontal scaling

DynamoDB Core Concepts

ConceptDescription
TableData collection (schemaless)
ItemEach record in table
AttributeData field in item
Partition KeyData distribution criteria (required)
Sort KeySorting within partition (optional)
GSI/LSISecondary indexes (support different query patterns)

DynamoDB Capacity Modes

1. Provisioned Capacity

- RCU (Read Capacity Unit): Read units per second
- WCU (Write Capacity Unit): Write units per second
- Best for predictable traffic
- Auto Scaling available

2. On-Demand Capacity

- Pay per request
- No capacity planning needed
- Best for unpredictable traffic
- ~2.5x cost vs provisioned

DynamoDB Unique Features

1. DynamoDB Streams

Real-time capture of table changes:
INSERT/UPDATE/DELETE → Stream → Lambda trigger
- Real-time event processing
- Data replication/sync

2. Global Tables

Multi-region replication:
Seoul ↔ Virginia ↔ Frankfurt
- Automatic multi-master replication
- Local reads/writes (low latency)
- Auto-failover on region failure

3. DAX (DynamoDB Accelerator)

In-memory cache:
Application → DAX → DynamoDB
- Microsecond response times
- Read-heavy workloads
- Apply without API changes

DynamoDB Ideal Use Cases

  • Massive scale required: Millions of requests per second
  • Low latency mandatory: Single-digit milliseconds
  • Simple query patterns: Key-based lookups
  • Serverless architecture: Lambda integration
  • Session management: Auto-expire with TTL
  • Gaming leaderboards: Fast reads/writes

Exam Tip

Exam Point: "Unlimited scale", "millisecond latency", "serverless", "key-value" keywords → Choose DynamoDB


Selection Criteria Guide

By Data Model

Data Type Decision Tree:

Are data relationships complex?
       │
       ├── YES: Need JOINs/transactions → Relational (RDS/Aurora)
       │           │
       │           ├── Standard performance sufficient → RDS
       │           └── High performance/auto-scale → Aurora
       │
       └── NO: Simple key-value lookups → DynamoDB

By Workload

Workload CharacteristicRecommended Service
Complex SQL queriesRDS/Aurora
ACID transactionsRDS/Aurora (DynamoDB has limited support)
Frequent schema changesDynamoDB
10K+ requests/secondDynamoDB
Predictable performanceDynamoDB
Read-heavy (reporting)Aurora (15 read replicas)
Fully serverlessDynamoDB / Aurora Serverless

SAA-C03 Exam Focus Points

  1. Data model: Relational = RDS/Aurora, NoSQL = DynamoDB
  2. Aurora performance: MySQL 5x, PostgreSQL 3x, 15 read replicas
  3. DynamoDB characteristics: Serverless, unlimited scale, millisecond latency
  4. Aurora storage: Auto-scaling, 128TiB, 6 copies
  5. DynamoDB Global Tables: Multi-region multi-master
  6. Capacity modes: Provisioned vs On-demand

Exam Tip

Sample Exam Question: "A company needs to serve profile data to global users with single-digit millisecond latency. The data is simple key-value. What is the most appropriate solution?" → Answer: DynamoDB Global Tables (unlimited scale + millisecond response + multi-region)


Frequently Asked Questions

Q: Should I always choose Aurora over RDS?

No. Aurora performs better but costs 20-30% more. RDS is more suitable for small workloads, dev/test environments, or when Oracle/SQL Server is required.

Q: What if I need JOINs in DynamoDB?

Handle it at the application level. DynamoDB doesn't support JOINs, so you need to denormalize data or combine multiple query results in your application. Consider RDS/Aurora if you need many JOINs.

Q: When should I use Aurora Serverless?

When traffic is irregular or intermittent. Cost-effective for dev/test environments, workloads with no nighttime traffic, or unpredictable traffic. Provisioned instances are cheaper for consistent 24/7 traffic.

Q: How do I choose between DynamoDB Provisioned and On-demand?

Based on traffic predictability. If you know traffic patterns, Provisioned (with Auto Scaling) is cheaper. For unpredictable or new workloads, start with On-demand and consider switching after understanding patterns.

Q: Is migrating from RDS to Aurora easy?

Relatively easy for MySQL/PostgreSQL. You can create an Aurora cluster directly from an RDS snapshot. To minimize downtime, create an Aurora Read Replica and promote it.

Q: Can I use DynamoDB and Aurora together?

Yes, hybrid architecture is possible. A common pattern is storing transactional data in Aurora and session/cache/fast-lookup data in DynamoDB.



References