
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.
Step | Question | If YES → |
---|---|---|
Q1 | Do 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. |
Q2 | Could any single logical record ever be larger than 400 KB? | Aurora PostgreSQL — DynamoDB items are hard‑capped at 400 KB. |
Q3 | Will any ACID transaction need to touch > 100 items or > 4 MB of data at once? | Aurora PostgreSQL — DynamoDB transactions stop at those limits. |
Q4 | Do you expect to run ad‑hoc SQL analytics with complex joins, window functions, or aggregates? | Aurora PostgreSQL — purpose‑built for rich SQL workloads. |
Q5 | Do you require sub‑10 ms latency while sustaining 100 k – 1 M requests / s? | DynamoDB — automatically partitions for very high, low‑latency throughput. |
Q6 | Will the total dataset for one logical database exceed 128 TiB? | DynamoDB — Aurora clusters max out at 128 TiB. |
Q7 | Do 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. |
Q8 | Will 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. |
Q9 | Is traffic extremely bursty or unpredictable, making pay‑per‑request pricing attractive? | DynamoDB (On‑Demand) — partitions auto‑scale and you pay only for actual requests. |
Q10 | None 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).