CertNote/ Commute Study Notes
Roadmap
KOEN
CLF-C02 · FoundationalCloud Practitioner - Foundational
DVA-C02 · AssociateDeveloper - Associate
SAA-C03 · AssociateSolutions Architect - Associate
SOA-C02 · AssociateCloudOps Engineer - Associate
SAP-C02 · ProfessionalSolutions Architect - Professional
DOP-C02 · ProfessionalDevOps Engineer - Professional
Linux Master 2 · 2급KAIT Linux Master - Level 2
SCS-C03 · SpecialtySecurity - Specialty
Linux Master 1 · 1급KAIT Linux Master - Level 1
MLA-C01 · AssociateMachine Learning Engineer - Associate
AIF-C01 · FoundationalAI Practitioner - Foundational
DEA-C01 · AssociateData Engineer - Associate
  • Week 1
    • 1.What Is Data Engineering
    • 2.Batch vs Streaming
    • 3.A Bird's-Eye View of AWS Data Services
    • 4.Data Formats and Modeling
    • 5.Week 1 Comprehensive Review
  • Week 2
  • Week 3
  • Week 4
  • Week 5
  • Week 6
  • Week 7
    • 1.Amazon Redshift: Distribution and Sort Keys and Workload Optimization
    • 2.Amazon Athena: Serverless Queries and Cost Optimization
    • 3.DynamoDB (Analytics Perspective): Key Design and Stream-Based Pipelines
    • 4.RDS/Aurora and Store Selection: OLTP, Zero-ETL, Workload-to-Store Decision
    • 5.Week 7 Comprehensive Review: Analytics Stores Recap
  • Week 8
  • Week 9
  • Week 10
MLS-C01 · SpecialtyMachine Learning - Specialty
SQLD · 개발자SQL Developer (SQLD)

© CertNote · 주간랩스

  • About
  • Changelog
  • Contact
  • Terms
  • Privacy
← DEA-C01/Week 7/Day 4

Based on the DEA-C01 exam guide·Report an error

DEA-C01· AssociateWeek 7 · Day 4~33 min read

Day 4 - RDS/Aurora and Store Selection: OLTP, Zero-ETL, Workload-to-Store Decision

📌 Key Takeaways

  • RDS/Aurora are row-based OLTP stores. They suit normalized schemas, transactions, and reading and writing small numbers of rows, and they do not suit bulk column aggregation.
  • Aurora separates compute from storage and replicates data to 6 storage nodes across 3 AZs. There can be up to 15 readers (Aurora replicas).
  • Analytics load on an operational database is peeled off in stages: Read Replica (same engine, first relief) → replicate to a warehouse (zero-ETL, DMS) → export to the lake if needed.
  • Zero-ETL is AWS-managed replication that moves the source into Redshift in near real time. It does no transformation, and the target database is read-only. Heterogeneous database migration and a wide range of source and target combinations belong to DMS.
  • Choose a store by access pattern: transactions and joins = RDS/Aurora, key lookups = DynamoDB, bulk aggregation = Redshift, ad hoc on S3 = Athena, search = OpenSearch.

RDS and Aurora Overview

  • Amazon RDS: Hosts MySQL, PostgreSQL, MariaDB, Oracle, SQL Server, and Db2 as a managed service. The engine stays as it is, and the service takes care of patching, backup, recovery, and failover. Storage is an EBS volume attached to the instance.
  • Amazon Aurora: A cloud-native engine compatible with MySQL and PostgreSQL. The instances (compute) and the cluster volume (storage) are separated.
Aurora cluster
  ├─ 1 writer instance ──┐
  ├─ reader instances (up to 15) ┼──► Cluster volume: replicated across 3 AZs · 6 storage nodes, auto-expanding
  └─ ...                 ─┘     (adding instances does not copy the data anew)
AspectRDSAurora
StorageEBS per instance, with a specified size (auto scaling option)Shared cluster volume, grows and shrinks automatically as you write
ReplicasAsynchronous replication using the engine's replication featureRead from the same shared volume
Number of Read Replicas15 per source (quota)15
FailoverSwitch to the Multi-AZ standby instancePromote one of the readers to writer
Maximum storageDepends on engine and storage typeCluster volume of 128 TiB, 256 TiB for the latest engine versions
Engines6MySQL and PostgreSQL compatible only
  • The upper limit of an Aurora cluster volume was long known as 128 TiB, and the current documentation lists 256 TiB for the latest engine versions (Aurora PostgreSQL 15.13, 16.9, 17.5 and later, Aurora MySQL 3.10 and later). Exam materials may use the old value.
  • Aurora storage is billed as you use it, and when you delete data the allocation shrinks too. For the storage configuration, you choose between Aurora Standard (I/O requests billed separately) and Aurora I/O-Optimized (no I/O charge). If I/O spending is 25% or more of total Aurora cost, I/O-Optimized is advantageous.
  • If a reader exists, it is promoted when the writer fails, and recovery usually takes under 60 seconds. If there is no reader at all, a new instance must be created, which takes much longer.

