AWS Managed Databases: How to Choose RDS, Aurora, DynamoDB, DocumentDB, and More
AWS does not have one “managed database.” It has a portfolio of relational and purpose-built database services, and choosing the wrong data model can create more problems than managed operations solve.
The practical decision starts with the workload: relational transactions, key-value access, documents, caching, graphs, wide-column data, or time series. Then compare availability, scaling, consistency, compatibility, operational control, and cost for that specific workload.
AWS' current database decision guide covers services including Amazon RDS, Aurora, Aurora DSQL, DynamoDB, DocumentDB, ElastiCache, MemoryDB, Neptune, Keyspaces, and Timestream.
What “managed” actually removes
A managed database typically reduces infrastructure work such as:
- server provisioning
- database software installation
- routine patching and maintenance workflows
- automated backup facilities
- monitoring integrations
- replication/failover features
- capacity or serverless scaling options, depending on service
It does not remove application-level responsibilities.
You still own:
- schema/data-model design
- indexes and query patterns
- transaction boundaries
- connection behavior
- security/IAM/network policy
- backup retention and restore testing
- scaling decisions
- cost control
- migration strategy
Managed does not mean “no database engineering.”
Amazon RDS: familiar relational engines with managed operations
Amazon RDS is the straightforward choice when the application needs a conventional relational database and you want AWS to manage much of the infrastructure lifecycle.
Current RDS options include engines such as:
- PostgreSQL
- MySQL
- MariaDB
- Oracle
- Microsoft SQL Server
- Db2
RDS is a strong fit when your application depends on:
- SQL
- joins
- transactions
- foreign keys and relational constraints
- mature relational tooling
- compatibility with an existing database engine
Choose RDS when the relational model already fits and there is no strong reason to adopt a more specialized database.
Amazon Aurora: relational, but AWS-designed storage and availability
Amazon Aurora provides MySQL-compatible and PostgreSQL-compatible relational database options with an AWS-designed distributed storage architecture.
Aurora is worth evaluating when you want relational semantics but need features or scaling characteristics specifically provided by Aurora, such as its cluster architecture and serverless deployment options.
Do not choose Aurora purely because it sounds like “better RDS.” Compare:
- engine compatibility requirements
- extensions/features your application uses
- failover architecture
- read scaling
- storage behavior
- migration complexity
- expected cost
Compatibility is substantial, but it is still wise to test real queries, extensions, drivers, and operational workflows before migration.
Aurora DSQL: distributed SQL is a different architecture
AWS' current database decision guide also includes Amazon Aurora DSQL, a serverless distributed SQL database.
A distributed SQL system can be attractive when the workload needs relational SQL with distributed availability/scaling properties, but the trade-offs differ from a conventional single-primary relational database.
Evaluate:
- transaction semantics
- supported SQL/features
- latency requirements
- geographic topology
- application compatibility
- migration effort
Do not assume a distributed database is automatically the right upgrade path from RDS.
DynamoDB: key-value/document access at very large scale
Amazon DynamoDB is AWS' fully managed serverless NoSQL database for key-value and document-style workloads.
It is a strong fit when access patterns are known and naturally map to primary keys and secondary indexes, for example:
- high-traffic user/application state
- carts
- metadata
- device state
- gaming workloads
- request/lookup-driven services
DynamoDB rewards deliberate access-pattern modeling.
It is a poor replacement for a relational database when the application fundamentally depends on arbitrary joins, complex ad-hoc relational queries, or a schema designed around normalized SQL relationships.
The key design question is not “Can DynamoDB scale?” It is “Can our important queries be expressed cleanly through its key/index model?”
DocumentDB: managed document workloads with MongoDB compatibility
Amazon DocumentDB is a managed document database designed for JSON-like document workloads and MongoDB compatibility.
Typical fits include:
- catalogs
- user profiles
- content-oriented data
- semi-structured documents
Compatibility should be verified against the exact MongoDB features, commands, drivers, indexes, and behavior your application relies on.
“MongoDB compatible” should not be interpreted as “identical to every MongoDB deployment and feature.” Migration testing matters.
ElastiCache: caching, not your default system of record
Amazon ElastiCache is AWS' managed in-memory caching service. Current AWS guidance lists support for Valkey, Memcached, and Redis OSS deployment options depending on configuration.
Use it for workloads such as:
- hot data caching
- session acceleration where the failure model is acceptable
- response/query caching
- leaderboards or ephemeral state when supported by the chosen engine/model
Its role is usually to reduce work on a slower source of truth.
Do not turn a cache into an authoritative database accidentally just because access is fast.
MemoryDB: durable in-memory database
Amazon MemoryDB is designed for applications that need an in-memory-compatible data model with durable database behavior.
That is a different role from ElastiCache.
A useful distinction is:
ElastiCache -> primarily cache / ephemeral acceleration
MemoryDB -> durable in-memory primary database use cases
Evaluate MemoryDB when low-latency in-memory access is central and the data cannot simply disappear like ordinary cache entries.
Neptune: graph relationships are the workload
Amazon Neptune is AWS' managed graph database.
It fits data where traversing relationships is a first-class query pattern:
- fraud networks
- social graphs
- knowledge graphs
- recommendation relationships
- GraphRAG-style connected data
Do not adopt a graph database merely because the schema has foreign keys. Relational databases already model relationships well for many applications.
Graph databases become compelling when multi-hop traversal and relationship-centric queries dominate the workload.
Keyspaces: Cassandra-compatible wide-column workloads
Amazon Keyspaces is a managed Apache Cassandra-compatible wide-column database service.
It is relevant when:
- an existing Cassandra application is moving to AWS
- very large distributed wide-column workloads fit the access model
- high-throughput key-oriented reads/writes are required
As with any compatibility service, validate the exact CQL features, consistency behaviors, limits, and operational assumptions used by the application.
Timestream: data whose primary dimension is time
Amazon Timestream targets time-series workloads such as:
- IoT telemetry
- application/operational metrics
- asset measurements
- time-oriented events
A purpose-built time-series database can be more natural than forcing massive timestamped datasets into a general relational schema.
But if your time-series volume is modest and PostgreSQL already handles it comfortably, adding another database may not be justified.
Choose by access pattern, not by marketing category
A useful first-pass matrix is:
| Requirement | AWS service to evaluate first |
|---|---|
| standard relational SQL | RDS |
| AWS-native relational cluster | Aurora |
| distributed serverless SQL | Aurora DSQL |
| key-value/document at serverless scale | DynamoDB |
| MongoDB-compatible document workload | DocumentDB |
| ephemeral in-memory cache | ElastiCache |
| durable in-memory database | MemoryDB |
| graph traversal | Neptune |
| Cassandra-compatible wide column | Keyspaces |
| time-series data | Timestream |
This is a shortlist, not an automatic answer.
Availability is service-specific
Do not compare AWS databases only by engine type.
For each candidate, examine:
- single-AZ vs Multi-AZ architecture
- synchronous vs asynchronous replication behavior
- automatic failover
- regional/multi-region options
- recovery objectives
- backup/PITR behavior
For RDS, for example, Multi-AZ deployment is primarily an availability strategy; read replicas solve a different read-scaling problem.
Architecture should be chosen from RPO/RTO and consistency requirements rather than the generic label “highly available.”
Serverless does not mean zero capacity thinking
Several AWS database offerings provide serverless deployment models.
Serverless can reduce provisioning work and adapt capacity automatically, but you still need to understand:
- scaling boundaries
- cold/scale transition behavior where relevant
- concurrency
- request/storage pricing dimensions
- quotas
- workload spikes
- minimum/maximum capacity settings where applicable
A workload with stable heavy utilization can have different economics from an unpredictable bursty workload.
Benchmark with your actual traffic pattern.
Managed backups still require restore testing
Automated backups are useful, but production recovery requires more than checking that “backup enabled” is true.
Document and test:
- retention period
- point-in-time recovery behavior
- cross-region/account backup requirements
- encryption/KMS dependencies
- restore duration
- application reconnection/cutover
Replication and Multi-AZ availability do not replace recoverable historical backups.
Networking and security remain your job
A managed database should normally be deployed with deliberate network boundaries and access controls.
Review:
- private VPC placement where appropriate
- security groups
- TLS
- database authentication / IAM options
- Secrets Manager or another secret-management workflow
- encryption at rest
- KMS key lifecycle
- least-privilege database users
- logging/auditing requirements
Managed infrastructure cannot protect an application from overly broad credentials or unsafe query authorization.
Watch the compatibility traps
Migration decisions often fail on details rather than the broad engine name.
Before moving an existing application, inventory:
- extensions/plugins
- stored procedures
- collations
- full-text/search behavior
- transaction/isolation assumptions
- drivers
- replication/CDC tools
- admin tooling
- backup workflows
- SQL syntax and functions
Run representative integration and load tests against the actual target service.
A practical AWS database selection process
- Define the data model. Relational, key-value, document, graph, time series, wide column, or in-memory.
- List the critical access patterns. Do not start from a product name.
- Define consistency and transaction requirements.
- Define RPO/RTO and regional requirements.
- Estimate workload shape. Reads, writes, storage, burstiness, connection count.
- Check exact feature compatibility.
- Model pricing using realistic traffic and storage.
- Prototype the hardest queries/transactions.
- Test failover and restore, not only happy-path performance.
- Prefer the simplest service that satisfies the workload.
AWS' database portfolio is valuable because you do not have to force every workload into one engine. The flip side is that purpose-built databases should be chosen for a purpose. Start from data and access patterns, then let the service choice follow.
Official references
BUILDING A SAAS PRODUCT?
Explore Lofingo’s end-to-end SaaS platforms, multi-tenant cloud architecture, and high-concurrency backend engineering.
EXPLORE SAAS SERVICES →