Comment by ferguess_k
16 hours ago
Yup, they are very serious about DynamoDB and it is a very good product. Wish they released more information about it, though.
16 hours ago
Yup, they are very serious about DynamoDB and it is a very good product. Wish they released more information about it, though.
Man I admire AWS marketing team for convincing people DynamoDB is a very good product.
100 items max per Transaction BatchGet 100 items, 16 MB max low write limits on same key Item size 400 KB max etc.
DynamoDB has basically two legitimate use-cases that I'm familiar with:
1. You're selling a system to a customer to use within their own AWS account, that you will have no access to, and it needs a transactional datastore (not just an object bucket) of some kind. The fact that it costs nothing by default (particularly valuable when the customer is trying to deploy a proof-of-concept), scales more-or-less perfectly without anybody touching it, requires zero day-to-day maintenance by you or the customer, and all it will ever ask is that you throw money at it, is very, very much a feature. One example I'm familiar with in the wild is Teleport: https://goteleport.com/docs/reference/deployment/backends/#d...
2. You have a huge OLTP workload that fits Dynamo's KV patterns (e.g. Amazon.com shopping carts, which is what it was originally built for). You don't care how much DynamoDB costs (in either dollars or engineering limitations) because any alternative would melt your face off if you even tried.
Most of the pain that comes from Dynamo is people who try to use it as a primary datastore in place of a relational database just to get the serverless pricing model. It's not worth giving up the flexibility on greenfield systems. It does become worth it to give up the flexibility when your system is mature and you don't have genuine flexibility anymore anyway.
Anyone trying to use a kv store for relational workloads is The same kind of person who uses a kv cache with durability features instead of a kv store. You can’t blame the tech for their mistakes.
Some of the largest, highest TPS, highest throughput systems in the world use DDB.
The constraints are what let this happen. Unconstraining it might make a better generalist product but part of what you're opting into with DDB is the dumb "put an item in get an item out semantics" and the other side is knowing that it will still work if that volume increases dramatically.
[dead]
The reason it's good is because, although it is bad, you never have to worry about it in terms of maintenance, admin or scale. It's like lambda for databases.
For the same price, you can run a much more capable PSQL instance with way better features, but now you're on the hook for it being up 24/7.
They should really call it "data-structures as a service" rather than a database, really. Programming against it always reminds me of Leetcode problems, having to define your columns in a way to suit the very specific lookup patterns that they allow for.
1 reply →
You do have to worry about scale with lambda though. It’s not super hard to hit a rate limit where warm up times start being a real problem.
Thanks, I don't really get any chance to seriously use or manage OLTP databases (mostly working with OLAP ones myself) so it is good to know about this. The 400KB limit is indeed very limiting -- I had to truncate some data because of that.
I wish I could get a role to work on OLTP databases. PostgreSQL seems to be a fascinating topic so that's on my plate.
They have published 2 academic papers about it. What more do you want, operational details?
For example, I would like to know how to calculate the charge of incremental export before I run one.
One blog says it is charged by the amount of change logs (but the official doc doesn't say so), which makes sense. But how do I estimate the amount? My hunch is: Put + Write + (1~100) * TransitWrite + Update + Delete + (1~25) * BatchWrite.
https://www.amazon.science/publications/dynamo-amazons-highl...
For anyone interested in the differences between dynamo (the early internal-only KV store described in this paper) and DynamoDB (The AWS service), Marc Brooker has an excellent writeup https://brooker.co.za/blog/2025/08/15/dynamo-dynamodb-dsql.h...
It is their previous one. I did read another paper about DynamoDB, but still there is not much details.
For example, I want to know how to calculate the charge of incremental export. One blog says it is charged by the amount of change logs (but the official doc doesn't say so), which makes sense. But how do I estimate the amount? My hunch is: Put + Write + (1~100) * TransitWrite + Update + Delete + (1~25) * BatchWrite.
Nothing to do with DynamoDB except the name.
This is massively different from DynamoDB.
[dead]
[dead]