💡 Related Theory: RDS/Aurora use row-based storage. All the columns of one row sit together on disk, which is optimal for "read and update one order," but to "sum only the amount column across 100 million rows" it has to read the unneeded columns as well. Columnar Redshift and Parquet are the exact opposite. This is why the first question in choosing a store is "are you handling rows, or aggregating columns?"

OLTP vs OLAP

CategoryOLTP (RDS/Aurora/DynamoDB)OLAP (Redshift/Athena)
PurposeTransaction processing, operationsAnalysis, aggregation, reporting
StorageRow-basedColumn-based
QueriesReading and writing small numbers of rows, short responseBulk scans and aggregation
SchemaNormalizedDenormalized, star schema
ConcurrencyA very large number of short requestsA relatively small number of heavy queries
Data scopeCurrent stateEntire history
IndexesFind rows with B-tree indexesSkip blocks with sort keys, partitions, and statistics

Moving OLTP data into an OLAP store for analytics is ETL. The problem is building and maintaining that pipeline. Scheduling, retries, handling schema changes, and latency all become an operational burden.

Stages for Peeling Off Analytics Load

If you throw heavy report queries straight at the operational database, transactions slow down from lock and I/O contention. The ways of peeling the load off come in an order, starting from the lightest burden.

StageMethodWhat you getLimitation
1Separate queries with a Read Replica / Aurora readerProtects the writer, applies immediately with no changesStill row-based. Large aggregations are slow. Replication lag is possible
2Replicate to Redshift with zero-ETLNear-real-time analytics on a columnar engine, no pipeline to manageLimited to supported source and target combinations, no transformation
2'Replicate to Redshift or S3 with DMSWide range of sources and targets, fine-grained mapping and transformation rulesYou operate the replication instance (or serverless capacity) and tasks
3Export snapshots or query results to S3 and use AthenaCheapest long-term history analysisNot real time
  • An RDS Read Replica uses asynchronous replication and is read-only. The Multi-AZ standby instance uses synchronous replication but cannot accept read traffic. For "availability," it is Multi-AZ; for "spreading reads and separating reporting," it is a Read Replica.
  • RDS does not automatically add or remove Read Replicas. A replica is billed at the same rate as a regular DB instance, so if it is needed only while reports run, weigh that cost.
  • There are also federated queries that query the operational database directly from Redshift or Athena. They do not move data, but every query puts load on the operational database, so they suit occasional lookups or checking the latest values.

Zero-ETL Integration

A zero-ETL integration replicates source data into Redshift without building a pipeline. AWS takes care of the initial load, subsequent change replication, health monitoring, and recovery.

Aurora MySQL / Aurora PostgreSQL / RDS / DynamoDB ...
   │  (zero-ETL integration — after the initial load, keeps replicating changes)
   ▼
Amazon Redshift (Serverless or RA3-family provisioned)
   └─ "Target database" created by the integration — read-only
        └─ Process with materialized views and cross-database queries from other databases
ItemDetails
SourcesAurora MySQL, Aurora PostgreSQL, RDS for MySQL, PostgreSQL, and Oracle, DynamoDB, plus SaaS applications and self-managed databases
TargetsRedshift Serverless or RA3-family provisioned cluster (provisioned requires encryption), case sensitivity must be enabled
Other targetsAurora also integrates with SageMaker lakehouse, and DynamoDB with OpenSearch Service
LatencyNear real time for Aurora and RDS. DynamoDB uses incremental exports, so a minimum of 15 minutes
TransformationNone. It replicates the source as is. Processing is done inside Redshift
Target databaseRead-only. You cannot create tables or views inside it
ScopingInclude or exclude tables to replicate with data filtering

Constraints to be aware of are as follows.

  • The source tables must have a primary key. Tables without one are not replicated.
  • The source cluster and the target must be in the same Region.
  • If you run DDL such as ALTER TABLE on the source, that table is resynchronized, and during that time it may not be queryable from Redshift.
  • The initial load can take 20 to 25 minutes or more when you first create the integration and at resynchronization.
  • Aurora MySQL integration depends on the binary log (binlog). Aurora PostgreSQL requires you to specify at least one data filter (at the database level).

⚠️ Pitfall: "Zero-ETL" comes close to meaning there is no T (transformation). The normalized operational schema arrives in Redshift as it is. To convert it to a star schema or build aggregate tables, you must process it inside Redshift with materialized views or SQL. If the question asks for "masking or transforming columns during replication," it is not zero-ETL but the transformation rules of DMS or Glue.

