Meet DynoTable — a fast desktop GUI for AWS DynamoDB.
Open a table, filter with autocomplete, edit a row, commit. It runs on your machine and talks straight to AWS — your data never touches our servers.
Here's what it does.
Fair stack. KV for the app, cache in front, columnar for analytics. Covers a huge amount.
Then someone asks for “users who did X then Y within 7 days, ranked by a friend’s score,” and you’re doing graph traversals and multi-way joins across three stores you’re now keeping in sync by hand.
The three-store setup is great until the thing you’re building is the relationships between the data, not the data.
An MCP server holding AWS credentials is a different problem than a toy stdio server. Safe meant OAuth inside a desktop app, scoped consent, a region pinned at approval. https://t.co/bpUqwFCLuc
@amritwt The pricing model is the difference. A hosted Postgres bills for the instance whether you use it or not. DynamoDB on-demand bills per request, so a low traffic app rounds to cents. The tradeoff: you commit to access patterns up front and ad hoc queries stop being free.
@ignaziodes There is a query that settles it: sum ConsumedReadCapacityUnits and ConsumedWriteCapacityUnits over 30 days in CloudWatch, divide by what is provisioned. Tables everyone swears are steady usually idle nights and weekends. The metric ends the meeting.
AWS open sourced a Bulk Executor for DynamoDB: count, find, delete, update, copy, or load a whole table from one CLI. It drives Glue behind the scenes, so no custom job code.
https://t.co/U6Ug1i0Dd9
@Haripra57545356 Orders fit DynamoDB well because every read is known upfront: by order id, by customer, by restaurant, by driver. One table, PK on the order id, status history as items under the same PK, and a GSI per lookup with a timestamp sort key. Payments I would keep relational.
@The_short_kid0@Itz_HarshXD Supabase is Postgres under the hood. It hosts the database and layers auth, storage, and an auto-generated REST API on top. That API covers simple reads and writes; past that you are back to writing plain Postgres queries, which is why those roles still exist.
@ignaziodes Right, and the crossover has a number: on-demand bills about 7x the provisioned unit rate, so provisioned wins once sustained utilization clears roughly 15 percent. Spiky or idle-heavy tables stay on-demand; steady write-heavy ones almost never should.
@GeertZaal@vivoplt Agreed. The honest fork: if you can write the access patterns down before you build, DynamoDB rewards you. If the queries are still evolving or ad hoc, relational is the safer default. Most regret comes from picking it for scale that never arrived.
@svpino They will send an army of engineers with unlimited cloud code to any enterprise company to solve any problem, and it actually makes a lot of sense, one good senior with unlimited Fable can beat any in-house guy. Companies will pay big money for this.
Mostly right, but the framing that you must pick at the storage layer is the part worth pushing on. DynamoDB is the counterexample. Storage is LSM, so writes are cheap and sequential, but reads don’t pay the usual LSM tax because a query is a direct partition hit, not a scan across sorted files. Key-value access sidesteps the read amplification that hurts Cassandra on range-heavy work.
The read-vs-write tradeoff never disappears, it just moves. In Dynamo you pay it in the data model. Design keys around your access patterns and reads stay single-digit ms. Model it wrong and no engine setting saves you, because the fix is a migration, not a config flag.
Also worth noting: LSM read cost is tunable, not fixed. Bloom filters kill most phantom file lookups and compaction strategy trades write amp for read amp directly. “Reads are just expensive” skips the whole knob panel.
We’ve been writing this up (LSM internals, how Dynamo partitions, where the cost actually lands) at https://t.co/BtX69ALF23 if useful.