skip to content
luminary.blog
by Oz Akan
different trees

Decision Tree: DyanamoDB vs Aurora PostgreSQL

Which one should you pick

/ 2 min read

Table of Contents

Aurora PostgreSQL vs DynamoDB

Read the questions in order.

The first time you answer YES, that engine is the safer choice.
If you get to the end without a YES, run a proof‑of‑concept and pick on price / familiarity.

StepQuestionIf YES
Q1Do you need true relational features (SQL JOINs, FOREIGN KEYs, UNIQUE / CHECK / EXCLUDE constraints)?Aurora PostgreSQL — it supports the full PostgreSQL constraint set, while DynamoDB has none.
Q2Could any single logical record ever be larger than 400 KB?Aurora PostgreSQL — DynamoDB items are hard‑capped at 400 KB.
Q3Will any ACID transaction need to touch > 100 items or > 4 MB of data at once?Aurora PostgreSQL — DynamoDB transactions stop at those limits.
Q4Do you expect to run ad‑hoc SQL analytics with complex joins, window functions, or aggregates?Aurora PostgreSQL — purpose‑built for rich SQL workloads.
Q5Do you require sub‑10 ms latency while sustaining 100 k – 1 M requests / s?DynamoDB — automatically partitions for very high, low‑latency throughput.
Q6Will the total dataset for one logical database exceed 128 TiB?DynamoDB — Aurora clusters max out at 128 TiB.
Q7Do you need multi‑Region active‑active writes (global replication with more than one writable Region)?DynamoDB — Global Tables give multi‑writer; Aurora Global DB is single‑writer.
Q8Will you have > 5 000 concurrent client connections to a single writer node?DynamoDB — Aurora’s default max_connections tops out near 5 000, depending on instance class.
Q9Is traffic extremely bursty or unpredictable, making pay‑per‑request pricing attractive?DynamoDB (On‑Demand) — partitions auto‑scale and you pay only for actual requests.
Q10None of the above triggered?Both engines are viable. Run a quick PoC and compare Aurora Serverless v2 cost vs. DynamoDB On‑Demand.

Reasoning behind some of the questions

  • Relational features & constraints exist only in Aurora PostgreSQL.
  • Item size limit: 400 KB in DynamoDB.
  • Transaction limit: ≤ 100 items / 4 MB in DynamoDB.
  • Storage ceiling: 128 TiB per Aurora cluster.
  • Connections: Aurora’s default max_connections formula caps near 5 000.
  • Throughput & burstiness: DynamoDB partitions add capacity automatically (3 000 RCU / 1 000 WCU per partition, 10 GB each).

I am sure limits will change in time. If you read this article in the future, be careful about that.


You can follow the link below to validate the constraints above.

https://www.perplexity.ai/search/validate-these-claims-reasonin-IfBMBVc8STitCkODcJdJSg

If the link has expired just paste the prompt below;

Valildate these claims.
Relational features & constraints exist only in Aurora PostgreSQL.
Item size limit: 400 KB in DynamoDB.
Transaction limit: ≤ 100 items / 4 MB in DynamoDB.
Storage ceiling: 128 TiB per Aurora cluster.
Connections: Aurora’s default max_connections formula caps near 5 000.
Throughput & burstiness: DynamoDB partitions add capacity automatically (3 000 RCU / 1 000 WCU per partition, 10 GB each).