Comparison with DMS

AWS DMS (Database Migration Service) runs a task that reads from a source endpoint and writes to a target endpoint on a replication instance (or serverless).

Task typeBehavior
Full loadMoves the current data once
CDCContinuously replicates only the changes
Full load + CDCCollects the changes made during the move and then continues replicating them. The basis of zero-downtime migration
  • For heterogeneous engines (for example Oracle → Aurora PostgreSQL), the schema and code objects must be converted first. DMS Schema Conversion or AWS SCT does this work, and DMS moves the data. With the same engine, no conversion is needed.
  • During migration, the source keeps running.
  • When the target is Redshift, DMS uploads the data to S3 as CSV and then loads it with COPY. In this case the Redshift cluster must be in the same account and the same Region as the replication instance.
  • If you make S3 the target, it becomes a CDC pipeline that accumulates change history in the lake.
CriterionZero-ETLDMSGlue ETL
EssenceManaged replicationMigration and continuous replication toolGeneral-purpose transformation engine
Sources and targetsFixed combinationsVery wide (including on-premises)JDBC, S3, streams, and so on
TransformationNoneTable mapping, simple transformation rulesArbitrary code
Operational burdenAlmost noneManage replication instance and tasksManage jobs and schedules
LatencyNear real timeNear real time (CDC)Batch (or streaming job)
Typical clue"Analyze Aurora in Redshift with no pipeline""Migrate Oracle to Aurora while continuing to replicate changes""Load as Parquet after complex cleansing and joins"

Ways to Export from RDS/Aurora to the Lake

MethodDetailsWhen it fits
Export a snapshot to S3Exports a DB snapshot to S3 as Parquet. There is no load on the production instanceRegular full-snapshot analysis
Write query results to S3Aurora writes the SELECT result directly to S3 filesExtracting only some tables or conditions
DMS → S3Continuously loads full load + CDC into S3Keeping change history in the lake
Glue JDBC job (bookmarks)Incremental extraction based on a bookmark columnBatch loading of append-only tables
Lake Formation blueprintAutomatically generates the Glue jobs, crawlers, and triggers aboveQuickly setting up a standard pattern

Workload → Store Decision Framework

Decide the access pattern first, then match the store.

① Do you read and write a single record, or aggregate many rows?
   ├─ A single record (transaction) ──► go to ②
   └─ Aggregation (analytics) ────────► go to ③
 
② Do you need relationships, joins, and transactions across multiple rows?
   ├─ Needed ─────────────► RDS / Aurora
   └─ Lookups by key only, with large scale and concurrency ──► DynamoDB
 
③ How often and how heavily do you analyze?
   ├─ Constant, repeated, complex joins, fast response ──► Redshift
   ├─ Occasional, directly on data in S3 ─────────────────► Athena
   └─ Warehouse + S3 history together ────────────────────► Redshift Spectrum
 
④ Is the shape special?
   ├─ Full-text search, log exploration ───► OpenSearch Service
   ├─ Microsecond cache, sessions ─────────► ElastiCache / MemoryDB
   ├─ Relationship traversal (graph) ──────► Neptune
   ├─ Time-series metrics ─────────────────► Timestream
   └─ JSON documents (MongoDB compatible) ─► DocumentDB
RequirementFirst choiceReasonWhat not to choose
Order and payment transactions, normalized schemaAurora / RDSACID, joins, constraintsDynamoDB (no joins), Redshift (not OLTP)
Millisecond lookups by user ID, unpredictable trafficDynamoDBKey lookups, serverless scalingAurora (scaling limits), Athena (latency)
Dashboards over hundreds of millions of rows, multiple joinsRedshiftColumnar MPP, distribution and sort keysAurora (row-based)
Occasional SQL on S3 logsAthenaNo infrastructure, billed by scan volumeRedshift (constant cost)
Partial-match, typo-tolerant search on product namesOpenSearchInverted indexLIKE search in RDS
Cache in front of a databaseElastiCacheIn-memory-
Move an existing Oracle or SQL Server to the cloud as isRDSKeeps the same engineAurora (not a compatible engine)

The selection criteria, one line each, are as follows.

  • Access pattern: key lookups / transactions and joins / aggregation / search / relationship traversal.
  • Data shape: structured / semi-structured / unstructured.
  • Latency and concurrency: many millisecond requests / heavy queries taking seconds to minutes.
  • Operating model: serverless (Athena, DynamoDB on-demand, Redshift Serverless, Aurora Serverless) / provisioned.
  • Billing unit: instance hours (RDS, Aurora) / request and capacity units (DynamoDB) / node hours and RPUs (Redshift) / scan volume (Athena).

Symptom → Cause → Action

SymptomCauseAction
Order processing slows down while reports runAnalytics queries run on the writerSeparate with a Read Replica or reader
Moved to a replica but aggregation is still slowLimits of a row-based engineReplicate to Redshift (zero-ETL, DMS)
Some tables do not arrive in zero-ETLNo primary key, excluded by the data filterAdd a primary key, check the filter
Creating a zero-ETL integration failsTarget case sensitivity disabled, unsupported node type, Region mismatchFix the target settings
Cannot query a Redshift table after changing a column on the sourceResynchronization caused by DDLWait for completion, adjust the timing of changes
DMS CDC lag keeps growingNo primary key on the target table, insufficient replication instanceAdd a primary key, scale up the instance
A Read Replica returns stale valuesAsynchronous replication lagMonitor the lag metric, send reads that need the latest values to the writer

Question Clue → Answer Lookup Table

Clue in the questionAnswer
"Normalized transactions, ACID, joins"RDS / Aurora
"Separate the reporting load from the operational DB in the simplest way"Read Replica (Aurora reader)
"Aurora data in Redshift in near real time, with no pipeline to manage"Zero-ETL integration
"Oracle → Aurora PostgreSQL migration + continuous replication"DMS (schema via DMS Schema Conversion/SCT)
"Continuously load changes from an on-premises DB into S3"DMS (target S3)
"Complex transformations and joins while replicating"Glue ETL
"Analyze snapshot data with Athena with no operational load"Export the snapshot to S3
"Occasionally query the latest rows of the operational DB together from Redshift"Federated query
"Key-based milliseconds, large-scale concurrency, serverless"DynamoDB
"Intermittent SQL analysis of S3 data"Athena
"Automatic switchover on failure (availability)"Multi-AZ (not a Read Replica)

Tomorrow we put this week's stores on a single page and review the choice by workload and the data movement paths between stores.

📖 Glossary

  • OLTP / OLAP: Transaction processing of small numbers of rows, and analytical and aggregation processing of large volumes of data.
  • Cluster volume: Aurora's shared storage. It is replicated across several AZs and used jointly by all instances.
  • Read Replica: A read-only copy that follows the source asynchronously. It shares the read load.
  • Multi-AZ: An availability configuration that keeps a standby instance in a different AZ and switches over automatically on failure.
  • CDC: Change Data Capture. A method that captures and delivers only the changes (inserts, updates, deletes) of the source.
  • Zero-ETL integration: A managed feature in which AWS continuously replicates a source into an analytics store without building a pipeline.
  • DMS: A service that moves databases and keeps replicating changes. It consists of a replication instance, endpoints, and tasks.
  • Schema conversion: The work of converting table definitions and code objects into the target engine's syntax when moving to a database with a different engine.
  • Federated query: A query that reads another store directly without moving the data.
  • Star schema: An analytics model made of a central fact table and surrounding dimension tables.

📝 Practice Questions

Click a choice to reveal the answer and explanation.

Question 1

Which of the following stores is optimized for row-based OLTP and best suited to normalized transactional and ACID workloads?

Question 2

What do you use to replicate Aurora data to Redshift in near real time for analysis without building a separate ETL pipeline (DMS/Glue)?

Question 3

Heavy BI reporting queries on a production Aurora instance are degrading transaction performance. What is the first mitigation to consider?

Question 4

You are migrating an Oracle database to Aurora PostgreSQL and need ongoing change replication (CDC) during the migration. Which service is the most appropriate?

Question 5

Which store is the most suitable when the key requirements are "single-digit millisecond lookups by user ID, unpredictable massive concurrency, and serverless operation"?

PreviousDynamoDB (Analytics Perspective): Key Design and Stream-Based PipelinesWeek 7 · Day 3Next Week 7 Comprehensive Review: Analytics Stores RecapWeek 7 · Day 5

Official references

  • DEA-C01 official exam page(opens in a new tab)
  • Amazon RDS · Aurora documentation(opens in a new tab)
  • Amazon Redshift documentation(opens in a new tab)
  • AWS DMS documentation(opens in a new tab)
  • Amazon S3 documentation(opens in a new tab)
  • Amazon DynamoDB documentation(opens in a new tab)

On this page

  • Key Takeaways
  • RDS and Aurora Overview
  • OLTP vs OLAP
  • Stages for Peeling Off Analytics Load
  • Zero-ETL Integration
  • Comparison with DMS
  • Ways to Export from RDS/Aurora to the Lake
  • Workload → Store Decision Framework
  • Symptom → Cause → Action
  • Question Clue → Answer Lookup Table
  • Glossary
  • Practice Questions