Database Services: Choosing the Right Store
Domain 3 Task 3.4 turned into decisions: what managed really buys you on Amazon RDS, why Multi-AZ and read replicas are two different questions, what Aurora's auto-growing cluster volume changes, how to size DynamoDB on-demand versus provisioned capacity, when ElastiCache, Redshift, Neptune or DocumentDB is the intended answer, how AWS DMS and AWS Schema Conversion Tool split a migration, and one workload-to-store decision table you can run under exam pressure.
Domain 3 (Cloud Technology and Services) carries 34% of the CLF-C02 score, and inside it sits a task that is pure decision work: Task 3.4 "Identify AWS database services". Its five skill statements are short and blunt: "Deciding when to use EC2 hosted databases or AWS managed databases", identifying relational databases (Amazon RDS, Amazon Aurora), NoSQL databases (Amazon DynamoDB), memory-based databases (Amazon ElastiCache) and database migration tools (AWS DMS, AWS SCT). Every question built on this task has the same skeleton: a workload stem, four database names, and one right answer. The service names are easy; reading the stem is the exam.
====================================================================
CLF-C02 LESSON 10 β DATABASE SERVICES CARD (facts as of Oct 2026)
====================================================================
SCOPE (Task 3.4)
IN Aurora Β· DocumentDB Β· DynamoDB Β· ElastiCache Β· Neptune
Β· RDS (+ Redshift under Analytics; DMS + SCT under
Migration and Transfer)
OUT Amazon Keyspaces Β· Amazon MemoryDB Β· AWS AppConfig
--------------------------------------------------------------------
RDS managed relational; 6 engines: IBM Db2, MariaDB,
Microsoft SQL Server, MySQL, Oracle Database, PostgreSQL
AWS owns "backups, software patching, automatic failure
detection, and recovery"
storage max 64 TiB; gp3 baseline 3,000 IOPS / 125 MiB/s
backup retention 1-35 days (0 = automated backups off)
Multi-AZ (instance) . HA; SYNCHRONOUS standby; serves NO read
traffic; failover typically 60-120 s
Multi-AZ (cluster) .. HA + reads; failover typically < 35 s
Read replica ......... read scale-out; ASYNCHRONOUS (may be
stale); manual promotion; NO autoscaling
AURORA MySQL- and PostgreSQL-compatible; same RDS console
single cluster volume, copies across three AZs,
auto-grows to 256 TiB; up to 15 Aurora Replicas;
failover typically < 60 s, often < 30 s
DYNAMODB serverless, fully managed, distributed NoSQL;
single-digit ms at any scale; key-value + document;
item <= 400 KB; no JOINs; IAM only;
3 AZs / 99.99% SLA; global tables 99.999% SLA
on-demand (default) . pay per request, scales to zero,
instantly to 2x previous peak
provisioned ......... pay RCU/WCU whether used or not;
auto scaling target 70%
1 RCU = 1 strong read/s for items up to 4 KB
1 WCU = 1 write/s for items up to 1 KB
ELASTICACHE in-memory cache: Valkey, Memcached, Redis OSS
"microsecond reads and sub-millisecond writes"
an EPHEMERAL cache - never the system of record
Memcached ... simplest model, multi-threaded, NO replication
and NO failover
Redis OSS ... complex types, replication + automatic failover
REDSHIFT managed, petabyte-scale OLAP data warehouse,
columnar; Redshift Spectrum reads Amazon S3 directly
NEPTURE managed graph database; billions of relationships at
milliseconds latency; up to 15 Neptune Replicas
DOCUMENTDB MongoDB-compatible; up to 15 replicas; up to 256 TiB
MIGRATION AWS SCT converts schema and code
AWS DMS moves the data (one-time or ongoing CDC)
====================================================================Scope discipline. Every service presented as examinable below sits on the official CLF-C02 in-scope list or in a Domain 3 task statement. Three database services are explicitly out of scope and appear here only so you can eliminate them: Amazon Keyspaces (for Apache Cassandra), Amazon MemoryDB for Redis OSS and AWS AppConfig. Correct answers on this exam are always drawn from the in-scope list: a marketing-page favourite such as MemoryDB can never be the right choice.
In this lesson you will:
- sort every database question into the five buckets of Task 3.4;
- separate what Amazon RDS manages from what you still own;
- defeat the Multi-AZ versus read replica trap in both directions;
- compare RDS on EC2 versus self-managed using AWS's own responsibility table;
- place Amazon Aurora by compatibility, storage auto-scaling and replica count;
- size DynamoDB capacity in RCU and WCU, and pick the right capacity mode;
- one-line ElastiCache Redis OSS vs Memcached;
- separate OLAP from OLTP so Redshift stops being a distractor;
- place Neptune and DocumentDB from two-word stems;
- split a migration between AWS SCT (schema) and AWS DMS (data);
- run the workload β database decision table end to end;
- check the 2026 updates that touch databases: scope-list additions and removals, Database Savings Plans and the era-dependent Free Tier;
- study four AWS-published case studies (Netflix, Amazon Prime Video, Zendesk and Philip Morris International);
- practise with 14 exam-style questions plus four interactive checks.
1. Task 3.4: five buckets and one decision
1.1 The five skill statements, decoded
AWS writes the task as five bullets. Decode each into the one question it will ask you:
Task 3.4 skill statement | The question behind it | The answer shape |
|---|---|---|
Deciding when to use EC2 hosted databases or AWS managed databases | "We need root access to the OS and a custom kernel" vs "we want AWS to patch and back it up" | Control β EC2; least operational overhead β RDS |
Identifying relational databases (Amazon RDS, Amazon Aurora) | Stems containing SQL, joins, transactions, schemas, tables | RDS or Aurora |
Identifying NoSQL databases (Amazon DynamoDB) | Key-value or document access, huge scale, single-digit ms, no joins | DynamoDB |
Identifying memory-based databases (Amazon ElastiCache) | Cache, session store, microsecond latency, leaderboard | ElastiCache |
Identifying database migration tools (AWS DMS, AWS SCT) | Moving off Oracle/SQL Server, converting procedures, ongoing sync | SCT converts, DMS moves |
Two extra buckets are not named in the task statement but appear on the in-scope list: Redshift (placed under Analytics in the exam guide, taught here only for the warehouse-vs-transaction decision) and Neptune / DocumentDB (graph and MongoDB-compatible document stores).
1.2 The in-scope and out-of-scope lists
Category | In scope (correct answers come from here) | Out of scope (distractors: never correct) |
|---|---|---|
Database | Amazon Aurora, Amazon DocumentDB, Amazon DynamoDB, Amazon ElastiCache, Amazon Neptune, Amazon RDS | Amazon Keyspaces (for Apache Cassandra), Amazon MemoryDB for Redis OSS, AWS AppConfig |
Analytics | Amazon Redshift (warehouse decision taught in Β§6) | : |
Migration and Transfer | AWS Database Migration Service (AWS DMS), AWS Schema Conversion Tool (AWS SCT) | : |
- π Did you know? AWS's own "databases on AWS: how to choose" guidance (updated 2 June 2026) advertises 15+ database options, and the databases product page says 15+ database engines; while the CLF-C02 exam guide names six in-scope database services. The exam is not testing breadth; it is testing whether you can pick the six AWS cares about from a catalogue four times larger (as of Oct 2026; verify current before use).
1.3 Worked example E1: bucket a stem in one pass
Read the stem, underline the access pattern, then name the bucket:
"Order history must support joins against customers and
line items, with ACID writes"
-> relational bucket -> RDS (or Aurora if MySQL/PostgreSQL)
"Session data keyed by token, must return in under 1 ms"
-> memory-based bucket -> ElastiCache
"Browsing and cart traffic with unpredictable spikes,
no joins, item payloads under 400 KB"
-> NoSQL bucket -> DynamoDB (on-demand capacity mode)
"Three years of sales history aggregated into dashboards"
-> warehouse -> Redshift (OLAP, not OLTP)
"Fraud ring detection: follow account -> device -> IP -> account"
-> relationships -> Neptune (graph)
"We run MongoDB drivers against documents today"
-> MongoDB-compatible -> DocumentDB
"Convert 400 Oracle PL/SQL procedures, then stream the rows"
-> SCT converts the code, DMS streams the dataThe stem's verb is the whole question: aggregate β Redshift, traverse β Neptune, cache β ElastiCache, transact β RDS/Aurora, scale unpredictably β DynamoDB.
2. Amazon RDS: the managed relational default
2.1 What "managed" actually buys you
AWS defines Amazon Relational Database Service as a managed service that "manages backups, software patching, automatic failure detection, and recovery". The exam's version of this is a responsibility table, and AWS publishes one that compares on-premises, EC2-hosted and RDS-managed databases directly:
Capability | On-premises | Database on Amazon EC2 | Amazon RDS |
|---|---|---|---|
Application optimization | Customer | Customer | Customer |
Scaling | Customer | Customer | AWS |
High availability | Customer | Customer | AWS |
Backups | Customer | Customer | AWS |
Database and OS patching | Customer | Customer | AWS |
Hardware, power, facilities | Customer | AWS | AWS |
AWS's own conclusion is exam-relevant: "We recommend Amazon RDS as your default choice for most relational database deployments." Note the one row that never changes: application optimization (your schema, your queries, your indexes) is yours in all three columns. Shared responsibility for databases is not "AWS does everything".
2.2 Engines, instances and storage
Element | What AWS documents (as of Oct 2026) | Exam consequence |
|---|---|---|
Engines (6) | IBM Db2, MariaDB, Microsoft SQL Server, MySQL, Oracle Database, PostgreSQL | "Any of these six names" β RDS; Aurora is a separate engine family (see Β§3) |
Building block | The DB instance, using instance classes such as db.m*, db.r*, db.c*, db.t* | The db. prefix is RDS's own naming; t = burstable, r = memory |
Storage | Amazon EBS-backed, up to 64 TiB; gp3 baseline 3,000 IOPS and 125 MiB/s | A relational requirement above 64 TiB β look at Aurora (256 TiB) |
Network | Runs in a VPC, reached through security groups | Database security questions end at the security group and the VPC |
Access model | SQL, joins, multi-row transactions | "Needs JOINs / ad-hoc SQL" β RDS or Aurora, never DynamoDB |
This is the shape the exam means by relational: primary and foreign keys, rows in tables, and answers that come from joining them. The moment a stem says "the application must not JOIN" or "denormalise by design", you have left this diagram and entered NoSQL.
2.3 Multi-AZ vs Read Replicas: THE trap
This is the single most reliable question in the whole lesson, and AWS states the rule twice in the RDS User Guide: "The high availability option isn't a scaling solution for read-only scenarios. You can't use a standby replica to serve read traffic. To serve read-only traffic, use a Multi-AZ DB cluster or a read replica instead."
Multi-AZ (DB instance) | Read replica | Multi-AZ (DB cluster) | |
|---|---|---|---|
Purpose | High availability / automatic failover | Read scale-out | Availability and reads |
Replication | Synchronous | Asynchronous | Synchronous standbys |
Serves read traffic? | No: "You can't use a standby replica to serve read traffic" | Yes, read-only | Yes (all three instances) |
Failover | Automatic, typically 60 to 120 seconds | Manual promotion (disaster recovery) | Automatic, typically under 35 seconds |
Staleness risk | None (synchronous) | Yes: async means it can lag | None (synchronous) |
Cost | Second instance is billed | Every replica billed like a DB instance | Three instances |
Auto scales reads? | n/a | No: "RDS doesn't support autoscaling of read replicas" | You add/remove yourself |
Both features can coexist on the same source database: a Multi-AZ deployment for survival and a read replica for reporting. The trap works in both directions:
- "Increase read throughput / offload reporting" β read replica (Multi-AZ does nothing for reads);
- "Survive an Availability Zone failure with automatic failover" β Multi-AZ (a read replica fails over only if you promote it manually).
β οΈ Multi-AZ is not a scaling solution. AWS's wording is absolute: the high-availability option "isn't a scaling solution for read-only scenarios". Two nuances save marks: a Multi-AZ DB cluster (two readable standbys) does serve read traffic, and a read replica is asynchronous, so a replica can be stale, which is exactly why you must never route writes to one.
2.4 Worked example E2: the reporting spike
The primary MySQL database on RDS handles 400 writes/second. Month-end reporting runs 600 heavy SELECTs/second and the primary's CPU sits at 95%. Two options are proposed: enable Multi-AZ, or create a read replica. Which is correct, and why?
Question being asked : "the READS are too heavy"
Multi-AZ gives : a SYNCHRONOUS standby that serves NO reads
-> CPU stays on the primary; no relief
Read replica gives : an ASYNCHRONOUS copy that accepts SELECTs
-> reporting moves off the primary
Verdict : create a read replica, then point the
reporting job at it
Residual risk : async lag - reporting may be seconds behind;
promotion (not replication) is the DR storyFlip the stem: "the database must survive an AZ outage with automatic failover" β Multi-AZ, because a read replica's promotion is manual and its replication is asynchronous.
2.5 RDS versus a self-managed database on EC2
Task 3.4 explicitly tests this choice. The deciding question is never "which is more powerful"; it is who does the undifferentiated work.
Question the stem asks | Database on Amazon EC2 | Amazon RDS |
|---|---|---|
Who patches the database engine and the OS? | You | AWS |
Who configures backups and failure detection? | You | AWS |
Who handles scaling and high availability? | You | AWS |
Who writes the schema, queries and indexes? | You | You (unchanged) |
Do you get root/OS or a custom kernel? | Yes | No |
Exam verdict | Only when the stem demands OS/root/custom-engine control | Default choice for most relational deployments |
Worked example E3: choosing between RDS and EC2. Three stems, three verdicts:
- "A team needs PostgreSQL with AWS-managed backups, patching and Multi-AZ failover, and has no unusual OS requirements." β Amazon RDS: every requirement is on RDS's managed list, and AWS recommends it as the default.
- "A regulated workload requires a custom kernel module and full root access on the database host." β Database on Amazon EC2: RDS does not expose the operating system, so the requirement forces the EC2 route, and the team now owns patching, backups and HA.
- "The same PostgreSQL workload, but the company already runs its own backup scripts and patch calendar and refuses to change them." β EC2-hosted is legitimate, but the exam's bias is stated by AWS itself: RDS is the recommended default, so a stem that mentions only convenience of habit is usually fishing for RDS.
2.6 Backups, patching and retention
Operation | AWS behaviour (as of Oct 2026) | What you still own |
|---|---|---|
Automated backups | On by default; retention window selectable from 1 to 35 days (0 turns them off) | Choosing the window; testing restores |
Manual snapshots | Retained until you delete them | Snapshot lifecycle and cross-Region copies |
Software patching | AWS patches the engine, the OS and the host | Your maintenance window; your testing in a staging copy |
Failure detection and recovery | Automatic | Your application's retry logic and connection timeouts |
Schema, credentials, security groups, VPC | Not managed | Yours, always |
Multi-AZ / read replica choice | Not automatic | Yours: AWS never turns either one on for you |
The default retention figure is a trap of its own. The RDS User Guide verifies the range 1 to 35 days (with 0 meaning automated backups are off). The widely quoted "default value is 7 days" comes from the wording of an AWS Config rule that checks compliance, not from the RDS User Guide itself. On the exam, quote the range; if a question hinges on the default, treat it as unverified and re-check the console (as of Oct 2026).
Worked example E4: the failover budget. Application retry logic must be sized against the slowest documented failover, not the fastest:
Multi-AZ DB instance ........ typically 60-120 seconds
Multi-AZ DB cluster ......... typically under 35 seconds
Aurora failover ............. typically under 60 s, often under 30 s
Aurora Global Database
promotion (planned DR) .... in less than 1 minute
------------------------------------------------------------
Design rule: size connection retries for the SLOWEST case
you actually run - 120 seconds - or the app
gives up before the database comes back.A question that praises Aurora's "often less than 30 seconds" while your client timeout is 10 seconds is testing arithmetic, not marketing.
- π Did you know? RDS Free Tier is time-boxed and account-age dependent: AWS documents 750 hours per month of a
db.t3.microordb.t4g.microin Single-AZ, and that allowance applies to accounts created before 17 July 2025. Older accounts kept the classic 12-month Free Tier; newer accounts get the credit-based Free plan instead, so a stem quoting "750 hours of db.t3.micro" is era-dependent (as of Oct 2026; verify current before use).
3. Amazon Aurora: the MySQL/PostgreSQL-compatible high performer
3.1 Compatibility and the shared cluster volume
AWS describes Aurora as compatible with MySQL and PostgreSQL, and it is provisioned and administered through the same RDS console, CLI and API, provisioning, patching, backup and failure detection all behave like RDS. The difference is the storage layer: Aurora uses a single cluster volume whose data is replicated across three Availability Zones, and that volume is independent of the database instances attached to it. Adding a reader therefore does not copy the data, the instance simply attaches to the existing volume.
Aurora property | AWS figure (as of Oct 2026) | Why the exam cares |
|---|---|---|
Compatibility | MySQL and PostgreSQL | "MySQL/PostgreSQL-compatible" β Aurora; any of the other six engines β RDS |
Storage | Cluster volume auto-grows as data increases, up to 256 TiB (and auto-shrinks when data is deleted) | No capacity planning; a relational need above 64 TiB (RDS ceiling) lands here |
Read scaling | Up to 15 Aurora Replicas across three AZs | "15 readers" β Aurora; RDS read replicas are a different, separately managed feature |
Failover | Typically less than 60 seconds, and often less than 30 seconds | Fast-recovery stems |
Replica rebuild | With no replicas available, AWS documents a rebuild "typically less than 10 minutes" | Disaster-recovery arithmetic |
I/O billing | Aurora I/O-Optimized is worth switching to when I/O spending is 25% or more of Aurora DB spend | A rare, specific, sourced threshold |
Global Database | One primary Region plus secondary Regions, with replication "latency typically under a second"; planned switchover vs failover on Region outage | Multi-Region DR vocabulary |
Two Aurora numbers are deliberately not taught as facts here, because AWS's own pages disagree: (1) the performance multiplier versus stock MySQL/PostgreSQL is published as 6x on one Aurora User Guide page, five times on another and 3-5x on a third; (2) the number of secondary Regions in Aurora Global Database appears as up to 10 in the User Guide and up to five in the FAQ. Conflicting official figures are unverified by definition (digest section G): never assert either one. What is safe: "materially higher throughput than stock MySQL/PostgreSQL", the 256 TiB ceiling, 15 Aurora Replicas and failover often under 30 seconds, each quoted with page and date.
3.2 Aurora vs RDS: the two-word tie-breaker
Stem fragment | Answer |
|---|---|
"MySQL- or PostgreSQL-compatible, up to 15 readers, storage auto-grows" | Aurora |
"IBM Db2 / Oracle / SQL Server / MariaDB" | RDS |
"relational database above 64 TiB" | Aurora (256 TiB cluster volume) |
"any of the six classic engines" | RDS |
"relational, but the exam says 'serverless and MySQL/PostgreSQL-compatible'" | Aurora |
Worked example E5: storage ceilings as a decision. Three requirements, three services:
"Relational workload, 40 TiB and growing" -> RDS
(64 TiB storage ceiling is enough)
"Relational workload, 200 TiB, MySQL-compatible" -> Aurora
(cluster volume auto-grows to 256 TiB)
"Relational workload, 400 TiB" -> not a single
database question: that is a warehouse (Redshift,
petabyte scale) or a data-lake question- π Did you know? Aurora's I/O-Optimized configuration has a published break-even: AWS advises switching when your I/O spending reaches 25% or more of your Aurora DB instance spending. It is one of the few database cost thresholds AWS states numerically, and like every figure in this lesson, it is as of Oct 2026 and should be re-verified before you rely on it in production.
4. Amazon DynamoDB: serverless NoSQL at single-digit milliseconds
4.1 What it is, and what it refuses to be
AWS's definition is the exam's definition: DynamoDB is "a serverless, fully managed, distributed NoSQL database with single-digit millisecond performance at any scale", supporting both key-value and document data models. Read the fine print, because it generates distractors:
Property | AWS statement (as of Oct 2026) | Consequence |
|---|---|---|
Data model | Key-value and document | Not relational |
Joins | "doesn't support a JOIN operator" | "Needs JOINs" β RDS/Aurora, not DynamoDB |
Max item size | 400 KB | Large blobs belong in Amazon S3 with a pointer |
Authentication | IAM: no user names and passwords | Security stems end at IAM |
Durability / SLA | Replicated across three AZs, 99.99% availability SLA | Single-AZ distractors fail |
Global tables | Multi-Region, multi-active replication, 99.999% availability SLA | "Geo-distributed, active everywhere" β global tables |
Consistency | Strongly consistent reads and ACID transactions supported | It is not "eventually consistent only" |
Free tier | 25 GB + 25 WCU + 25 RCU Always Free (β 200 million requests/month at tutorial scale) | Tutorial scale, not production |
Default quota | 40,000 RCU + WCU combined | Raise it before you design for it |
4.2 Capacity modes: the second most-tested database fact
On-demand (default) | Provisioned | |
|---|---|---|
Billed on | Per request (read request units / write request units) | Provisioned RCU and WCU per hour, used or not |
Capacity planning | None | You choose the numbers |
Scales to zero? | Yes, zero traffic costs nothing | No, idle units are still billed |
Burst behaviour | Instantly to 2Γ previous peak; a new table starts with room for 4,000 writes/s and 12,000 reads/s | Auto scaling to a CloudWatch target of 70%, on by default in the console |
Unit definition | Per request unit consumed | 1 RCU = one strongly consistent read/s for items up to 4 KB (or two eventually consistent reads); 1 WCU = one write/s for items up to 1 KB |
Mode switching | Provisioned β on-demand at most 4 times per 24 hours; the reverse at any time | : |
Exam pick | Unknown, spiky, new or event-driven traffic | Steady, predictable, continuous traffic |
4.3 Worked examples: the arithmetic the exam actually uses
Worked example E6: provisioned sizing (AWS's own worked pattern, as of Oct 2026).
READS 80 strongly consistent reads/second, item size 3 KB
3 KB <= 4 KB -> 1 RCU per read
80 x 1 RCU = 80 RCU
WRITES 100 writes/second, item size 512 bytes
512 B <= 1 KB -> 1 WCU per write
100 x 1 WCU = 100 WCU
READS 5 KB item, strongly consistent
ceil(5 / 4) = 2 RCU per read -> double the RCU costWorked example E7: mode economics. A table provisioned with 100 RCU + 50 WCU:
Provisioned: 150 units/hour are billed whether or not
anyone reads or writes -> 24 h of idle still costs
On-demand : zero traffic -> zero charges for throughput
Break-even : steady 24/7 usage favours provisioned;
bursts, nights, weekends and unknown loads
favour on-demand (which is the DEFAULT mode)Worked example E8: burst headroom. The previous traffic peak on an on-demand table was 50,000 reads/second. AWS documents that on-demand can instantly scale to twice the previous peak:
Headroom = 2 x 50,000 = 100,000 reads/second
A campaign that needs 90,000 reads/s fits inside it.
A campaign that needs 140,000 reads/s does NOT - the table
can be throttled, so pre-warm the traffic or request a
quota increase. Default combined quota = 40,000 RCU + WCU.4.4 When the exam picks DynamoDB
Stem fragment | Answer |
|---|---|
"Serverless NoSQL, single-digit millisecond, any scale" | DynamoDB |
"Unpredictable spikes; must not pay when idle" | DynamoDB on-demand (the default mode) |
"Key-value or document, no joins, 400 KB items" | DynamoDB |
"Game leaderboard / shopping cart at peak-sale scale" | DynamoDB |
"Needs JOINs or ad-hoc SQL over rows" | RDS or Aurora |
"MongoDB drivers and documents, instance clusters" | DocumentDB (see Β§7) |
Two DynamoDB satellites also appear:
- Amazon DynamoDB Accelerator (DAX): an in-memory cache for DynamoDB only, API-compatible, delivering "up to 10 times" faster reads and moving latency "from milliseconds to microseconds". The stem is read-heavy repeated-key hotspots on a DynamoDB table.
- Global tables: multi-Region, multi-active, 99.999% availability SLA with no primary table to fail over. The stem is geographic distribution.
DAX fixes latency; global tables fix geography. Confusing them is a reliable way to lose a mark.
5. Amazon ElastiCache: the in-memory layer
5.1 What it is
AWS defines ElastiCache as "a distributed in-memory data store or cache environment" that works with the Valkey, Memcached and Redis OSS engines, and AWS's choosing guidance puts a number on it: microsecond reads and sub-millisecond writes as an ephemeral cache. That last phrase is the whole exam position: ElastiCache accelerates a primary database; it is never the system of record.
5.2 Redis OSS vs Memcached: the one-liners
Memcached | Redis OSS / Valkey | |
|---|---|---|
Model | "The simplest model possible": cache objects | Complex data types: lists, sets, sorted sets, hashes, bitmaps, geospatial |
Threading | Multi-threaded | : |
Replication | No | Yes |
Failover | No | Yes (required in cluster mode) |
Backups | No node-based backups | Supported |
Pub/sub, encryption | No | Yes |
Exam stems | "Simple object caching, horizontal scale-out/in" | Sessions, leaderboards (sorted sets), queues, rate limiting, geospatial |
Worked example E9: choosing the cache engine.
"Cache rendered HTML fragments; simplest possible model;
scale nodes in and out" -> Memcached
"Store user sessions with TTLs and build a real-time
leaderboard ranked by score" -> Redis OSS / Valkey
(sorted sets + replication + failover)
"Cache reads for a DynamoDB table, microsecond latency"
-> DAX (DynamoDB only)
"Ephemeral cache in front of MySQL with automatic failover"
-> ElastiCache
(Redis OSS / Valkey - Memcached has no failover)β οΈ ElastiCache is never the answer to "where is the data stored durably?" It is an ephemeral cache. If the stem needs a durable primary database, the answer is RDS, Aurora, DynamoDB or DocumentDB, and if it asks for a durable in-memory database, the marketing-page option is Amazon MemoryDB, which is out of scope for CLF-C02 and therefore never correct.
How to answer
Matching exercise with 5 pairs. Match each item on the left with its answer on the right.
Match each caching or in-memory requirement to the service the CLF-C02 exam expects you to pick:
Drag answers from here:
6. Amazon Redshift: the warehouse, not the transaction
6.1 The OLAP vs OLTP trap
AWS defines Amazon Redshift as a "fully managed, petabyte-scale data warehouse" that is "specifically designed for online analytic processing (OLAP)". The trap is that both halves of the pair are databases, both answer SQL questions, and only one of them is right for your stem.
OLTP, RDS, Aurora, DynamoDB | OLAP, Amazon Redshift | |
|---|---|---|
Job | Run the business: capture individual transactions | Analyse the business: aggregate history |
Storage shape | Rows (OLTP) | Columns: AWS: "OLTP applications typically store data in rows, Amazon Redshift stores data in columns" |
Typical query | One order, one customer, one write | "Total revenue by region by quarter for 3 years" |
Scale | Gigabytes to tens of terabytes | Petabyte scale |
Write pattern | Frequent single-row inserts and updates | Bulk loads, then read-heavy |
AWS guidance | "If you require a fast transactional system β¦ choose β¦ Amazon RDS or a NoSQL database offering, such as DynamoDB" | "Ideal for online analytic processing (OLAP)" |
Exam placement | Database (in-scope list) | Analytics: the category never changes the answer |
AWS also states that OLTP features such as secondary indexes and efficient single-row data manipulation operations have been omitted from Redshift. That is the tell: a database that deliberately removed single-row manipulation is not where you put a shopping cart.
Worked example E10: the two-column question.
"Customers place orders while shopping; each order must
commit immediately, with ACID guarantees"
-> OLTP -> RDS / Aurora (or DynamoDB for key-value scale)
"Business intelligence dashboard aggregates 3 years of
order history into regional totals every morning"
-> OLAP -> Amazon Redshift
"Same BI requirement, but the raw files already sit in
Amazon S3 and nobody wants to load them first"
-> Redshift Spectrum: query the S3 files directly,
on dedicated servers independent of the cluster6.2 Redshift Spectrum
AWS documents that Redshift Spectrum lets you "query data directly from files on Amazon S3" using servers independent of your cluster. The exam-visible consequence: you can query the warehouse and the data lake in one SQL statement without paying for extra cluster nodes to hold the lake data.
- π Did you know? The exam guide files Amazon Redshift under Analytics, not under Database, yet Task 3.4 still expects you to make the warehouse-vs-transaction decision. Category placement is a metadata detail, never a reason to rule an in-scope service out of an answer (as of Oct 2026).
7. Amazon Neptune and Amazon DocumentDB: the two specialised stores
7.1 Neptune: the graph answer
AWS describes Amazon Neptune as a "fully managed graph database service" that handles billions of relationships with milliseconds latency, supporting Gremlin and openCypher for property graphs and SPARQL for RDF, with up to 15 Neptune Replicas on a shared three-AZ volume and automatic failover.
Stem fragment | Answer |
|---|---|
"Highly connected data; traverse account β device β IP β account" | Neptune |
"Fraud ring detection, recommendations, social or knowledge graphs, network security" | Neptune |
"Key-value lookups" | DynamoDB: graph answers are wrong here |
"Document/MongoDB drivers" | DocumentDB |
The graph stores answer a question a relational schema answers slowly: as the number of hops grows, the JOIN count explodes, while Neptune walks the edges directly. That trade is the entire justification for the graph bucket.
7.2 DocumentDB vs DynamoDB: the MongoDB tie-breaker
Amazon DocumentDB | Amazon DynamoDB | |
|---|---|---|
Compatibility | "with MongoDB compatibility": same drivers, tools and code | Proprietary API; IAM-only access |
Model | Document, MongoDB-compatible | Key-value and document |
Provisioning | Instance clusters; storage auto-grows in 10 GB steps to 256 TiB | Serverless: no instances, capacity modes |
Replicas | Up to 15 replica instances sharing one storage layer; six copies across three AZs | Three-AZ replication by default; global tables for multi-Region |
Exam stem | "MongoDB", JSON-like documents, catalogs, profiles | "Serverless, single-digit ms, scale to zero" |
Rule of thumb: the word MongoDB β DocumentDB; the words serverless, capacity mode or single-digit millisecond β DynamoDB.
8. Migration: AWS Schema Conversion Tool and AWS Database Migration Service
8.1 The split you must memorise
Both tools sit in the exam guide's Migration and Transfer category, and the exam has never asked about them without testing the division of labour:
AWS Schema Conversion Tool (SCT) | AWS Database Migration Service (DMS) | |
|---|---|---|
Job | Convert the schema and code | Move the data |
What it touches | Database schema, stored procedures, views: "from one database engine to another", for a relational OLTP schema or a data warehouse schema | Rows: a one-time load or ongoing change replication (CDC) |
Form factor | Free standalone GUI application | "A server in the AWS Cloud that runs replication software" with source and target endpoints |
Output | Converted artefacts plus an assessment report of what it cannot convert | A replicated target database with lag you monitor to zero |
Typical targets | : | Amazon RDS, Aurora, Redshift, DynamoDB, Amazon S3 |
Exam keyword | "Convert / schema / DDL / procedures / heterogeneous" | "Replicate / ongoing changes / cutover / stream the data" |
A third answer is a distractor catcher: "rehost whole servers or VMs" is the AWS Application Migration Service, not a database tool at all.
8.2 Worked example E11: an Oracle exit
An insurance company runs Oracle Database on-premises with 400 PL/SQL procedures and wants Amazon Aurora PostgreSQL, with minimal downtime. Sequence the tools:
Step 1 AWS SCT converts the Oracle schema and procedures to
PostgreSQL; its assessment report flags everything that
still needs human rewrite.
Step 2 AWS DMS creates source and target endpoints, performs
the initial load, then keeps replicating ongoing changes.
Step 3 Monitor replication lag; when it is effectively zero,
switch the application to Aurora at cutover.
Why not the other tool alone:
DMS without SCT moves rows but leaves Oracle SQL that
PostgreSQL cannot run.
SCT without DMS leaves you with an empty target.
Application Migration Service rehosts WHOLE SERVERS -
it does not convert an Oracle schema to PostgreSQL.9. The decision table: workload β store
9.1 One table for the whole task
Access pattern in the stem | Bucket | Answer | The tell |
|---|---|---|---|
SQL, joins, ACID transactions, tables | Relational, managed | Amazon RDS | Any of the six engines; AWS-managed patching and backups |
MySQL/PostgreSQL-compatible + auto-growing storage + 15 readers | Relational, optimised | Amazon Aurora | 256 TiB cluster volume, failover often under 30 s |
Key-value or document at any scale, single-digit ms, no joins | NoSQL | Amazon DynamoDB | Serverless, capacity modes, 400 KB items |
Cache, session store, leaderboard, microsecond reads | Memory-based | Amazon ElastiCache | Ephemeral; Redis OSS for failover, Memcached for simplicity |
Complex aggregation over years of history, petabytes | Warehouse (OLAP) | Amazon Redshift | Columnar; "fast transactional system" β not Redshift |
Relationships, traversal, fraud rings, social graphs | Graph | Amazon Neptune | Billions of relationships at milliseconds |
MongoDB drivers, JSON documents, catalogs | Document, compatible | Amazon DocumentDB | Instance clusters, up to 15 replicas |
Converting schemas and stored procedures between engines | Migration | AWS SCT | "Convert" |
Replicating rows for a low-downtime cutover | Migration | AWS DMS | "Ongoing changes" |
Root access, custom kernel, OS control | Self-managed | Database on Amazon EC2 | You now own patching, backups and HA |
How to answer
Matching exercise with 6 pairs. Match each item on the left with its answer on the right.
Match each workload to the database the CLF-C02 exam expects you to pick:
Drag answers from here:
9.2 Worked example E12: one stem, two wrong answers each time
"A food-delivery startup needs: (a) order records with joins to restaurants and drivers, (b) a driver-location feed keyed by driver ID with extreme spikes at dinner time, (c) a session cache returning in under a millisecond, and (d) a quarterly analytics warehouse."
(a) joins + ACID -> Amazon RDS (or Aurora)
wrong: DynamoDB (no JOINs), Redshift (OLTP omitted)
(b) keyed, spiky, no joins -> DynamoDB, ON-DEMAND mode
wrong: RDS (poor fit for the spike shape),
provisioned DynamoDB (you would pay all night)
(c) sub-millisecond cache -> ElastiCache (Redis OSS)
wrong: RDS (not in-memory),
DAX (only caches DynamoDB)
(d) quarterly aggregation -> Amazon Redshift
wrong: RDS (not a warehouse), S3 (no SQL warehouse)
Four requirements, four different services - and that is
the normal shape of a Domain 3 database question.How to answer
Fill-in-the-blank exercise with 5 blanks. Type the missing words, then check your answer.
Complete the database trap statements with the correct term:
A Multi-AZ standby in Amazon RDS replicates blank and serves no read traffic, so the feature that offloads reporting is a blank, which replicates blank and can therefore be stale. DynamoDB's blank capacity mode is the default and charges per request, while the blank mode charges for RCU and WCU whether they are used or not.
Word Bank, drag words into the blanks above:
10. Staying current: what changed for databases
2026 Updates (as of October 2026)
Four sourced changes that touch this lesson: each checked against a primary AWS source (the CLF-C02 exam guide, the in-scope/out-of-scope service lists, the AWS News Blog) and accessed Oct 2026. The exam tests the guide you download today, not the PDF your prep material was revised from:
- The in-scope database list was reshaped after launch. The launch-era Version 1.0 guide listed 128 in-scope entries; the current list has 111, while the explicit out-of-scope list grew from 11 to 55. Inside the Database category, Amazon DocumentDB and Amazon ElastiCache were added, and Amazon MemoryDB for Redis OSS, Amazon Keyspaces (for Apache Cassandra) and AWS AppConfig now sit on the negative list, so two of this lesson's six database services are post-launch additions and three familiar database-adjacent names are eliminations you can make on sight (in-scope and out-of-scope lists, diff computed 2026-10).
- Database Savings Plans launched on 2 December 2025. AWS advertises up to 35% savings for a 1-year, no-upfront commitment across database workloads, serverless up to 35%, provisioned up to 20%, DynamoDB 18% and Amazon Keyspaces 12% (AWS News Blog and What's New, 2025-12-02), but the CLF-C02 guide does not name it: Task 4.1 still teaches AWS Savings Plans, Reserved Instances, On-Demand and Spot, so Database Savings Plans is recent news, not an examinable answer (discounts as of Oct 2026; verify current before use).
- Free Tier became account-age dependent on 15 July 2025. Accounts created on or after that date get 6 months of Free Tier (or until the credits run out) plus a USD 100 sign-up credit and up to USD 100 earned more, up to USD 200 in total, while accounts created earlier keep the legacy 12-month, usage-limit tier (AWS News Blog 2025-07-15 and the EC2 User Guide "before and after July 15, 2025" table). Any stem quoting a free database instance allowance is therefore era-dependent: read the account date, not your memory (as of Oct 2026; verify current before use).
- Pricing vocabulary in the guide was made explicit. The technologies list now spells out "Reserved Instances, On-Demand Instances, Spot Instances", and the examinable tool names remain Cost Explorer, AWS Budgets, Pricing Calculator, Trusted Advisor and the Well-Architected Tool; while genuinely new console features (Cost Optimization Hub, RI/SP Group Sharing GA on 2025-11-19, Target Coverage on 2026-06-09, Well-Architected Agent preview on 2026-10-01) are real and recent but not named in the guide, so they are context, never an answer (exam guide plus What's New posts, accessed 2026-10).
- π Did you know? The current in-scope list is officially labelled "non-exhaustive and subject to change" and carries no version number at all: the only stamped artefact AWS ever published for this exam is the launch-era Version 1.0 CLF-C02 guide, while today's PDF prints nothing but "Copyright Β© 2026", and the
uiVersion=2024.10string on the docs page is the AWS Docs site template version, not a guide revision. That is precisely why every figure in this lesson is dated "as of Oct 2026": with no changelog to cite, the access date is the version (exam guide landing page and PDF, accessed 2026-10; verify current before use).
Real-World Case Studies
AWS publishes what these patterns look like in production. Every figure below is customer- or AWS-claimed and unaudited, quoted with its source so you can check it: the examinable point is the pattern (which store was chosen, which limit it removed, which number moved), not the marketing.
Case A, Netflix: consolidating relational infrastructure on Amazon Aurora
Element | Detail |
|---|---|
Industry / context | Entertainment streaming; "using AWS to deliver billions of hours of content monthly", and a relational estate large enough that consolidation itself became the project |
AWS services named | Amazon Aurora as the consolidated relational target; Netflix "operates actively across four AWS Regions" |
Headline outcomes (AWS-published, customer-claimed) | "Up to 75% improved performance and 28% cost savings by migrating its relational database infrastructure to Amazon Aurora"; a follow-up AWS Database Blog post (27 November 2025) reports latency on two internal services falling from 26.72 ms to 6.51 ms (Policy Engine) and 67.57 ms to 41.70 ms (Front50) |
Database lesson | Managed relational beats self-managed relational on both axes at once, performance and cost, which is exactly AWS's "we recommend Amazon RDS as your default choice" argument extended by Aurora's cluster volume and 15-reader ceiling |
Source | aws.amazon.com/solutions/case-studies/innovators/netflix Β· aws.amazon.com/blogs/database (accessed Oct 2026) |
Exam lesson: "up to 75%" is a ceiling, not a promise, and it is a customer result. What transfers to exam day is the shape of the decision: a team with a large relational estate chose a managed MySQL/PostgreSQL-compatible service rather than staying on self-managed instances.
Case B, Amazon Prime Video: DynamoDB behind a live sports peak
Element | Detail |
|---|---|
Industry / context | Live sports streaming is perishable: "With live sporting events, reliability and low latency are absolutely critical because every lost second negatively impacts viewers" (Amazon Video's global head of digital video playback and delivery, customer voice) |
AWS services named | Amazon DynamoDB for the delivery control plane, alongside six AWS Regions, AWS Elemental MediaTailor, Amazon CloudFront and Amazon EC2 |
Headline outcomes (AWS-published, 2017 season) | Streamed 11 NFL games to 18.4 million fans in 224 countries and territories, sending live broadcasts through six AWS Regions; 300,000+ clients polling per ad break; DynamoDB partitions were doubled from the console ahead of ad breaks |
Database lesson | A serverless NoSQL store with single-digit-millisecond reads is chosen for a control plane that must absorb a spiky, scheduled, enormous read load: the textbook DynamoDB stem, and the reason on-demand-style, burst-capable scaling exists |
Source | aws.amazon.com/solutions/case-studies/amazon-prime-video (accessed Oct 2026) |
Exam lesson: the operation worth memorising is unglamorous: partitions were doubled from the console before the spike. Capacity for a known event was arranged deliberately, which is precisely the difference between a planned provisioned change and the automatic burst of on-demand capacity.
What the two cases share
Value pattern | Evidence | Underlying principle |
|---|---|---|
Managed beats self-managed | Netflix: up to +75% performance and β28% cost on Aurora | The RDS/Aurora responsibility shift: AWS owns patching, backups, scaling and HA |
Right store for the access pattern | Prime Video: control-plane reads on DynamoDB, not a relational engine | Key-value, spiky, low-latency β NoSQL; joins and transactions β relational |
Capacity is a decision, not a hope | Prime Video doubled partitions before ad breaks | Know your traffic; provision or burst on purpose |
Numbers are ceilings | "Up to 75%", "18.4 million fans" | Customer-claimed and unaudited: never an AWS guarantee |
Case C, Zendesk: better price-performance on the same Aurora engine
Element | Detail |
|---|---|
Industry / context | SaaS customer-service platform, all-in on AWS since 2018, running a relational estate of 1,200+ global Aurora clusters where cost and performance had to improve together rather than one at a time |
AWS services named | Amazon Aurora upgraded to Graviton-based Amazon EC2 instances, combined with right-sizing of the existing fleet |
Headline outcomes (AWS-published, customer-claimed, completed May 2023) | "improved performance by up to 30 percent, reduced costs by up to 42 percent" |
Database lesson | Price-performance on a database is often a configuration decision, not a product decision: the same managed engine, on a different processor architecture and a right-sized instance class, moved both axes: no rewrite and no new service |
Source | aws.amazon.com/solutions/case-studies/zendesk-graviton-case-study (accessed Oct 2026) |
Exam lesson: up to 42% is Zendesk's ceiling, not an AWS guarantee, attribute it as a customer result with its access date. The transferable move is the ordering: before you change database products, exhaust instance class, processor architecture (Graviton) and right-sizing, and remember AWS's standing caveat that Graviton requires code or container-image compatibility work first.
Case D, Philip Morris International: Amazon RDS as the landing zone for 400 applications
Element | Detail |
|---|---|
Industry / context | Regulated manufacturing pivoting to smoke-free products under GDPR and PCI obligations, which sold its own data centers first and committed to AWS before the migration began (August 2020) |
AWS services named | Amazon RDS, a data lake, AWS Professional Services with IBM, and Well-Architected reviews |
Headline outcomes (AWS-published, customer-claimed, over 2 years from August 2020) | 400 applications migrated in 2 years and now "all in on AWS"; +50% performance; 70% of applications on automated pipelines, making changes 80% faster; up to 50% savings on some RDS costs; 500+ Cloud Practitioner certifications |
Database lesson | A managed relational service is the default landing zone at portfolio scale: RDS absorbs patching, backups, failure detection and HA for hundreds of teams at once, which is exactly the Β§2.1 responsibility table multiplied across a whole application estate |
Source | aws.amazon.com/solutions/case-studies/philip-morris-case-study (accessed Oct 2026) |
Exam lesson: AWS's own page admits the initial aggressive "lift and shift" "yielded suboptimal results", the savings appeared when workloads were replatformed onto managed services. That is the 6 Rs in one story (rehost first, replatform after), and the database choice is part of the migration strategy, not a footnote. Keep the qualifiers: "up to 50% savings on some RDS costs" is scoped and customer-claimed, never restate it as an RDS price cut.
What Cases C and D add
Value pattern | Evidence | Underlying principle |
|---|---|---|
Configure before you replace | Zendesk: +30% performance and β42% cost on the same Aurora engine | Instance class, Graviton and right-sizing come first; changing database products is the last move, not the first |
Managed scales to program level | PMI: 400 applications on RDS, savings up to 50% on some RDS costs | The shared-responsibility shift in Β§2.1 is what makes one platform team safe for hundreds of owners |
Migration strategy decides the database outcome | PMI: lift-and-shift "yielded suboptimal results", replatforming onto RDS delivered the gains | Rehost vs replatform (the 6 Rs) is a Domain 1 concept that shows up inside Domain 3 database stems |
Every number stays scoped | "up to 42 percent", "up to 50% β¦ some RDS costs" | Customer-claimed ceilings with qualifiers: attribute the source and access date, never generalise |
-
π Did you know? Capital One's "all in on AWS" estate names Amazon RDS among the 30+ AWS services it runs, and the bank reports building 80% of its nearly 2,000 applications cloud-native while cutting the time needed to build a development environment from 3 months to minutes (aws.amazon.com Capital One case-study pages, accessed Oct 2026). At that scale the managed-database argument in Β§2.1 stops being a convenience: when AWS owns patching, backups and failure detection, a fresh development environment, including its database, becomes a minutes-long task instead of a hardware-and-licence project.
-
π Did you know? AWS's own "how to choose a database" page illustrates the mixed estate with AWS's e-commerce stack: Amazon DocumentDB for the catalog, Amazon DynamoDB for browsing and cart, and Amazon Aurora for relational order data (aws.amazon.com/databases, updated 2 June 2026). One retailer, three database engines, each chosen by access pattern; which is the whole argument of this lesson, made by AWS about its own storefront.
How to read case-study numbers on exam day: every percentage here is customer-claimed or AWS-published and unaudited: never a guarantee, and "up to" is a ceiling, never an average. Attribute the source and access date ("Netflix Aurora case study, accessed Oct 2026"), not "AWS proves". A case never licenses an out-of-scope answer: you are asked to select the in-scope service and the correct option, not to reproduce the marketing figure.
Practice Questions
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
An Amazon RDS primary is at 95% CPU because a reporting job runs heavy SELECTs every night. Management proposes enabling Multi-AZ to fix it. What is the BEST response?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
Which statement about an Amazon RDS Multi-AZ deployment (DB instance form) is correct?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
A company wants a relational database where AWS owns backups, software patching, automatic failure detection and recovery, while the company keeps responsibility for schema and application tuning. Which option matches AWS's own responsibility table?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
A relational workload needs a MySQL-compatible engine, storage that keeps growing without a capacity decision, and up to 15 read-only endpoints. Which service fits BEST?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
A brand-new application has an unpredictable traffic pattern, no reliable usage history, and the team refuses to pay for throughput while the app is idle. Which DynamoDB configuration should they choose?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
Using the documented unit definitions (as of Oct 2026), how many capacity units does a table need for 80 strongly consistent reads per second of 3 KB items and 100 writes per second of 512-byte items?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
A session store must return user sessions in microseconds, expire them with a TTL, maintain a score-ordered leaderboard, and survive the failure of a cache node automatically. Which engine should they pick?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
A team needs fast aggregation across three years of sales history at petabyte scale, stored column-wise for analytic queries. Which service is correct?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
A company is leaving Oracle Database for Amazon Aurora PostgreSQL. They need 400 PL/SQL procedures converted and then rows streamed with minimal downtime. Which pairing is correct?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
A solution architect proposes Amazon MemoryDB for Redis OSS for a caching layer, citing an AWS blog. What should you say about that choice on this exam?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
A team's application already uses MongoDB drivers and JSON documents, and it wants a managed instance-cluster database with up to 15 replicas over shared storage. Which service should they choose?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
A security team must detect fraud rings by starting from an account, hopping to devices and IP addresses, and returning to other accounts, across billions of relationships. Which service is designed for this?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
A finance team asks which commitment discount applies to its Amazon RDS and Amazon DynamoDB workloads, and quotes a December 2025 announcement about Database Savings Plans offering up to 35% off a 1-year, no-upfront commitment. Which statement is correct for CLF-C02 as of Oct 2026?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
Since the launch-era Version 1.0 guide, the CLF-C02 in-scope list was rebuilt from 128 entries to 111 and the out-of-scope list grew from 11 to 55. Which pair of statements about database services on those lists is correct as of Oct 2026?
How to answer
Ordering exercise with 6 items. Move them into the correct order, then check your answer.
Order these database decisions from the first question you should ask to the final service choice:
Comparative Verdict: databases Γ on-premises Γ other clouds Γ DIY/managed
- Versus on-premises: on premises you buy the server, rack it, license the engine, then own patching, backups, failure detection, scaling and high availability, AWS's own table puts every one of those on the customer. Amazon RDS moves scaling, HA, backups and database/OS patching to AWS while leaving application optimization with you, and Capital One's exit from eight data centers (customer-claimed, accessed Oct 2026) is the on-premises side of that trade. You still own schema design, credentials, security groups, VPC placement and the decision between Multi-AZ and read replicas, AWS never makes those for you.
- Versus other clouds: every major provider sells managed relational, key-value, cache and warehouse services, so the examinable differences are AWS's own vocabulary and numbers: six named RDS engines, 64 TiB RDS storage versus 256 TiB Aurora, synchronous standby with no read traffic versus asynchronous read replicas, 60 to 120 s instance failover versus under 35 s cluster failover, DynamoDB's on-demand vs provisioned modes with 1 RCU per 4 KB and 1 WCU per 1 KB, ElastiCache's Valkey, Memcached and Redis OSS engines, and the exact placement of Redshift under Analytics. Do not assume another provider's unit sizes, failover windows or storage ceilings transfer.
- Versus DIY / build-it-yourself: a database on EC2 means you write the backup cron jobs, the failover logic, the patch calendar and the read-scaling story, and test them all yourself; a hand-rolled cache means implementing replication and TTL eviction; a hand-rolled warehouse means running columnar storage and a query planner. The Well-Architected answer is consistently managed and least operational overhead: RDS instead of a self-patched PostgreSQL on EC2, Aurora instead of a hand-built cluster volume, DynamoDB on-demand instead of a capacity-planned key-value cluster, ElastiCache instead of a memcached install you now must replicate, AWS DMS plus SCT instead of custom ETL, and if a stem genuinely demands a custom kernel or root access, EC2-hosted is the honest answer, with all the ownership that comes with it.
Exam-day traps for this lesson:
- Multi-AZ β read scaling: AWS: the HA option "isn't a scaling solution for read-only scenarios"; "increase read throughput" β read replica, "survive an AZ failure" β Multi-AZ;
- The one nuance: a Multi-AZ DB cluster (readable standbys, failover under 35 s) does serve reads; the Multi-AZ DB instance standby does not;
- Sync vs async: standby replication is synchronous, read-replica replication is asynchronous, so a replica can be stale and must never take writes;
- Read replicas do not autoscale: AWS states "RDS doesn't support autoscaling of read replicas"; you add and remove them yourself;
- RDS vs EC2: AWS recommends RDS as the default; choose EC2 only for OS/root/custom-engine control, where you own patching, backups and HA;
- RDS has six engines (Db2, MariaDB, SQL Server, MySQL, Oracle, PostgreSQL) and 64 TiB max storage; Aurora is MySQL/PostgreSQL-compatible with a 256 TiB auto-growing cluster volume, 15 Aurora Replicas and failover often under 30 s;
- Never quote the Aurora multiplier or the Global Database secondary-Region count: AWS pages publish 6x / five times / 3-5x and 10 vs five respectively; conflicting official figures are unverified;
- Backup retention: quote 1 to 35 days, not "7 days": the 7-day default comes from an AWS Config rule's wording, not the RDS User Guide;
- DynamoDB on-demand is the default (pay per request, scales to zero, 2Γ previous peak); provisioned bills whether used or not with a 70% auto-scaling target; 1 RCU = 1 strong read/s β€ 4 KB, 1 WCU = 1 write/s β€ 1 KB, item size 400 KB;
- DynamoDB has no JOINs: "needs JOINs / ad-hoc SQL" β RDS, Aurora or Redshift, never DynamoDB;
- DAX caches DynamoDB only (ms β Β΅s, up to 10Γ); global tables fix geography (multi-Region, multi-active, 99.999%);
- ElastiCache is an ephemeral cache, never the system of record: Memcached: simplest, multi-threaded, no replication and no failover; Redis OSS/Valkey: complex types, replication + automatic failover;
- Redshift is OLAP and lives under Analytics: "fast transactional system" β RDS/Aurora or DynamoDB; columnar and OLTP features omitted; Spectrum queries Amazon S3 directly;
- DocumentDB = MongoDB-compatible (instance clusters, β€ 15 replicas, 256 TiB); Neptune = graph (relationships, fraud, traversal, β€ 15 replicas);
- SCT converts schema and code; DMS moves the data (one-time or ongoing CDC); "whole servers/VMs" β AWS Application Migration Service;
- Out-of-scope distractors never win: Amazon Keyspaces, Amazon MemoryDB and AWS AppConfig are on the out-of-scope list; the marketing page's 15+ database options is not the exam's list;
- Case-study numbers are customer-claimed, unaudited ceilings: Netflix's "up to 75%" performance and "28%" cost savings, and Prime Video's 18.4 million fans, are reported figures, never AWS guarantees.
Key Takeaways:
- Task 3.4 is five buckets, EC2-hosted vs managed, relational (RDS, Aurora), NoSQL (DynamoDB), memory-based (ElastiCache) and migration (DMS, SCT), and correct answers always come from the in-scope list: Aurora, DocumentDB, DynamoDB, ElastiCache, Neptune, RDS plus Redshift, DMS, SCT; Keyspaces, MemoryDB and AppConfig are out of scope;
- Amazon RDS is the managed relational default: AWS owns "backups, software patching, automatic failure detection, and recovery" plus scaling and HA, while application optimization (schema, queries, indexes) stays yours; six engines (Db2, MariaDB, SQL Server, MySQL, Oracle, PostgreSQL), storage up to 64 TiB (gp3 baseline 3,000 IOPS / 125 MiB/s), backup retention 1 to 35 days;
- The trap: Multi-AZ is for availability, read replicas are for reads: standby replication is synchronous and "can't serve read traffic", replica replication is asynchronous (stale, promote manually for DR), failover is 60 to 120 s (instance) or under 35 s (cluster), and read replicas do not autoscale;
- RDS vs database on EC2: choose EC2 only for OS/root/custom-engine control, then you own patching, backups and HA; AWS's standing advice is "we recommend Amazon RDS as your default choice for most relational database deployments";
- Amazon Aurora is MySQL- and PostgreSQL-compatible on the RDS console, with a single cluster volume replicated across three AZs that auto-grows to 256 TiB, up to 15 Aurora Replicas, failover typically under 60 s and often under 30 s, and I/O-Optimized worth switching at β₯25% I/O spend, but the throughput multiplier and Global Database Region count are conflicting across AWS pages and unverified;
- DynamoDB is "serverless, fully managed, distributed NoSQL with single-digit millisecond performance at any scale": key-value + document, no JOINs, item β€ 400 KB, IAM only, 3 AZs / 99.99% (global tables 99.999%); on-demand is the default (per request, scales to zero, 2Γ previous peak) versus provisioned (billed whether used or not, auto scaling target 70%), with 1 RCU = 1 strong read/s β€ 4 KB and 1 WCU = 1 write/s β€ 1 KB;
- ElastiCache is an ephemeral cache with Valkey, Memcached and Redis OSS: Memcached = simplest, multi-threaded, no replication/failover; Redis OSS = complex types, replication + automatic failover for sessions, leaderboards and queues; DAX is DynamoDB-only (ms β Β΅s);
- Redshift is OLAP, a managed, petabyte-scale, columnar warehouse whose OLTP features are omitted, so "aggregate three years for a dashboard" β Redshift and "individual orders while customers shop" β RDS/Aurora/DynamoDB; Spectrum queries Amazon S3 on servers independent of the cluster;
- Neptune = graph (billions of relationships, milliseconds, β€ 15 replicas, Gremlin/openCypher/SPARQL) for fraud and traversal stems; DocumentDB = MongoDB-compatible, instance clusters, β€ 15 replicas over shared storage, up to 256 TiB: "MongoDB" β DocumentDB, "serverless, single-digit ms" β DynamoDB;
- Migration split: AWS SCT converts the schema and code (free standalone GUI, assessment report) and AWS DMS moves the data (initial load + ongoing CDC to RDS/Aurora/Redshift/DynamoDB/S3): "whole servers" β Application Migration Service;
- Run the decision table in order, access pattern β joins/transactions? β managed vs root β compatibility and ceilings, as demonstrated by Netflix's up to +75% performance / β28% cost consolidation onto Aurora and Amazon Prime Video's DynamoDB control plane behind 18.4 million fans in 224 countries across six Regions (customer-claimed, accessed Oct 2026): read the stem, name the bucket, then pick the service.