Database services: choosing the right one
What each of the nine SAA-C03 database services does, how to choose between relational, key-value, document, wide-column, graph, in-memory, and data warehouse databases, and how to go from the clues in a question to the right service.
5 min read · Last reviewed · SAA-C03
Sign in to bookmark tutorials and track what you have read.
On this page
The services at a glance
The Database category of the exam covers nine managed services. Each is built for a different data model and access pattern, so most database questions are really asking: what shape is the data, and how is it read and written? Each service name links to its own tutorial.
| Service | Data model | What it is for |
|---|---|---|
| Amazon RDS | Relational (SQL (Structured Query Language)The standard language for querying and changing data in relational databases. Analytics services such as Amazon Athena and Amazon Redshift also use SQL.Glossary entry) | Managed MySQL, PostgreSQL, MariaDB, Oracle, SQL Server, and Db2 |
| Amazon Aurora | Relational (SQL) | AWS's MySQL- and PostgreSQL-compatible engine, with shared storage across three AZ (Availability Zone)An isolated location within an AWS Region, made up of one or more data centers with their own power, cooling, and networking. The AZs in a Region are linked by fast, low-latency connections, so spreading resources across them protects against the failure of one site.Glossary entry, up to 15 replicas, and Global Database |
| Amazon Aurora Serverless | Relational (SQL) | Aurora capacity that scales automatically, down to zero when idle |
| Amazon DynamoDB | Key-value and document | Serverless NoSQLDatabases that store data in models other than relational tables, such as key-value, document, wide-column, or graph, usually to scale out easily or to handle data whose shape varies. Amazon DynamoDB is a NoSQL database.Glossary entry with single-digit millisecond performance at any scale |
| Amazon ElastiCache | In-memory | Caches and in-memory data stores (Valkey, Memcached, Redis OSS) for microsecond reads |
| Amazon DocumentDB | Document (JSON (JavaScript Object Notation)A text format for structured data made of name-and-value pairs and lists, such as {"bucket": "logs"}. IAM policies, most AWS API responses, and many CloudFormation templates are written in JSON.Glossary entry) | MongoDB-compatible document database |
| Amazon Keyspaces | Wide-column | Apache Cassandra-compatible, serverless |
| Amazon Neptune | Graph | Highly connected data: social networks, recommendations, fraud detection, knowledge graphs |
| Amazon Redshift | Columnar storageStoring data column by column instead of row by row, so that analytical queries read only the columns they need, and similar values compress well. Amazon Redshift and the Parquet and ORC file formats store data this way.Glossary entry Data warehouseA database designed for analytics, holding cleaned, structured data from many sources, so that reports and queries across years of history run fast. Amazon Redshift is the AWS data warehouse.Glossary entry | Analytics (OLAP (Online analytical processing)Analyzing large amounts of data with complex queries that summarize many rows, such as sales by country and month. Data warehouses such as Amazon Redshift are built for OLAP.Glossary entry) over large volumes of data; covered with the analytics services |
Three choices to make
- What shape is the data? Tables with relationships, joins, and transactions point to RDS or Aurora. Items fetched by a key point to DynamoDB. JSON documents with a MongoDB API (Application programming interface)A defined way for one program to ask another for data or actions, such as a set of HTTPS requests and responses. Every AWS service is controlled through its API, which the console, the CLI, and the SDKs call for you.Glossary entry point to DocumentDB; Cassandra workloads point to Keyspaces; relationships that you traverse ("friends of friends") point to Neptune.
- Transactions or analytics? Day-to-day reads and writes (OLTP (Online transaction processing)Handling many small, fast transactions that each read or write a few rows, such as placing orders or updating an account. Relational databases such as Amazon RDS and Amazon Aurora are built for OLTP.Glossary entry) belong in an operational database. Complex queries over large historical data (OLAP) belong in Redshift, or in Athena over S3.
- How much do you want to manage? Aurora Serverless and DynamoDB remove capacity planning. RDS and provisioned Aurora need an instance size. For full control of the OS and database software, run the database on EC2, accepting that you manage it all.
Add ElastiCache in front of any of them when the same data is read again and again, or for session state.
Reverse mindmap: from the question to the service
- Relational, SQL, joins, transactions
- Standard engine such as Oracle or SQL Server leads to Amazon RDS
- MySQL or PostgreSQL with the best availability leads to Amazon Aurora
- Cross-Region reads and DR in seconds leads to Aurora Global Database
- Unpredictable or idle load, no sizing leads to Aurora Serverless
- Too many connections from Lambda leads to RDS Proxy
- NoSQL
- Key-value, any scale, single-digit milliseconds leads to DynamoDB
- MongoDB-compatible JSON documents leads to DocumentDB
- Apache Cassandra workloads leads to Keyspaces
- Relationships and graph queries leads to Neptune
- Speed and analytics
- Microsecond reads, cache, or sessions leads to ElastiCache
- Data warehouse and BI over petabytes leads to Amazon Redshift
- Vector embeddings
- Next to SQL data leads to Aurora or RDS for PostgreSQL with pgvector
- Graph relationships and vectors (GraphRAG) leads to Neptune Analytics
- Billions of vectors at the lowest cost leads to S3 Vectors
Commonly confused pairs
| If the choice is between | Choose the first when | Choose the second when |
|---|---|---|
| RDS or Aurora | You need Oracle, SQL Server, Db2, or MariaDB, or the simplest option | You run MySQL or PostgreSQL and need faster FailoverSwitching automatically to a standby resource when the primary one fails, such as a standby database in Amazon RDS or a backup site chosen by Route 53 failover routing.Glossary entry, more replicas, or Global Database |
| Aurora or Aurora Serverless | The load is steady and predictable | The load is spiky, unpredictable, or often idle |
| Multi-AZRunning standby or extra copies of a resource in other Availability Zones so that it survives the loss of one. An Amazon RDS Multi-AZ deployment keeps one or two standby copies and fails over to one automatically.Glossary entry or Read replicaA read-only copy of a database that is updated asynchronously from the primary. It takes read traffic off the primary, can be in another Region, and can be promoted to a standalone database.Glossary entry | You need HA (High availability)The ability of a system to keep serving users when parts of it fail, usually by running redundant copies across Availability Zones and failing over automatically. It is often stated as a percentage of uptime, such as 99.99%.Glossary entry with automatic failover | You need to scale reads, or a copy in another AWS RegionA separate geographic area where AWS runs its services, such as us-east-1 in Northern Virginia, made up of several Availability Zones. Most resources live in one Region; you choose Regions for latency, data residency, and the services you need.Glossary entry |
| RDS or DynamoDB | The data is relational and needs joins and complex queries | Access is by key, at massive scale, with no servers to manage |
| DynamoDB or DocumentDB | You design around keys and want serverless scale | The application already uses MongoDB APIs and drivers |
| ElastiCache or read replicas | Repeated reads of the same data, with microsecond LatencyThe time between sending a request and receiving the response, usually measured in milliseconds. Distance and processing add to it; caching and serving users from nearby locations reduce it.Glossary entry | Read queries that need the full database and SQL |
| Aurora or Redshift | Transactions and operational reads and writes (OLTP) | Analytics over large data sets (OLAP) |
Vector search: storing embeddings
AI applications such as semantic search, retrieval augmented generation (RAG), and recommendations store vector embeddings (numbers that capture meaning) and look for the nearest ones. Several AWS services store and search vectors, so the choice usually follows the data you already have:
| If you need | Choose |
|---|---|
| Vectors next to relational data, queried with SQL | Aurora PostgreSQL or RDS for PostgreSQL with the pgvector extension |
| Vectors next to items you already keep in DynamoDB | DynamoDB vector indexes |
| Vector search in a MongoDB-compatible document database | DocumentDB (5.0 and later, instance-based clusters) |
| The lowest latency, in memory | MemoryDB, or ElastiCache for Valkey for semantic caching |
| Vectors combined with graph relationships (GraphRAG) | Neptune Analytics |
| Full-text and vector search together, at high query rates | Amazon OpenSearch Service |
| Billions of vectors at the lowest cost, queried now and then | Amazon S3 Vectors |
Amazon Bedrock Knowledge Bases can manage the whole RAG pipeline for you, writing embeddings to a vector store such as Aurora PostgreSQL or S3 Vectors.
Key takeaways
- Match the service to the data model: relational (RDS, Aurora), key-value (DynamoDB), document (DocumentDB), wide-column (Keyspaces), graph (Neptune), in-memory (ElastiCache), warehouse (Redshift).
- "MySQL or PostgreSQL" with high availability or global reads points to Aurora; Oracle or SQL Server points to RDS.
- "Unpredictable" or "idle" relational load points to Aurora Serverless; "any scale, key-value" points to DynamoDB.
- "Compatible with MongoDB" means DocumentDB; "Cassandra" means Keyspaces; "graph" means Neptune.
- Caching repeated reads points to ElastiCache; analytics points to Redshift.
- For vector embeddings, stay with the data you have: pgvector for PostgreSQL, vector indexes for DynamoDB, vector search in DocumentDB; OpenSearch for hybrid search; S3 Vectors for the cheapest storage at scale.
Sources
- AWS Certification: SAA-C03 in-scope AWS services
- Amazon RDS User Guide: What is Amazon Relational Database Service?
- Amazon Aurora User Guide: What is Amazon Aurora?
- Amazon Aurora User Guide: Using Aurora serverless
- Amazon DynamoDB Developer Guide: What is Amazon DynamoDB?
- Amazon ElastiCache User Guide: What is Amazon ElastiCache?
- Amazon DocumentDB Developer Guide: What is Amazon DocumentDB?
- Amazon Keyspaces Developer Guide: What is Amazon Keyspaces?
- Amazon Neptune User Guide: What is Amazon Neptune?
- Amazon Redshift Management Guide: What is Amazon Redshift?
- Prescriptive Guidance: Vector database options