Choosing Data Stores and Storage Formats
Domain 2 task 2.1 turned into a decision procedure: map every access pattern to exactly one AWS store (S3 lake, Redshift, DynamoDB, RDS/Aurora, OpenSearch, MemoryDB, Neptune, ElastiCache in the real world), pick the storage format from a CSV/JSON/Avro/Parquet/ORC matrix, choose Snappy versus GZIP versus ZSTD with AWS's own wording, run Amazon S3 as the lake core (per-prefix request rates, 2020 strong consistency, partitions versus prefixes, 503 Slow Down), understand the lakehouse table formats Iceberg, Hudi and Delta at exam depth, apply worked decision tables to scenario questions, and separate Amazon Athena from Amazon Redshift at the consumption layer, with a sourced October 2026 update box, two AWS customer case studies and twelve exam-style questions.
Ask ten candidates how they choose a database and you will hear ten versions of "it depends", and on DEA-C01 that answer scores nothing. The exam does not reward vague architecture taste; it rewards a deterministic mapping: one access pattern in the stem, one service out of the in-scope list, one format at rest, one compression codec. Domain 2 is worth 26% of the exam, and task 2.1 is the store-selection core of that domain, skills 2.1.1 (implement storage for cost and performance), 2.1.2 (configure storage for access patterns), 2.1.3 (apply stores to use cases), 2.1.7 (manage open table formats, for example Apache Iceberg) and 2.1.8 (describe vector index types, for example HNSW and IVF).
====================================================================
THE STORE DECISION SURFACE β DEA-C01 Domain 2, task 2.1
====================================================================
Key lookup, single-digit ms ......... Amazon DynamoDB
Range inside one partition .......... DynamoDB query (PK + SK)
Redis API + durable primary ......... Amazon MemoryDB for Redis
Graph / multi-hop traversal ......... Amazon Neptune
Managed OLTP, ACID, joins ........... Amazon RDS / Amazon Aurora
Vector similarity with SQL .......... Aurora PostgreSQL (HNSW/IVF)
Aggregation + BI, many large tables . Amazon Redshift
Ad-hoc SQL over files in S3 ......... Amazon Athena ($5.00/TB)
Full-text, relevance, log drill-down Amazon OpenSearch Service
Cheap raw landing + lifecycle tiers .. Amazon S3 (+ S3 Glacier)
Transactional lakehouse layer ........ S3 + Iceberg (S3 Tables, Glue)
Formats at rest ......... Parquet / ORC (columnar) for analytics
Avro / Protobuf in motion, CSV / JSON on landing
Codecs .... Snappy (fast reads) Β· GZIP (ratio, Hive)
ZSTD (Iceberg default, levels 1-22, Athena default 3)
ZLIB (ORC writes)
Not this ....... analytics in DynamoDB Β· joins in OpenSearch Β·
lake-wide aggregation in a cache
====================================================================In this lesson you will:
- read task 2.1 skill by skill and build the in-scope store taxonomy the exam draws from;
- map access pattern β service with a master table and a decision tree you can walk in seconds;
- size DynamoDB with real capacity-unit arithmetic and its 400 KB / 10 GB ceilings;
- place RDS, Aurora, Neptune, MemoryDB and DocumentDB so you never pick two services for one pattern;
- separate Redshift, Athena and OpenSearch by what the query actually does;
- pick a format from the CSV / JSON / Avro / Parquet / ORC matrix: layout, schema, evolution and when;
- choose a compression codec from AWS's own wording (Snappy, GZIP, ZSTD, ZLIB) and the defaults that become distractors;
- run S3 as the lake core: 3,500 / 5,500 requests per partitioned prefix, no prefix limit, strong consistency since 1 December 2020, and the hot-prefix 503 fix;
- reason about lakehouse table formats, Iceberg, Hudi and Delta, to exactly the depth skill 2.1.7 requires;
- apply decision tables to exam scenarios, and split Athena versus Redshift at the consumption layer;
- study two AWS customer case studies and a sourced October 2026 update box;
- practise with 12 exam-style questions plus three interactive checks.
1. What task 2.1 actually tests
1.1 The five skills behind this lesson
Skill | Verbatim focus | What the question must make you do |
|---|---|---|
2.1.1 | Implement storage for cost and performance | Trade storage class, format and engine against a stated budget or latency target |
2.1.2 | Configure storage for access patterns | Read the pattern (key lookup, range scan, join, search) and name the store |
2.1.3 | Apply data stores to use cases | Named examples in the guide: HNSW on Aurora PostgreSQL, MemoryDB for fast key/value access |
2.1.7 | Manage open table formats (for example Apache Iceberg) | Snapshots, time travel, hidden partitioning, compaction: awareness depth |
2.1.8 | Describe vector index types (HNSW, IVF) | Recognise which index a vector workload needs, with the engine that offers it |
Two boundaries matter more than the lists themselves. Engine deep-tuning is out: Redshift internals belong to Lesson 4, and orchestration to Lesson 5. What is left here is selection: pattern in, service out, format attached.
1.2 The in-scope store taxonomy
Everything you may name as the correct answer comes from this table (DEA-C01 in-scope lists, checked Oct 2026):
Category | In-scope services | Exam identity in one line |
|---|---|---|
Object / lake core | S3, S3 Tables, S3 Glacier | Objects at scale, per-prefix request rates, lifecycle tiers |
Data warehouse (OLAP) | Redshift | MPP + columnar, complex joins on very large tables, BI concurrency |
NoSQL key-value / document | DynamoDB, DocumentDB, Keyspaces | Single-digit-ms key lookups; JSON-ish collections; Cassandra API |
Relational (OLTP) | RDS, Aurora | Managed SQL, ACID, joins, Multi-AZ and replicas |
Search | OpenSearch Service | Full-text relevance plus log analytics, near-real-time |
In-memory / fast key-value | MemoryDB for Redis | Microsecond reads with a durable Multi-AZ primary |
Graph | Neptune | Billions of relationships, milliseconds, Gremlin / openCypher / SPARQL |
Streams (transport, not a store) | Kinesis Data Streams, MSK | Buffer that feeds the stores above |
Lakehouse layer | Glue (+ Data Catalog), Lake Formation, S3 Tables, Athena | Catalog, governance, Iceberg management, ad-hoc SQL |
Streams are not stores. Kinesis Data Streams and Amazon MSK appear in skill 2.1.1's storage list because they move data, but a question that asks "where do you keep three years of clickstream for quarterly reporting?" is never answered with a stream. Land it (S3), query it (Athena), and keep the stream only as the intake.
- π Did you know? Amazon ElastiCache and Amazon Timestream sit on neither the in-scope nor the out-of-scope list (both lists checked Oct 2026), while skill 2.1.3 names MemoryDB by name. The practical reading: when a stem uses the guide's own "fast key/value access" wording, MemoryDB is the in-scope pick, and ElastiCache remains the real-world cache answer you will meet in production diagrams. Never spend exam minutes arguing about list hygiene; answer with the service the stem's wording matches.
2. Access pattern β service: the master map
2.1 The table you should be able to recite
Scenario wording in the stem | Exam pick | Why (source) |
|---|---|---|
Point lookup by key, single-digit ms, any scale (cart, session, profile) | DynamoDB | "single-digit millisecond performance at any scale"; deliberately omits JOINs |
Ordered range inside one key ("orders for customer X, 1 to 9 October") | DynamoDB query (partition key + sort key) | Ordered range within a partition |
Secondary or sparse lookups | DynamoDB GSI | Alternate access paths over the same items |
Complex aggregation over billions of rows + concurrent BI dashboards | Redshift | MPP, columnar, query optimisation |
Ad-hoc SQL on files already in S3, pay per query | Athena | Schema-on-read, $5.00 per TB scanned |
Full-text, relevance, fuzzy or phrase search | OpenSearch Service | Full-text search segment |
Machine-generated time-series logs + keyword drill-down | OpenSearch log analytics | "semi-structured, machine-generated time series data" |
High-rate event ingest, then analytics downstream | Kinesis / MSK β S3 | Streams in scope as transport, S3 as the store |
Multi-hop traversal (fraud rings, recommendations, knowledge graph) | Neptune | Graph traversal in milliseconds |
Redis API as a durable primary, microsecond reads | MemoryDB | Skill 2.1.3 verbatim |
Cache-only layer in front of a relational database | ElastiCache in production; in-scope phrasing β MemoryDB | See the π note in Section 1.2 |
Document / JSON records with indexes | DocumentDB | In-scope list |
Managed relational default for OLTP | RDS | "We recommend Amazon RDS as your default choiceβ¦" |
Vector similarity alongside SQL data | Aurora PostgreSQL | Skills 2.1.3 / 2.1.8 (HNSW, IVF) |
Cheap raw landing + tiering over time | S3 (+ S3 Glacier) | Storage classes and lifecycle |
ACID updates, snapshots, time travel on the lake | S3 + Iceberg (S3 Tables / Glue) | Skill 2.1.7 |
Teaching rule:
- *key + latency β DynamoDB or MemoryDB
- joins and BI β Redshift
- SQL on the lake β Athena
- text β OpenSearch
- relationships β Neptune
- OLTP β RDS or Aurora
- cheap raw scale β S3.*
2.2 Worked example E1: one system, two stores
A retail service has two requirements in the same ticket:
Requirement A "Add to cart" must return in single-digit ms for 40,000
concurrent shoppers, keyed by session ID
Requirement B "Average basket by region, by week" over 2 years of orders
for the BI team, with 30 concurrent report viewers
A -> DynamoDB key = session ID, item < 400 KB, no joins needed
B -> Redshift joins + aggregation + BI concurrency
Wrong: "DynamoDB for both" (aggregation = Scan = full table read, no joins)
Wrong: "Redshift for both" (a warehouse is the wrong shape for per-request
point lookups at single-digit ms)The stem always contains two requirements on purpose. Split the workload; never force one store to answer a pattern it was not designed for.
2.3 Interactive check: match pattern to service
How to answer
Matching exercise with 8 pairs. Match each item on the left with its answer on the right.
Match each access pattern to the AWS store the DEA-C01 exam selects:
Drag answers from here:
3. Key-value, document, graph and in-memory stores
3.1 DynamoDB: the constraints the exam quotes
Constraint / metric | Value (as of Oct 2026) | Why it appears in a stem |
|---|---|---|
Maximum item size | 400 KB (attribute names count) | A 900 KB blob does not fit: store a key plus S3, or split attributes |
Partition ceiling with local secondary indexes | 10 GB | Over-large single-key designs |
Per-partition design capacity | 3,000 RCU + 1,000 WCU per second | Hot partition diagnosis |
1 RCU | 1 strongly consistent read/s of β€ 4 KB (eventual = half; transactional = 2) | Capacity math |
1 WCU | 1 write/s of β€ 1 KB (transactional = 2) | Capacity math |
On-demand for new tables | 4,000 writes/s, 12,000 reads/s, absorbs 2Γ previous peak | Spiky, unknown traffic |
Scale proof | Tables over 200 TB; over 1 billion requests/hour; Prime Day 2021 peak 89.2M requests/s | "any scale" claims |
DynamoDB's exam identity is single-digit-millisecond key access at any scale, and its deliberate silence about JOINs is the point. Any option proposing DynamoDB for lake-wide aggregation has misread the service.
3.2 Worked example E2: capacity units by hand
Read side : 500 strongly consistent reads/second of 8 KB items
ceil(8 / 4) = 2 RCU each -> 500 x 2 = 1,000 RCU
Write side: 200 writes/second of 1.6 KB items
ceil(1.6 / 1) = 2 WCU each -> 200 x 2 = 400 WCU
Check against the per-partition design ceiling (3,000 RCU + 1,000 WCU/s):
1,000 RCU and 400 WCU both sit inside ONE partition's design budget,
so a single well-chosen partition key is enough - the risk is key SKEW,
not volume.3.3 Worked example E3: the 400 KB item headroom test
Payload | Size | Fits in one DynamoDB item? | Design |
|---|---|---|---|
Customer profile document | 300 KB | Yes (β€ 400 KB) | Single item, point lookup |
Session blob with base64 attachments | 900 KB | No | Store session_id + small attributes in DynamoDB, blob in S3, key as the pointer |
Order header + 40 order lines | 120 KB | Yes, but wasteful | Model as separate items sharing a partition key so a range query returns one order |
The exam's favourite version of this question puts the number just over 400 KB in the stem. The answer is never "increase the item limit"; there is no such knob.
3.4 The neighbours: DocumentDB, MemoryDB, Neptune
Store | What it is for | Signature fact |
|---|---|---|
DocumentDB | Document / JSON-style records with indexes | In-scope NoSQL document option |
MemoryDB for Redis | Redis-compatible structures with a durable Multi-AZ primary | Microsecond reads, single-digit-ms writes, up to 160M TPS per cluster; about 390K reads/s + 100K writes/s per node |
Neptune | Highly connected data | "optimized for storing billions of relationships and querying the graph with milliseconds latency" |
Keyspaces | Cassandra API workloads | In-scope Cassandra-compatible option |
- π Did you know? MemoryDB's claim to exam fame is a single sentence in skill 2.1.3, "MemoryDB for fast key/value access", which is why it beats every other cache-flavoured option when the stem asks for Redis structures plus durability. A plain cache in front of a database is a real architecture, but the guide's named use case is the durable one: if the data must survive a node failure without a rebuild from the source of truth, you are reading the MemoryDB line.
4. Relational OLTP: Amazon RDS and Amazon Aurora
4.1 RDS is the documented default
Amazon RDS presents the exam's default managed relational choice: you choose an engine, Multi-AZ for failover, read replicas for scale-out, and automated backups: AWS takes the OS and engine patching. The service's own welcome page recommends RDS as your default choice for relational workloads, which is why any stem describing conventional OLTP (transactions, joins, foreign keys, a schema that is enforced on write) resolves to RDS unless a specific Aurora capability is named.
4.2 Aurora: the deltas the stem names
Attribute | Aurora value (as of Oct 2026) |
|---|---|
Compatibility | MySQL- and PostgreSQL-compatible |
Throughput claim | Up to 6Γ MySQL performance |
Cluster volume | Up to 256 TiB |
Read replicas | Up to 15 within the cluster |
Vector search (skills 2.1.3 / 2.1.8) | Aurora PostgreSQL with HNSW and IVF indexes |
Choice ladder for a relational stem
-----------------------------------
Conventional OLTP, wants a managed default ............... RDS
Needs MySQL/PostgreSQL compatibility at 6x, 256 TiB,
15 read replicas, or vector search with HNSW/IVF ....... Aurora
Needs warehouse-grade aggregation over billions of rows ... Redshift
Needs single-digit-ms key access with no joins ........... DynamoDBThe vector line is the newest trap in this domain: HNSW (hierarchical navigable small world, recall-oriented, memory-hungry) and IVF (inverted file, faster build, cluster-based search) are index types, not services. The stem names the index, the option names Aurora PostgreSQL.
4.3 Worked example E4; which relational flavour?
Stem 1 "Payment authorisations must commit in one transaction, with
foreign keys to merchants and chargebacks, and failover in
under 60 seconds" -> RDS (or Aurora), Multi-AZ
Stem 2 "Monthly finance extracts joining 40 tables across 8 TB with
40 concurrent analysts" -> Redshift (OLAP, not OLTP)
Stem 3 "Semantic search over 3 million product descriptions embedded
as vectors, alongside the product table" -> Aurora PostgreSQL
Stem 4 "Session state for a mobile game, keyed by player ID, no joins" ->
DynamoDB - choosing a relational engine here is the distractorEvery stem hides a shape word: transaction, foreign key, failover = OLTP; extract, join across many tables, analysts = OLAP; vector, embedding, similarity = Aurora PostgreSQL with HNSW/IVF; keyed by, by ID, single-digit ms = DynamoDB.
5. Analytics stores: Redshift, Athena and OpenSearch
5.1 Three analytics shapes, three services
Signal in the stem | Pick | Metering shape (as of Oct 2026) |
|---|---|---|
Repeated, concurrent BI over large curated tables; complex joins | Redshift | Node hours or RPU hours |
One-off SQL over files already in S3; "no infrastructure" | Athena | $5.00 per TB scanned, 10 MB minimum per query |
Relevance, fuzzy or phrase search; log drill-down with aggregations | OpenSearch Service | Domain: instance hours + storage; Serverless: OCU + storage |
Full Spark / Hive / Presto processing | EMR | Cluster or serverless DPU time |
AWS's own framing is quotable: Athena is for "interactive ad hoc SQL queries against data on Amazon S3, without β¦ infrastructure or clusters", while Redshift is "optimized β¦ on complex queries that join large numbers of very large database tables".
5.2 OpenSearch: the log-analytics identity
Property | Value (as of Oct 2026) |
|---|---|
Domain modes | General Purpose (relevance, nested objects, frequent updates) vs Optimized / log analytics (Parquet columnar + retained Lucene index, PPL/SQL) |
Serverless refresh | Roughly 10 seconds |
Optimized engine claims | Up to 4Γ price-performance, 2Γ ingestion, 2Γ query speed |
Serverless collection groups | Search, time series and vector search; 1 OCU β 6 GiB RAM + vCPU |
The split that appears in stems: aggregating 5xx errors by service and full-text drilling into a stack trace is one query shape, OpenSearch. "Join the error counts to the customer dimension table" is a different shape, Athena or Redshift.
6. The storage-format matrix
6.1 CSV, JSON, Avro, Parquet, ORC, and Protobuf for completeness
Format | Layout | Schema | Evolution | Use when | Source |
|---|---|---|---|---|---|
CSV / TSV | Row, text | External catalog: schema-on-read | None natively | Interchange, human-readable dumps, raw landing | Athena columnar-storage docs |
JSON (Lines) | Row, text, nested | Applied on read; crawler infers | Loose: keys drift | Event payloads, APIs, exploration | Glue Schema Registry docs |
Avro | Row, binary | Schema stored with the data (schema = JSON, data = binary) | Excellent (registry BACKWARD / FORWARD) | Streaming serialisation: Kafka / Kinesis | Glue Schema Registry docs |
Parquet | Columnar, binary | File footer | Supported | Analytics: column pruning + predicate pushdown on min/max | Athena columnar-storage docs |
ORC | Columnar, binary, Hive-optimised | File footer | Supported | Hive-centric workloads; often smaller files, built-in indexes | Athena columnar-storage docs |
Protobuf | Row, binary, language-neutral | .proto definitions | Strong (field numbers) | RPC / service contracts; registry DataFormat = AVRO | JSON | PROTOBUF | Glue Schema Registry docs |
Three comparisons the exam reuses endlessly:
Pair | The distinction |
|---|---|
Row vs columnar | Avro = "fast reads and writes of complete records", best for ingestion, "not optimized for analytics"; Parquet / ORC = analytics |
Parquet vs ORC | Parquet = wider query types, Arrow-optimised, complex queries; ORC = often smaller files, indexes can speed queries, strong structs/maps/lists: both are columnar with pushdown |
CSV/JSON vs either columnar | CSV and JSON have no predicate pushdown, so every query pays for full bytes scanned, and Athena bills by bytes scanned |
6.2 Predicate pushdown in one picture
Athena's documentation states it plainly: "Predicate pushdown in Parquet and ORC enables Athena queries to fetch only the blocks it needs⦠it uses statistics from data block predicates, such as max/min values, to determine whether to read or skip the block." A file of daily totals where the query asks for one date lets the engine skip whole row groups; that skipping is the cost model, not a micro-optimisation.
6.3 Sizing defaults worth memorising
Knob | Value (as of Oct 2026) |
|---|---|
Target split size | About 128 MB |
Athena Parquet block default | 128 MB |
Athena ORC stripe default | 64 MB (stripes under 8 MB are read whole) |
Conversion path | CSV/JSON β Parquet/ORC via Glue ETL or Athena CREATE TABLE AS |
6.4 Worked example E5: AWS's own cost ladder
Athena's pricing page carries this exact worked example (as of Oct 2026):
3 TB of TEXT, query touches 1 of 4 columns
Step 1 raw text : 3 TB x $5.00/TB = $15.00
Step 2 add GZIP 3:1 : 1 TB x $5.00/TB = $5.00 (AWS: "3x savings
from compression")
Step 3 convert to Parquet: 0.25 TB x $5.00/TB = $1.25 (AWS: "4x savings
for reading only one column")
Same query, same dashboard, same BI tool: $15.00 -> $5.00 -> $1.25Lesson for the exam: compression alone gives the first cut; columnar layout gives the second; neither is optional, and neither changes the query. When a stem says "reduce query cost without changing the BI tool", the answer is convert to columnar: not buy a bigger cluster.
7. Compression codecs: Snappy, GZIP, ZSTD, ZLIB
7.1 AWS's own wording
Codec | AWS wording (Athena compression docs) | Default for | Exam read |
|---|---|---|---|
Snappy | "Lempel-Ziv 77 (LZ7) family β¦ focuses on high compression and decompression speed rather than the maximum compression" | Common Parquet / Hive / Spark choice | Fast reads: the analytics default when CPU matters |
GZIP | "based on Deflate"; compressed text is not splittable | Athena Hive Parquet/text writes | Better ratio, slower, poor parallel splits |
ZSTD | "fast compression algorithm that provides high compression ratios"; levels 1 to 22, Athena default 3 | Iceberg tables | Best tunable balance: the lakehouse answer |
ZLIB | Based on Deflate | ORC writes | ORC ecosystem default |
LZO / LZ4 / BZIP2 | Read-only in places; Athena cannot write Parquet with LZ4 or LZO | : | Distractor material |
The governing principle from Athena's tuning guidance: higher ratio costs CPU. Compress the lake, then let columnar layout plus predicate pushdown cut the I/O.
β οΈ Compression is not columnar. GZIP'd CSV is still fully scanned: the codec shrinks bytes, but the engine still reads every row to find one column. The two levers are independent: format decides how much data the engine must touch, codec decides how big those bytes are. A stem offering "switch from Parquet to GZIP-complied CSV to save money" has swapped the levers.
7.2 Defaults that become three-way distractors
ZSTD -> Iceberg tables (Athena default compression for Iceberg)
GZIP -> Hive Parquet / text (Athena Hive write default)
ZLIB -> ORC writes (ORC ecosystem default)Learn them as a triple: any question that pairs "which compression does X use by default" with three of these four names is testing recall of exactly this mapping.
How to answer
Fill-in-the-blank exercise with 7 blanks. Type the missing words, then check your answer.
Complete the codec statements with AWS's own defaults and tradeoffs:
blank is the default compression for Iceberg tables, where Athena writes at level blank of a range that runs from 1 to blank. Hive Parquet and text writes default to blank, ORC writes default to blank, and blank is the Parquet/Spark favourite because it optimises for blank rather than the maximum compression ratio.
Word Bank, drag words into the blanks above:
7.3 Worked example E6: the codec decision in a stem
Stem 1 "Iceberg table on S3 queried by Athena; balance ratio and scan cost"
-> ZSTD (Athena uses level 3 by default for ZSTD writes)
Stem 2 "Spark jobs decode faster than they encode; CPU is the constraint"
-> Snappy (decompression speed is the stated design goal)
Stem 3 "Hive tables written by EMR, text output, splittability matters"
-> GZIP (and remember: compressed text is NOT splittable)
Stem 4 "ORC files in a Hive-ecosystem pipeline"
-> ZLIB (the ORC write default)
Stem 5 "Cheapest possible long-term archive of raw CSV nobody queries"
-> GZIP on S3, then tier to S3 Glacier - codec choice only;
the format (CSV) still means full scans for anyone who queries it7.4 Worked example E7: conversion arithmetic
Before : 3.6 TB of CSV in S3, dashboards read 2 columns of 12
After : CTAS with format='PARQUET', write_compression='GZIP'
-> roughly 1.2 TB at rest (about 3:1 on already-compact text)
-> a single-column dashboard touches about 0.3 TB
Athena cost, as of Oct 2026:
before : 3.6 TB x $5.00 = $18.00 per dashboard refresh
after : 0.3 TB x $5.00 = $1.50 per dashboard refresh
(illustrative arithmetic; AWS's own sourced template is the 3 TB
text -> GZIP -> Parquet ladder in Section 6.4: $15.00 -> $5.00 -> $1.25)- π Did you know? Amazon Athena infers compression from the file extension for text and JSON formats, so renaming a
.csv.gzto.csvdoes not "decompress" anything, it just tells the engine to expect plain text it will not find. That is why format questions and codec questions are separate exam items: the format is what you declare, the codec is largely what the engine discovers.
8. Amazon S3 as the data-lake core
8.1 Request rates: per prefix, not per bucket
AWS's performance documentation (accessed Oct 2026) states:
"Your application can achieve at least 3,500 PUT/COPY/POST/DELETE or 5,500 GET/HEAD requests per second per partitioned Amazon S3 prefix. There are no limits to the number of prefixes in a bucket."
Metric | Value (as of Oct 2026) |
|---|---|
Writes per partitioned prefix | β₯ 3,500 PUT/COPY/POST/DELETE per second |
Reads per partitioned prefix | β₯ 5,500 GET/HEAD per second |
Prefix limit | None |
AWS's parallelisation example | 10 prefixes β 55,000 reads/s |
Throttling signal | Sustained > 5,000 requests/s to a few objects β possible HTTP 503 Slow Down |
S3 Express One Zone | Single-digit ms, up to 2,000,000 requests/s per directory bucket |
8.2 Worked example E8: the hot-prefix fix
Incident : one writer pushes 8,000 objects/second into a single key
Diagnosis: 8,000 > 3,500 writes per partitioned prefix -> 503 Slow Down
Fix : spread writes across hashed or date-plus-shard prefixes
10,500 objects/s / 3,500 per prefix = 3 distinct written prefixes
minimum, before relying on S3's automatic partitioning
Not a fix : "raise the bucket limit" - there is no bucket-level request
quota to raise; the axis is the PREFIX.8.3 Partitions and prefixes are different axes
Axis | What it optimises | Mechanism |
|---|---|---|
Hive-style partitions ( dt=2026-10-09/) | Query pruning: Athena reads only matching partitions | Partition keys in the Glue Data Catalog |
Written prefixes | Request rate: each partitioned prefix gets its own 3,500 / 5,500 lane | Key layout under the bucket |
Over-partitioning produces small files and planner overhead ("reduce your request rate" style errors appear in Athena tuning guidance at tiny split sizes). The rule: partition for the WHERE clause, spread prefixes for the write rate, and target roughly 128 MB splits.
8.4 Consistency: the 2020 change that killed two answers
AWS's announcement of 1 December 2020:
"Effective immediately, all S3 GET, PUT, and LIST operations, as well as operations that change object tags, ACLs, or metadata, are now strongly consistent."
-
Free, applies to all Regions and all objects.
-
Consequences: EMRFS Consistent View and S3Guard are obsolete: any option whose correctness requires them is stale and wrong.
-
A "read-after-write is eventually consistent in S3" option has been false for every exam since 2021.
-
π Did you know? S3's storage-class ladder is itself a cost lever for the lake: Intelligent-Tiering moves objects untouched for 30 days to Standard-IA (β40%), 90 days to Glacier Instant Retrieval (β68%), and optionally 180 days to Deep Archive (β95%), while S3 Express One Zone trades a single Availability Zone for single-digit-millisecond latency at up to 2,000,000 requests/s per directory bucket (as of Oct 2026). Choosing the class is task 2.1's cost/performance half; choosing the format is this lesson's Section 6.
-
π Did you know? Amazon S3 has been a public service since 13 March 2006, and AWS's own 20-year retrospective (2026-03-13) reports a price reduction of approximately 85% since launch plus more than $6 billion saved collectively by customers who chose S3 Intelligent-Tiering instead of S3 Standard: together with the reminder that "the code you wrote for S3 in 2006 still works today, unchanged." That is why Intelligent-Tiering is the lake default when the re-read pattern is unknown: AWS moves an object untouched for 30 days to Standard-IA (β40%), 90 days to Glacier Instant Retrieval (β68%) and optionally 180 days to Deep Archive (β95%), so the cost decision runs itself while the format decision (Section 6) stays yours.
9. The lakehouse layer: Iceberg, Hudi and Delta
9.1 Why table formats exist
File formats "only allow for writes of entire files", so change-data-capture, deletes and continuous streaming create small-file pain and offer no transactional semantics on object storage. Table formats add snapshots, compaction, time travel and transactional semantics on top of Parquet/ORC/Avro files in S3. A plain data lake, AWS's Prescriptive Guidance notes, doesn't provide support for atomicity, consistency, isolation, and durability (ACID) until a table format such as Iceberg is added.
Iceberg is the one the guide names (skill 2.1.7), so it is the one you must know in depth:
Iceberg feature | What it does (exam phrasing) |
|---|---|
Snapshots | Each write creates a new snapshot; manifest lists and manifests carry column-level min/max statistics for data skipping |
Hidden partitioning | "This feature prevents reading unnecessary partitions automatically": day(ts) derives the value on the fly, no extra column, no manual WHERE dt= bookkeeping |
Time travel | FOR VERSION AS OF <snapshot_id> / FOR TIMESTAMP AS OF <timestamp> |
Default catalog | AWS Glue Data Catalog |
Engine support | Athena, EMR, Redshift, Glue, SageMaker |
Managed option | Amazon S3 Tables = managed Iceberg on S3 |
9.2 Hudi and Delta: awareness, not internals
AWS's own guidance says "no single table format is a 'one size fits all'". The comparison matrix AWS publishes (accessed Oct 2026):
Capability | Hudi | Iceberg | Delta |
|---|---|---|---|
Copy-on-write | Yes | Yes | Yes |
Merge-on-read | Yes | Yes | No |
Data file formats | Parquet, ORC, HFile | Parquet, ORC, Avro | Parquet only |
Time travel | Yes | Yes | Yes |
Because the guide names only Iceberg, do not memorise internals of the other two: recognise the names and know that AWS declines to crown a winner.
9.3 Schema-on-read versus schema-on-write
Schema-on-write (warehouse) | Schema-on-read (lake) | |
|---|---|---|
Order of operations | Define schema, conform on load, reject incompatible changes | Land data as-is, apply the schema at query time |
AWS wording | Traditional warehouse staging | "the data can be stored as is and you apply a schema at the time that you read it" |
Strength | Pre-structured data queries faster; enforced | Flexible, fast to start |
Weakness | Rigid intake | Drift surfaces at query time |
Home on AWS | Redshift tables | Athena + Glue Data Catalog over S3 |
Exam phrasing: lake = schema-on-read, cheap storage, decoupled compute; warehouse = schema-on-write, curated, enforced, tuned for BI. Fixed dashboards with heavy joins β write; raw, variable structures β read.
9.4 Worked example E9: hidden partitioning and time travel
Table: clickstream events, column `ts` (timestamp)
Hive-style design
PARTITIONED BY (dt) + files under dt=2026-10-09/
Query MUST contain WHERE dt = '2026-10-09' or Athena scans everything
Iceberg design
PARTITIONED BY (day(ts)) -> adds NO column to the schema
Athena derives the partition from `ts`; a WHERE on ts prunes,
and you never hand-maintain dt= bookkeeping
Auditor question, "what did the table contain at noon yesterday?":
SELECT * FROM clickstream
FOR TIMESTAMP AS OF '2026-10-09 12:00:00 UTC';
-> answered from snapshots, with no table copy10. Decision tables for exam scenarios
10.1 The master scenario table
# | Access pattern / constraint | Store | Format at rest | Codec |
|---|---|---|---|---|
1 | Point lookup by key, single-digit ms, any scale | DynamoDB | Item (JSON-like) | : |
2 | Ordered range within one key | DynamoDB query (PK + SK) | , | , |
3 | Secondary / sparse lookups | DynamoDB GSI | , | , |
4 | Complex joins + aggregation, BI concurrency | Redshift | Internal columnar; COPY from Parquet/CSV/Avro/ORC/JSON | Snappy / ZSTD |
5 | Ad-hoc SQL on the lake, pay per query | Athena over S3 | Parquet (or ORC) | ZSTD (Iceberg) / GZIP (Hive) |
6 | Full-text / fuzzy / relevance search | OpenSearch | Indexed JSON documents | : |
7 | Log + machine-generated time-series with keyword drill-down | OpenSearch log analytics | Parquet + Lucene index | Columnar |
8 | High-rate event ingest, then analytics | Kinesis / MSK β S3 | Avro in motion β Parquet at rest | ZSTD |
9 | Multi-hop relationships, fraud or recommendation | Neptune | Graph | : |
10 | Managed OLTP: ACID, joins, transactions | RDS / Aurora | Engine rows | Engine |
11 | Redis API as durable primary, microsecond reads | MemoryDB | Redis structures | : |
12 | Cheap raw landing + tiering over time | S3 (+ Glacier) | Raw CSV / JSON | GZIP |
13 | ACID updates, snapshots, time travel on the lake | S3 + Iceberg (S3 Tables / Glue) | Parquet | ZSTD |
14 | Vector similarity alongside SQL data (HNSW / IVF) | Aurora PostgreSQL | Engine + vector index | : |
15 | Re-query yesterday's curated table | Athena / Iceberg time travel | Parquet | ZSTD |
10.2 Format lifecycle: interactive ordering
How to answer
Ordering exercise with 6 items. Move them into the correct order, then check your answer.
Order this data lifecycle from ingestion to long-term retention, exactly as the exam expects a well-designed lake to progress:
10.3 The ten trap pairs
Distractor | Why it is wrong |
|---|---|
"Use DynamoDB for the monthly aggregation" | No joins; a Scan reads the whole table |
"Compress the CSV to cut Athena cost" | Compression β columnar: full scans continue |
"S3 is eventually consistent for reads" | Strongly consistent since 2020-12-01 |
"Raise the bucket's request limit" | The axis is the prefix; there is no prefix limit |
"Add S3Guard for consistency" | Obsolete; EMRFS Consistent View likewise |
"Iceberg is a file format" | It is a table format over Parquet / ORC / Avro |
"Timestream for the metrics store" | Not on the in-scope list (checked Oct 2026): use OpenSearch or streams β S3 β Athena |
"Graph via repeated self-joins in RDS" | Neptune exists for exactly this |
"ElastiCache is the named use case for fast key/value" | Skill 2.1.3 names MemoryDB |
"Hive partitions and S3 prefixes are the same thing" | Pruning axis vs request-rate axis |
11. Cross-service consumption: Athena versus Redshift
Store selection does not end at storage: the exam asks which engine reads it. AWS's comparison guidance (accessed Oct 2026) is unambiguous: Athena = interactive ad-hoc ANSI SQL on S3 with no clusters; Redshift = the warehouse; EMR = full Spark/Hive.
Signal | Athena | Redshift |
|---|---|---|
Cluster | None | Provisioned nodes or Serverless RPUs |
Billing | $5.00 per TB scanned (10 MB minimum), or Capacity Reservations | Node hours / RPU hours whether or not anyone queries |
Best shape | One-off, exploratory, schema-on-read | Repeated, concurrent BI over curated tables |
Isolation / guardrails | Workgroups: staging location, engine version, encryption and a bytes-scanned cutoff per query | Workgroups, concurrency scaling, WLM |
Reach into other systems | Federated queries (billed per TB aggregated across sources, plus Lambda) | Federated queries into RDS/Aurora, Spectrum, data sharing |
Results | Staged in S3; managed query results (2025-06-03) make the location optional and cost nothing extra | Data API returns results for 24 hours |
Cost levers that show up in stems, in order of impact:
- Columnar format + codec: AWS's own 5 β $1.25 ladder.
- Partition pruning: only helps when the
WHEREuses the partition key;SELECT *throws column savings away. - Partition projection: Athena derives partitions from table properties instead of calling
GetPartitions; AWS reports query speedups such as 137 s β 10 s (~92%). - Workgroup bytes-scanned cutoff:
BytesScannedCutoffPerQueryhas a 10,000,000-byte minimum, capping worst-case spend per query. - Query result reuse: default 60 minutes, maximum 7 days, per workgroup.
11.1 Worked example E10: pruning math
Table : 2 TB of Parquet in S3, 730 daily partitions (~2.74 GB each)
Query A : SELECT ... WHERE dt = '2026-10-09'
pruned scan ~ 0.00268 TB x $5.00/TB ~= $0.013
Query B : SELECT ... (no partition predicate)
full scan 2 TB x $5.00/TB = $10.00
Same data, same engine, same result set shape:
the WHERE clause is the cost control. (illustrative on Athena's
$5.00/TB price, as of Oct 2026)Do not invent a crossover point. Third-party articles love to claim "Redshift beats Athena above X TB per month": AWS publishes no such number, so no exam answer may contain one. What AWS publishes is the metering shape: per-scan for Athena, always-on capacity for Redshift, and Spectrum's $5.00 per TB scanned for S3 data queried from Redshift (as of Oct 2026).
2026 Updates (as of October 2026)
What moved in store selection and formats between 2025 and October 2026: every line checked against a primary AWS source, and each one is examinable because the exam tests current behaviour:
- Guide v1.1 (2025-12-12) added the two skills this lesson is built on: 2.1.7 "Manage open table formats (for example Apache Iceberg)" and 2.1.8 "Describe vector index types (for example, HNSW, IVF)", eight skills added, none removed, DEA-C01 revisions page, 2025-12-12.
- In-scope stores changed at v1.1: Aurora and Amazon S3 Tables were added (along with Amazon Q, Bedrock, Kendra and Data Exchange), while Cloud9, CodeCommit and AWS SCT were removed: DEA-C01 in-scope services page, accessed Oct 2026.
- Redshift now writes Iceberg, not just reads it:
CREATE/INSERTwent GA 2025-11-17 over the Glue Data Catalog,UPDATE/DELETE/MERGEon Iceberg tables (including S3 Tables) arrived 2026-04-23, and Iceberg materialized views on 2026-10-05: AWS What's New, 2025-11-17 / 2026-04-23 / 2026-10-05. - Streams now land straight into table formats: Kinesis Data Streams streaming tables materialise a stream into Iceberg on S3 Tables (auto-Parquet, inline compaction) from 2026-08-28, with general-purpose S3 delivery from 2026-08-29, and Amazon MSK Express brokers did the same on 2026-07-30: AWS What's New.
- S3 Express One Zone got cheaper and wider: storage β31%, PUT β55%, GET β85% (2025-04-10), and Regions grew from 8 to 15 by 2026-09-17; S3 Tables gained the Variant type for Iceberg v3 (2026-07-28): AWS What's New.
- Athena needs no result bucket and no big reservation: managed query results (2025-06-03) are service-managed, encrypted and free, and Capacity Reservations now start at 4 DPU for 1 minute instead of 24 DPU for 60 minutes (2026-02-11): AWS What's New.
- AWS Glue 6.0 re-based the format toolchain (2026-08-21): Spark 4.1.1, Python 3.13, Scala 2.13.17, Iceberg 1.11.0 with format v3 (VARIANT, deletion vectors) and a 30% price reduction, while EMRFS and the AWS SDK for Java v1 were removed and Glue 0.9 / 1.0 / 2.0 reached end of life on 2026-04-01, so a
fs.s3.consistent.*orcom.amazonaws.services.*option is now a distractor, AWS What's New, 2026-08-21; Glue release notes and version support policy, accessed Oct 2026. - Lake Formation cross-account sharing v5 (2026-02-11): one AWS RAM share can now carry unlimited tables using wildcard grant patterns instead of one resource association per table, and cross-Region resource links compose with it, so "create an association for every table" is the stale answer, AWS What's New, 2026-02-11; Lake Formation docs, accessed Oct 2026.
- Kinesis Data Streams now has three capacity modes: Provisioned, On-demand Standard and On-demand Advantage (2025-11-04), which drops the per-stream hourly charge and cuts GB rates but bills an account-wide floor of 25 MB/s ingest + 25 MB/s retrieval; the maximum record size is 10 MiB: AWS What's New, 2025-11-04; Kinesis Data Streams developer guide, accessed Oct 2026.
- Stale-fact warnings: any option claiming Redshift can only read Iceberg is wrong since 2025-11-17, and any option requiring you to configure an S3 result location for Athena is wrong since 2025-06-03.
- π Did you know? The AWS Glue Schema Registry: the component that makes Avro-in-motion safe: is serverless and free, and validates exactly three formats: AVRO (1.11.4), JSON and PROTOBUF. Its Avro model is the one sentence worth memorising: the schema is JSON, the data is binary; which is why an Avro file is readable only with its schema, and why "the schema travels with the data" is the correct exam explanation for Avro's excellent evolution behaviour.
Real-World Case Studies
AWS publishes what these abstractions look like in production. Every figure below is customer- or AWS-claimed and unaudited, with the source named so you can check it: the examinable point is the pattern (which store, which format, which number moved), not the marketing.
Case A, Nasdaq: an S3 write path and a Redshift read path
Element | Detail |
|---|---|
Customer | Nasdaq, stock exchange (off a legacy on-premises warehouse since 2014) |
Challenge | Overnight batch of orders, quotes and trades must finish before market open, while analysts query history concurrently |
Services | Amazon S3 data lake (write path) + Amazon Redshift and Redshift Spectrum (read path) + S3 Glacier archive + S3 Object Lock |
Outcomes | 70 billion records/day (peak 113 billion, February 2020); 90% of the load finished 5 hours sooner; queries 32% faster; a 15 TB lake queried in place |
Exam domain | Domain 2 (store selection: lake vs warehouse, decoupled storage/compute) |
Source | aws.amazon.com/solutions/case-studies/nasdaq-case-study (accessed Oct 2026) |
"We were able to easily support the jump from 30 billion records to 70 billion records a day because of the flexibility and scalability of Amazon S3 and Amazon Redshift.": Robert Hunt, VP Software Engineering, Nasdaq (AWS case study, accessed Oct 2026)
Read Nasdaq as one system, two stores: S3 absorbs the write spike cheaply and durably, Redshift serves the concurrent reads, and Spectrum closes the gap so the 15 TB lake is never copied. The phrase AWS's page highlights is "zero contention between data loading and querying"; that is the decoupled-storage argument of Section 9, visible in a production deadline.
Case B, EMX: S3 plus Athena instead of a backend warehouse
Element | Detail |
|---|---|
Customer | EMX, programmatic-media / ad-tech company |
Challenge | A pipeline with heavy backend ETL and storage costs, ingesting over 2 TB of raw data per hour |
Services | Amazon S3 as the lake plus Amazon Athena for query |
Outcomes | 85% saved on data storage costs; queries at least four times cheaper than other backend ETL tools (customer-claimed, accessed Oct 2026) |
Exam domain | Domain 2 task 2.1 (store + format selection) feeding Domain 3 consumption |
Source | AWS Big Data Blog, "How EMX reduced data pipeline costs by 85% with Amazon Athena" (2021-02-02, accessed Oct 2026) |
EMX is the working version of Section 6: keep raw data in S3, convert to a columnar layout, and let Athena's per-terabyte metering replace an always-on backend. The examinable pattern is the shape, cheap object storage plus per-query SQL beats a cluster you pay for whether or not anyone queries, never the specific percentage.
Case C, EOS Group: DMS into S3 into Redshift, with PII masked in place
Element | Detail |
|---|---|
Customer | EOS Group, financial services (growing on-premises warehouse, 15% year-over-year data growth) |
Challenge | Capacity guesses at every upgrade, plus a compliance requirement to show masked PII to standard analysts |
Services | AWS MAP + AWS DMS landing the database into Amazon S3, then Amazon Redshift; Redshift dynamic data masking driven by the querying user's permissions |
Outcomes | 50% reduction in infrastructure costs, zero data loss, minimal downtime (AWS/customer-claimed, accessed Oct 2026) |
Exam domain | Domain 2 task 2.1 (store selection: warehouse migration) with Domain 4 column-level protection |
Source | aws.amazon.com/solutions/case-studies/eos-group-case-study (accessed Oct 2026) |
"By removing the need for on-premises infrastructure, EOS Group achieved a 50 percent reduction in infrastructure costs β¦": AWS EOS Group case study (accessed Oct 2026)
Read EOS as the migration sequence the exam keeps testing: DMS lands the database in S3, Redshift loads from S3, and masking happens inside the warehouse against the user's permissions: one table, two views of it, no second masked copy to keep in sync. Three traps hide here: DMS is not DataSync (it moves schemas and rows, not files), Macie cannot mask anything (it discovers sensitive data in Amazon S3), and the 50% is EOS's own outcome on their baseline, never a migration guarantee.
Case D, GE Aerospace: modernising a legacy operational data store
Element | Detail |
|---|---|
Customer | GE Aerospace, aerospace and supply chain |
Challenge | A large operational data store (ODS) feeding 150+ reports, some over 10,000 lines of code, under compliance and performance constraints |
Services | Amazon Redshift with AWS Solutions Architect and Redshift engineering support; PoC Nov: Dec 2022, then a 9-month migration from January to September 2023 |
Outcomes | Queries that ran 90 minutes now run in 7 minutes; about 70% better query performance; estimated savings of over $500,000 per year (customer estimate, accessed Oct 2026) |
Exam domain | Domain 2 task 2.1 (store selection) feeding Domain 3 cost and performance |
Source | aws.amazon.com/solutions/case-studies/ge-aerospace-case-study (accessed Oct 2026) |
"We were seeing queries that used to run for an hour and a half running in 7 minutes using Amazon Redshift.": Bejoy John, Senior Director of Data Analytics, GE Aerospace (AWS case study, accessed Oct 2026)
GE Aerospace is the right-sizing story behind RA3 and managed storage: compute and storage are separate, so the fix for an hour-long query is a better-shaped warehouse rather than a larger copy of the same design. Exam-safe framing: 70% and >$500,000/year are GE's estimate against GE's baseline: the transferable fact is the selection (a curated, BI-shaped workload belongs in Redshift), not the number.
Case | Store-selection pattern it demonstrates | Domain |
|---|---|---|
Nasdaq | S3 as the durable write path, Redshift as the concurrent read path, Spectrum over the lake | D2 Data Store Selection |
EMX | S3 + Athena + columnar conversion instead of an always-on backend | D2 β D3 Analyze and Visualize |
EOS Group | DMS β S3 β Redshift migration, with dynamic data masking of PII by user permissions | D2 Data Store Selection + D4 Security |
GE Aerospace | Legacy operational data store modernised onto a right-sized Redshift cluster | D2 β D3 Cost and Performance |
- π Did you know? The governance cases read like the same number twice: Integral Ad Science (IAS) used Lake Formation tag-based access controls to reduce hundreds of permission rules down to precisely two, while GoDaddy's hub-and-spoke data mesh now holds over 2,000 data products across multiple petabytes in hundreds of accounts (AWS Big Data Blog, 2021-09-23 and 2022-11-21, accessed Oct 2026). Neither figure generalises to your workload, but both stems collapse to one selection rule: when the requirement is centrally governed access to data you must not copy, the answer is Lake Formation over Amazon S3 with Athena or EMR on top, never a second database standing in for a permission model.
Practice Questions
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
A shopping-cart service must return an item by session ID in single-digit milliseconds for 40,000 concurrent users, with no joins. Which store does task 2.1 select?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
The BI team runs 30 concurrent dashboards that join eight tables across 8 TB and aggregate billions of rows. Which store is the correct answer?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
A query over 3 TB of text files touches 1 of 4 columns. According to AWS's own Athena pricing example, what is the cost after converting to a columnar format that supports predicate pushdown?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
A producer on Kinesis Data Streams must serialise events so that schema changes do not break downstream consumers. Which format and mechanism does the exam expect?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
A pipeline writes 8,000 objects per second under a single key and starts receiving HTTP 503 Slow Down responses. What is the correct fix?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
A data engineer argues that the ingestion job must write a verification pass because Amazon S3 reads are eventually consistent after a PUT. What is the correct response?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
Which compression mapping is correct as of October 2026?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
A team wants to land raw event data without validating it, then apply a schema when analysts query it. Which pair correctly describes this design?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
An auditor asks what a curated table contained at 12:00 UTC yesterday, and analysts complain they must add WHERE dt = ... predicates by hand. Which Iceberg capability answers both complaints?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
A team needs occasional SQL over 4 TB of Parquet already in S3, no cluster management, and a bill that tracks only what each query reads. Which combination is correct?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
A leaderboard needs Redis-compatible data structures, microsecond reads, and a primary that survives an Availability Zone failure without rebuilding from a source of truth. Task 2.1.3's wording points to which service?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
During an incident, engineers must both aggregate HTTP 5xx counts by service and full-text drill into a specific stack trace within seconds. Which store fits both halves of that pattern?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
A data engineer claims that Amazon Redshift can only READ Apache Iceberg tables and that every Iceberg INSERT, UPDATE and DELETE must be performed by Amazon Athena. What is the correct response as of October 2026?
How to answer
Multiple-choice question with 4 options. Select one option, then choose Check Answer.
A financial-services firm migrates its warehouse to Amazon Redshift and must show masked PII to standard analysts while privileged users see real values: without maintaining a second, masked copy of each table. Which capability does task 2.1 expect?
β οΈ Exam-day traps for this lesson:
- Pattern first, service second: key+latency β DynamoDB/MemoryDB Β· joins/BI β Redshift Β· SQL on the lake β Athena Β· text β OpenSearch Β· relationships β Neptune Β· OLTP β RDS/Aurora Β· cheap raw scale β S3.
- DynamoDB is not an analytics engine: 400 KB maximum item, 10 GB partition ceiling with LSIs, no JOINs, and a
Scanreads the whole table. - Compression β columnar: GZIP'd CSV is still fully scanned; format decides bytes touched, codec decides bytes stored.
- Codec defaults are a three-way trap: ZSTD β Iceberg, GZIP β Hive Parquet/text, ZLIB β ORC.
- S3 request rates are per partitioned prefix: 3,500 writes / 5,500 reads per second, no prefix limit; the fix for a 503 Slow Down is distributing prefixes, never "raising the bucket limit".
- S3 has been strongly consistent since 1 December 2020: options requiring S3Guard or EMRFS Consistent View are stale.
- Hive partitions β S3 prefixes: one is a pruning axis for
WHERE, the other is the request-rate axis; over-partitioning produces small files. - Iceberg is a table format, not a file format; it sits over Parquet/ORC/Avro, and hidden partitioning still needs a filter on the base column to prune.
- ElastiCache and Timestream are on neither list (checked Oct 2026): the in-scope fast key-value pick is MemoryDB, the time-series log pick is OpenSearch or streams β S3 β Athena.
- Graph β Neptune, never a self-join workaround; vector β Aurora PostgreSQL with HNSW or IVF.
- Never invent an Athena/Redshift cost crossover: AWS publishes metering shapes, not a TB threshold.
- Case-study numbers are unaudited customer claims: Nasdaq's 70 billion records/day and EMX's 85% are their outcomes, never guarantees.
Comparative Verdict: how this topic compares on exam day
- Versus another cloud: DEA-C01 tests AWS services only: no item asks you to compare DynamoDB or Redshift with a competitor's offering. Answer with an AWS-documented behaviour (400 KB items, 3,500/5,500 per prefix, $5.00/TB scanned, Iceberg snapshots); an option resting on an unverified third-party benchmark is out of scope by construction.
- Versus self-managed / on-premises: running your own Hadoop, cache or search cluster means patching, capacity guessing and idle hardware. The exam's preference is managed and priced for consumption, S3 for raw scale, DynamoDB for key access, Athena for pay-per-query, while still respecting the counter-case: if the stated requirement is a self-managed engine with specific hardware, that requirement wins. Never claim managed is always right; claim it is right for the stated pattern.
- Versus another AWS service: Redshift when the query is repeated, concurrent BI over curated tables; Athena when it is ad-hoc SQL over files in S3; Spectrum when the data must stay in S3 but be queried with warehouse SQL; OpenSearch for relevance and log drill-down; Glue + Lake Formation for the catalog and governance above them. Wrong answers almost always size the engine to habit rather than to the query shape.
- Versus a manual, human process: partition registration by hand, consistency-verification passes, and manual small-file cleanup all lose to Iceberg snapshots with hidden partitioning, strongly consistent S3, and automated compaction: choose the option with the least unmanaged manual effort, but do not confuse "managed" with "free": Athena still bills bytes scanned, and S3 storage classes still bill for what you keep.
Key Takeaways:
- Task 2.1 is a mapping test: pattern in, one in-scope service out: 2.1.1 cost/performance, 2.1.2 access patterns, 2.1.3 use cases (Aurora HNSW, MemoryDB key/value), 2.1.7 Iceberg, 2.1.8 HNSW/IVF.
- The teaching rule: key+latency β DynamoDB/MemoryDB Β· joins/BI β Redshift Β· SQL-on-lake β Athena Β· text β OpenSearch Β· relationships β Neptune Β· OLTP β RDS/Aurora Β· cheap raw scale β S3, and streams (Kinesis, MSK) feed stores, they are not stores.
- DynamoDB ceilings: 400 KB maximum item, 10 GB partition with LSIs, 3,000 RCU + 1,000 WCU/s design capacity, 1 RCU = strong read/s of β€4 KB, 1 WCU = write/s of β€1 KB: 500 reads of 8 KB = 1,000 RCU, 200 writes of 1.6 KB = 400 WCU.
- RDS is the documented default for OLTP; Aurora adds up to 6Γ throughput, 256 TiB, 15 read replicas, and vector search with HNSW and IVF on PostgreSQL.
- Format matrix: CSV/JSON = row text with schema-on-read and no pushdown; Avro = row binary, schema with the data, for streaming; Parquet/ORC = columnar with min/max predicate pushdown: Parquet for broad tool support, ORC for Hive with smaller files and indexes.
- Athena's own ladder (as of Oct 2026): 3 TB text $15.00 β GZIP 3:1 $5.00 β Parquet 1 of 4 columns $1.25; splits target ~128 MB, Parquet blocks 128 MB, ORC stripes 64 MB (under 8 MB read whole).
- Codec triple: ZSTD = Iceberg (levels 1 to 22, Athena default 3), GZIP = Hive Parquet/text (not splittable when compressed), ZLIB = ORC; Snappy trades ratio for decompression speed.
- S3 as the lake core: β₯ 3,500 writes and 5,500 reads per partitioned prefix, no prefix limit (10 prefixes β 55,000 reads/s), 503 Slow Down above ~5,000 requests/s to a few objects β distribute prefixes; strongly consistent since 1 December 2020; Intelligent-Tiering moves at 30 / 90 / 180 days (β40% / β68% / β95%).
- Partitions vs prefixes: Hive-style partitions give query pruning, written prefixes give request rate: different axes, and over-partitioning means small-file pain.
- Lakehouse at exam depth: Iceberg adds snapshots, hidden partitioning, time travel (
FOR TIMESTAMP AS OF), Glue as default catalog; Hudi and Iceberg support copy-on-write and merge-on-read, Delta is copy-on-write only with Parquet-only data files, and AWS says no format is one size fits all. - Lake vs warehouse: schema-on-read (Athena + Glue over S3, flexible, drift at query time) versus schema-on-write (Redshift, enforced, tuned for BI).
- Consumption split: Athena = no cluster, $5.00/TB scanned, 10 MB minimum, workgroups with bytes cutoffs, result reuse up to 7 days; Redshift = node/RPU-hours for concurrent BI; Spectrum = $5.00/TB from Redshift; OpenSearch for relevance and logs, and AWS publishes no cost crossover between Athena and Redshift.