Last modified: June 06, 2026
This article is written in: πΊπΈ
Choosing the right AWS database can significantly influence your projectβs reliability, performance, cost, scalability, and operational complexity. In AWS exam questions, database scenarios usually describe a workload and expect you to match it to the best purpose-built AWS service.
A practical way to start is to ask:
A useful rule of thumb:
Choose the AWS database based on workload first. Choose the product name second.
The most important exam distinction is:
OLTP = application database
OLAP = analytics database
OLTP means user-facing applications doing small reads, writes, updates, and transactions.
OLAP means analytics, dashboards, reports, aggregations, and large scans over big datasets.
AWS officially groups its database options by workload, including relational databases like Amazon RDS and Aurora, key-value databases like DynamoDB, in-memory databases like ElastiCache and MemoryDB, graph databases like Neptune, time-series databases like Timestream, and data warehouse services like Redshift. (AWS Documentation)
Amazon RDS is AWSβs managed relational database service.
It supports common relational engines such as PostgreSQL, MySQL, MariaDB, Oracle, SQL Server, and Db2. (AWS Documentation)
It is the safest default choice when the question describes a normal relational application.
Best for: traditional applications, structured data, SQL queries, transactions, existing database migrations, ERP, CRM, e-commerce, and line-of-business systems.
| Best for | AWS service | Key traits |
| Standard relational apps, orders, users, inventory, ERP, CRM, CMS | Amazon RDS | Managed relational database, SQL, joins, transactions, backups, read replicas, Multi-AZ |
Example:
+----+----------+----------+
| id | customer | balance |
+----+----------+----------+
| 1 | Omar | 1250.00 |
| 2 | Layla | 93.70 |
+----+----------+----------+
Use Amazon RDS when the question says:
Avoid RDS when the question requires:
Exam rule:
Normal relational database on AWS = Amazon RDS.
Amazon Aurora is AWSβs cloud-optimized relational database compatible with MySQL and PostgreSQL.
It is usually chosen when the question asks for a relational database like MySQL/PostgreSQL but emphasizes higher performance, high availability, cloud-native scaling, or global database features. AWS describes Aurora as offering high performance and availability at global scale with MySQL and PostgreSQL compatibility. (AWS Documentation)
Best for: high-performance relational applications, cloud-native MySQL/PostgreSQL workloads, SaaS platforms, e-commerce, financial applications, and systems needing better availability than standard self-managed relational databases.
| Best for | AWS service | Key traits |
| High-performance MySQL/PostgreSQL-compatible workloads | Amazon Aurora | MySQL/PostgreSQL compatibility, managed, high availability, read scaling, Aurora Global Database |
Use Aurora when the question says:
Avoid Aurora when:
Exam rule:
MySQL/PostgreSQL-compatible + high performance/high availability = Aurora.
Amazon DynamoDB is AWSβs fully managed serverless NoSQL key-value and document database.
It is designed for high-scale applications needing very low latency and massive throughput.
Best for: serverless applications, key-value access, shopping carts, user profiles, gaming, IoT metadata, mobile apps, high-scale web apps, event-driven systems, and workloads with predictable access patterns.
| Best for | AWS service | Key traits |
| Massive scale key-value/document workloads | Amazon DynamoDB | Serverless NoSQL, key-value/document, single-digit millisecond latency, automatic scaling, global tables |
Example:
{
"PK": "USER#123",
"SK": "PROFILE",
"name": "Omar",
"city": "Berlin",
"plan": "Pro"
}
Use DynamoDB when the question says:
Avoid DynamoDB when:
Exam rule:
Serverless NoSQL + key-value/document + massive scale = DynamoDB.
Amazon Redshift is AWSβs managed data warehouse for analytics.
It is not a normal application database. It is for analyzing large datasets using SQL. AWS describes Redshift as an OLAP system, unlike RDS databases, which are OLTP systems. (Trailhead)
Best for: data warehousing, BI, dashboards, reporting, large SQL analytics, historical analysis, and analytical queries over large datasets.
| Best for | AWS service | Key traits |
| Analytics and reporting over large datasets | Amazon Redshift | Data warehouse, OLAP, SQL analytics, columnar storage, MPP, BI integration |
Example:
SELECT
country,
COUNT(*) AS purchases,
SUM(amount) AS revenue
FROM sales
GROUP BY country;
Use Redshift when the question says:
Avoid Redshift when:
Exam rule:
Analytics + data warehouse + SQL = Redshift.
Amazon ElastiCache is AWSβs managed in-memory caching service for Redis/Valkey and Memcached.
It is usually not the primary database. It is a performance layer in front of another database.
Best for: caching, sessions, leaderboards, rate limiting, hot reads, temporary data, and reducing load on a primary database.
| Best for | AWS service | Key traits |
| In-memory caching and very low-latency access | Amazon ElastiCache | Redis/Valkey or Memcached-compatible, low latency, TTL, cache layer |
Example:
Client β ElastiCache β Primary database
β
βββ TTL: 60 seconds
Use ElastiCache when the question says:
Avoid ElastiCache when:
Exam rule:
Cache / Redis / Memcached = ElastiCache.
Amazon MemoryDB is a Redis-compatible, durable, in-memory database service.
This is different from ElastiCache. ElastiCache is usually a cache. MemoryDB can be used as a primary database for workloads that need Redis-compatible APIs with durability.
Best for: durable Redis-compatible applications, ultra-low-latency primary database use cases, event processing, gaming, financial workloads, and microservices needing in-memory speed with persistence.
| Best for | AWS service | Key traits |
| Durable Redis-compatible primary database | Amazon MemoryDB | Redis-compatible, in-memory speed, durable storage, primary database use case |
Use MemoryDB when the question says:
Avoid MemoryDB when:
Exam rule:
Redis-compatible durable primary database = MemoryDB.
Cache = ElastiCache. Durable Redis primary DB = MemoryDB.
Amazon DocumentDB is AWSβs managed document database with MongoDB compatibility.
It is used when the question describes MongoDB-style JSON document workloads.
Best for: JSON documents, content management, catalogs, user profiles, MongoDB-compatible applications, semi-structured data.
| Best for | AWS service | Key traits |
| MongoDB-compatible document workloads | Amazon DocumentDB | Document database, JSON-like data, MongoDB compatibility, managed |
Example:
{
"product_id": "P100",
"name": "Laptop",
"attributes": {
"ram": "16GB",
"storage": "512GB"
}
}
Use DocumentDB when the question says:
Avoid DocumentDB when:
Exam rule:
MongoDB-compatible document database = DocumentDB.
Amazon Neptune is AWSβs managed graph database.
It is chosen when relationships between entities are the main thing being queried.
Best for: social networks, fraud detection, recommendations, knowledge graphs, identity graphs, network dependencies, relationship traversal.
| Best for | AWS service | Key traits |
| Highly connected relationship data | Amazon Neptune | Graph database, nodes and edges, relationship traversal, Gremlin/SPARQL/openCypher support |
Example:
(Omar)ββknowsββ(Layla)
β β
bought works_at
β β
βΌ βΌ
(Product) (Company)
Use Neptune when the question says:
Avoid Neptune when:
Exam rule:
Graph relationships / nodes and edges = Neptune.
Amazon Timestream is AWSβs time-series database.
It is optimized for data points indexed by time.
Best for: IoT telemetry, DevOps metrics, application monitoring, sensor readings, industrial data, time-window queries.
| Best for | AWS service | Key traits |
| Time-series data and time-window analysis | Amazon Timestream | Time-series database, timestamp indexing, retention, rollups, time-based queries |
Example:
device_id: sensor-123
time: 2026-05-03T10:00:00Z
temperature: 22.4
humidity: 41
Use Timestream when the question says:
Avoid Timestream when:
Exam rule:
Time-series metrics / IoT sensor data = Timestream.
Amazon Keyspaces is AWSβs managed Apache Cassandra-compatible database service.
It is chosen when the question specifically mentions Cassandra compatibility or Cassandra workloads.
Best for: Cassandra-compatible applications, wide-column workloads, high-scale distributed NoSQL systems.
| Best for | AWS service | Key traits |
| Cassandra-compatible wide-column workloads | Amazon Keyspaces | Managed Cassandra-compatible database, wide-column model, scalable NoSQL |
Use Keyspaces when the question says:
Avoid Keyspaces when:
Exam rule:
Cassandra-compatible = Amazon Keyspaces.
Amazon QLDB is AWSβs ledger database.
It is designed for immutable, cryptographically verifiable transaction history.
Best for: systems needing an immutable audit trail, financial ledgers, supply chain history, insurance claims, registration systems.
| Best for | AWS service | Key traits |
| Immutable verifiable ledger | Amazon QLDB | Append-only journal, cryptographic verification, audit history |
Use QLDB when the question says:
Avoid QLDB when:
Exam rule:
Immutable verifiable ledger = QLDB.
Amazon S3 is not a database, but it appears often in database-style exam questions.
It is object storage for files, blobs, backups, logs, data lakes, images, videos, and static assets.
Best for: unstructured data, images, videos, backups, exports, raw logs, data lake storage, static files.
| Best for | AWS service | Key traits |
| Files, images, videos, backups, blobs, raw data lake objects | Amazon S3 | Object storage, highly durable, scalable, cost-effective |
Example:
s3://company-data-lake/raw/events/2026/05/03/events.json
s3://app-uploads/images/profile-picture.png
s3://database-backups/prod-backup.sql
Use S3 when the question says:
Avoid S3 when:
Exam rule:
Files / blobs / backups / data lake = S3.
ββββββββββββββββββββββββββββββ
β What is the workload type? β
ββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββ΄βββββββββββββββββββββ
βΌ βΌ
Application database Analytics
OLTP OLAP
β β
βΌ βΌ
RDS / Aurora / DynamoDB / DocumentDB / Redshift
Neptune / Timestream / Keyspaces
Use this rule:
| Workload | Pick |
| Application reads/writes | RDS, Aurora, DynamoDB, DocumentDB, Neptune, Timestream, Keyspaces |
| Analytics, reports, dashboards | Redshift |
| Files and raw data lake objects | S3 |
| Cache | ElastiCache |
Exam rule:
If users are using the app, think OLTP. If analysts are querying data, think Redshift.
βββββββββββββββββββ
β Structured Data β
βββββββββββββββββββ
β
βββββββββββββββββββ΄ββββββββββββββββββ
βΌ βΌ
OLTP / Transactions Analytics / OLAP
β β
ββββββββ΄βββββββ βΌ
βΌ βΌ Redshift
RDS Aurora
Recommended choices:
| Need | AWS service |
| Standard relational application | Amazon RDS |
| Managed MySQL | Amazon RDS or Aurora MySQL |
| Managed PostgreSQL | Amazon RDS or Aurora PostgreSQL |
| Managed Oracle | Amazon RDS |
| Managed SQL Server | Amazon RDS |
| Managed MariaDB | Amazon RDS |
| Managed Db2 | Amazon RDS |
| High-performance MySQL/PostgreSQL-compatible database | Amazon Aurora |
| Analytics and large SQL scans | Amazon Redshift |
Rule of thumb:
Start with RDS for normal relational apps. Use Aurora when the question emphasizes high performance, high availability, or cloud-native MySQL/PostgreSQL. Use Redshift for analytics.
ββββββββββββββββββββββββ
β Semi-Structured Data β
ββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββΌββββββββββββββββββββββββββ
βΌ βΌ βΌ
Key-value / document? MongoDB-compatible? Cache?
Massive serverless? β Redis?
β β β
βΌ βΌ βΌ
DynamoDB DocumentDB ElastiCache
Recommended choices:
| Need | AWS service |
| Serverless NoSQL key-value/document | DynamoDB |
| Massive scale with low latency | DynamoDB |
| MongoDB-compatible document database | DocumentDB |
| Redis/Memcached cache | ElastiCache |
| Durable Redis-compatible primary database | MemoryDB |
| Cassandra-compatible wide-column database | Keyspaces |
Rule of thumb:
DynamoDB is for AWS-native serverless NoSQL. DocumentDB is for MongoDB compatibility. ElastiCache is for cache. MemoryDB is for durable Redis-compatible primary storage.
ββββββββββββββββββββββββ
β Specialized Workload β
ββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββΌββββββββββββββββββββββββββ
βΌ βΌ βΌ
Graph relationships? Time-series? Immutable ledger?
β β β
βΌ βΌ βΌ
Neptune Timestream QLDB
Recommended choices:
| Need | AWS service |
| Graph traversal, nodes and edges | Neptune |
| Time-series metrics and IoT data | Timestream |
| Immutable verifiable ledger | QLDB |
Rule of thumb:
Graph = Neptune. Time-series = Timestream. Ledger = QLDB.
βββββββββββββββββββββββ
β Unstructured Data β
βββββββββββββββββββββββ
β
βββββββββββββββββββ΄ββββββββββββββββββ
βΌ βΌ
Files / blobs Query analytics?
β β
βΌ βΌ
S3 Athena / Redshift Spectrum
Recommended choices:
| Need | AWS service |
| Store images, videos, backups, logs, files | Amazon S3 |
| Store raw data lake files | Amazon S3 |
| Query data directly in S3 with SQL | Amazon Athena |
| Analyze S3 data with warehouse integration | Redshift Spectrum |
Rule of thumb:
S3 stores raw objects. Redshift analyzes warehouse data. Athena queries files in S3 directly.
Choose Redshift when the question mentions:
Huge data + SQL analytics warehouse = Redshift
Example question:
A company wants to run business intelligence reports over terabytes of sales data.
Answer:
Amazon Redshift
Choose RDS when the question mentions:
Normal SQL app = RDS
Example question:
A company wants to migrate an existing Oracle database to a managed AWS service.
Answer:
Amazon RDS for Oracle
Choose Aurora when the question mentions:
MySQL/PostgreSQL + high performance = Aurora
Example question:
A company needs a highly available PostgreSQL-compatible database with better performance than standard PostgreSQL.
Answer:
Amazon Aurora PostgreSQL
Choose DynamoDB when the question mentions:
Serverless NoSQL at massive scale = DynamoDB
Example question:
A gaming application needs single-digit millisecond access to player state at massive scale.
Answer:
Amazon DynamoDB
Choose DocumentDB when the question mentions:
MongoDB-compatible = DocumentDB
Example question:
A company wants to migrate a MongoDB-compatible workload to a managed AWS service.
Answer:
Amazon DocumentDB
Choose ElastiCache when the question mentions:
Redis / Memcached cache = ElastiCache
Example question:
A web app needs to cache frequent database query results using Redis.
Answer:
Amazon ElastiCache
Choose MemoryDB when the question mentions:
Durable Redis-compatible database = MemoryDB
Example question:
A microservice needs Redis-compatible low-latency access but cannot lose data because the database is the source of truth.
Answer:
Amazon MemoryDB
Choose Neptune when the question mentions:
Graph = Neptune
Example question:
A fraud detection system needs to identify relationships between accounts, devices, transactions, and identities.
Answer:
Amazon Neptune
Choose Timestream when the question mentions:
Time-series metrics = Timestream
Example question:
An IoT system needs to store and query sensor readings over time.
Answer:
Amazon Timestream
Choose Keyspaces when the question mentions:
Cassandra-compatible = Keyspaces
Example question:
A company wants to migrate an Apache Cassandra workload to a managed AWS service.
Answer:
Amazon Keyspaces
Choose QLDB when the question mentions:
Immutable verifiable ledger = QLDB
Example question:
A company needs a centralized ledger with a cryptographically verifiable history of every transaction.
Answer:
Amazon QLDB
Choose S3 when the question mentions:
Files and blobs = S3
Example question:
A company needs to store user-uploaded images and videos durably.
Answer:
Amazon S3
| Question says | Do not pick | Pick |
| Analyze huge data with SQL | DynamoDB | Redshift |
| Store files, images, backups | RDS | S3 |
| Standard MySQL/PostgreSQL app | DynamoDB | RDS |
| High-performance MySQL/PostgreSQL | Standard RDS by default | Aurora |
| Serverless key-value at massive scale | RDS | DynamoDB |
| MongoDB-compatible workload | DynamoDB | DocumentDB |
| Redis cache | DynamoDB | ElastiCache |
| Redis-compatible durable primary DB | ElastiCache by default | MemoryDB |
| Graph relationship traversal | RDS | Neptune |
| Time-series sensor data | Redshift by default | Timestream |
| Cassandra-compatible workload | DynamoDB | Keyspaces |
| Immutable audit ledger | RDS audit table | QLDB |
| Service | Database model | Best for | Avoid when |
| Amazon RDS | Relational SQL | Standard MySQL, PostgreSQL, MariaDB, Oracle, SQL Server, Db2 apps | Need serverless NoSQL, graph, analytics warehouse |
| Amazon Aurora | Relational SQL | High-performance MySQL/PostgreSQL-compatible workloads | Need Oracle/SQL Server or simple cheapest relational option |
| DynamoDB | Key-value/document NoSQL | Serverless NoSQL, massive scale, low latency | Need joins, ad hoc SQL, relational constraints |
| Redshift | Data warehouse | Analytics, BI, reporting, large SQL scans | Need OLTP app database |
| ElastiCache | In-memory cache | Redis/Valkey/Memcached caching, sessions, hot reads | Need durable source of truth |
| MemoryDB | In-memory durable database | Redis-compatible durable primary DB | Need only temporary cache |
| DocumentDB | Document database | MongoDB-compatible JSON document workloads | Need key-value scale or analytics |
| Neptune | Graph database | Social graphs, fraud, recommendations, relationship traversal | Need normal SQL or key-value lookup |
| Timestream | Time-series database | IoT telemetry, metrics, monitoring, time-window queries | Need general-purpose app database |
| Keyspaces | Wide-column NoSQL | Cassandra-compatible workloads | Need MongoDB, Redis, or relational SQL |
| QLDB | Ledger database | Immutable verifiable audit history | Need decentralized blockchain or normal OLTP |
| S3 | Object storage | Files, images, videos, backups, data lakes | Need transactions or row updates |
Before choosing an AWS database, answer these questions:
Data shape:
Query pattern:
Scale:
Compatibility:
Cost and complexity: