Skip to main content

Decision guides

RDS vs DynamoDB

Relational flexibility against predictable scale: the question is whether you know your access patterns, and how much you will regret it if they change.

Reviewed 2026-09-21 · next review 2027-03-21

WHAT IS BEING DECIDED The primary datastore: a managed relational database, or a managed key-value and document store. This is among the hardest decisions to reverse in an application, because the data model and much of the query code follow from it. The useful framing is not SQL versus NoSQL. It is whether your access patterns are known and stable enough to design a schema around them up front. HOW TO WEIGH IT Weight query flexibility heavily if the product is young and the access patterns are still being discovered — relational gives you the ability to ask questions you have not thought of yet, and early products ask a lot of those. Weight predictable scale heavily if you have a known, high-volume, simple-key workload where single-digit-millisecond latency at any size is a requirement. Weight team familiarity honestly. A well-modelled relational schema operated by people who understand it beats a poorly modelled key-value schema in almost every case. WHEN EACH WINS RDS wins for the general case: transactions across entities, joins, aggregate reporting, and the freedom to add an index when a new question arrives. Most applications are this. DynamoDB wins when access is dominated by key lookups at scale, when you want capacity that grows without a resize, or when operational simplicity matters more than query expressiveness. It punishes unanticipated access patterns — retrofitting a new query shape often means a new index or a migration of the data model itself. HOW TO DECIDE Write down your top ten queries before choosing. If you can enumerate them confidently and they are key-based, DynamoDB is a strong fit. If the list is uncertain, or contains aggregates and ad-hoc filters, choose relational. The cost of a relational database you outgrow is a scaling project; the cost of a key-value model that does not match your queries is a rewrite. See /dataops and record the decision with the template at /templates.

Weigh it yourself

The weights below are a starting suggestion, not a recommendation. Move them to match what your situation actually rewards — the totals are arithmetic on your weights, computed in your browser.

Ability to answer questions you had not planned for, without changing the data model.

0 = does not matter here · 1–5 = increasingly decisive

Latency and throughput behaviour as data and traffic grow, without re-architecture.

0 = does not matter here · 1–5 = increasingly decisive

Multi-entity consistency guarantees your business logic can rely on.

0 = does not matter here · 1–5 = increasingly decisive

Capacity management, version upgrades, backups and connection handling.

0 = does not matter here · 1–5 = increasingly decisive

How expensive it is to change your mind in eighteen months.

0 = does not matter here · 1–5 = increasingly decisive

  • Amazon RDS (PostgreSQL/MySQL)81% of the weight you assigned
  • Amazon DynamoDB65% of the weight you assigned

Using the suggested starting weights. This is your arithmetic, not a verdict from this site.

How each option rates

Ratings of each option against each criterion, with the reason for each rating
CriterionAmazon RDS (PostgreSQL/MySQL)Amazon DynamoDB
Query flexibility5/5

New questions are usually a new query and sometimes a new index, not a data-model change.

2/5

Efficient access must follow the key design; unplanned queries need a new index or a scan.

Predictable scale3/5

Scales well vertically and with read replicas; write scaling eventually requires real work.

5/5

Single-digit-millisecond reads at effectively any size, with no resize event.

Transactional integrity5/5

Mature multi-row, multi-table ACID transactions with well-understood isolation semantics.

3/5

Transactions exist but are constrained in scope and cost more than the relational equivalent.

Operational burden3/5

Managed, but you still choose instance size, manage connections and schedule version upgrades.

5/5

No instances, no connection pools, no version upgrades; on-demand capacity removes sizing.

Cost of being wrong4/5

Outgrowing it is a scaling project with known techniques rather than a rewrite.

2/5

A mismatch between key design and real access patterns is usually a data-model rewrite.

When this comparison stops applying

  • You cannot yet list your top ten queries — that uncertainty alone argues for relational, whatever the other weights say.
  • One workload inside a larger application has a genuine key-value shape: using both for their respective strengths is legitimate, provided someone owns the consistency boundary between them.
  • Your reporting requirements are significant, in which case the real answer may be relational plus a warehouse rather than either option alone — see /dataops.