logoalt Hacker News

Object storage is all you need

55 pointsby jpsaccountlast Tuesday at 11:11 PM33 commentsview on HN

Comments

dullcrisptoday at 12:34 PM

This article doesn’t present much motivation for why you would do this.

To me it reads a bit like, how we built our office without desks: it turns out if you stack two chairs on top of each other, you can balance your laptop on the top and you’ll also have a shelf on the bottom for your things.

show 2 replies
ryanbrunnertoday at 12:25 PM

Articles like this remind me of that Innovation Tokens article.

Your time and attention is precious as a developer. I'm absolutely sure it's possible to implement uniqueness constraints, transactions, indices, and history yourself, but is that really the most valuable use of your time? There's probably not a need for you to have a unique solution, so you're quite literally just re-inventing something someone already had for not a lot of benefit.

Wouldn't your time be better spent actually solving the problems that whatever you're building is supposed to solve?

show 1 reply
agentultratoday at 1:55 PM

> In practice, when you reach for a database engine you're actually reaching for four basic features: unique constraints, transactions, indices, and history tables.

That might be a very specific assumption. What about serializability? Replication? Materialized views? Procedures? Locking? Access control?

It’s cool to experiment and try new approaches. Neat one here.

Could still end up moving to Postgres.

show 1 reply
arpinumtoday at 12:12 PM

This is frustrating to read. Tigres is built on FoundationDB, but doesn't expose all FoundationDB operations like transactions, range reads, and get mapped range. They go through all sorts of complications to handle these issues, including a database for caching (and they don't consider thundering herd problems).

What if you just ran FoundationDB instead?

show 2 replies
i2kmtoday at 12:22 PM

Along with putting estimated reading times (21 minutes in this case) can authors please start putting estimated writing times?

Did it take 10 seconds of prompting? Or hours of thought, trial error and revision? Especially when asking people to read for 20+ minutes...

show 1 reply
tantalortoday at 12:32 PM

> Protobuf field names are forever

If you only have binary encoded protos to worry about (which is typical) then you can rename fields.

jmathaitoday at 1:08 PM

There is a simple version of this idea that really resonates with me.

For about a decade, I've been using flat files on disk or object storage for most of my side projects. There's even a python library that handles some of the plumbing for you [1].

If you don't have strong record-level concurrency needs then it's a lot nicer, easier, cheaper than a relational or document database. And if you do need that, you can design your data model around what defines a record.

[1] https://tinydb.readthedocs.io/en/latest/

jeremyjhtoday at 11:39 AM

Absolutely no mention of Iceberg or Delta Lake, which have had many of the same properties for years. I wonder if they are aware of them, or otherwise why they invented something new.

I generally don't read low-quality AI slop though, so its possible I missed an explanation that didn't contain those key words.

devintoday at 2:26 PM

> Where it actually breaks

I had a sensible chuckle when I got to this part. This kind of article "____ is all you need" is like another case of Betteridge's Law of Headlines. The answer is "that's not true" every time.

grey-areatoday at 1:09 PM

The moment a cache becomes load-bearing you have a database again, except it's in RAM, nobody backed it up, and its failure mode is silence.

Article flagged as AI slop.

ecshafertoday at 12:59 PM

Why? This just seems like a bad idea.

jpsaccountlast Tuesday at 11:14 PM

Author here. Ampbase is an OpAMP control plane for agent fleets, and this is how it runs without a database: conditional writes for uniqueness and compare-and-swap, one bucket per customer so isolation isn't a WHERE clause somebody has to remember, ULID keys so history is a prefix list.

Two things the post doesn't cover and I'm happy to get into. What closing the cross-region lost update actually took: annotating the RPCs that depend on a compare-and-swap and replaying those to a single region, with a client-side guard. And the read amplification, which we have a plan for but waiting on a clear signal for when it’s needed.

Cross-posted with thanks to the Tigris folks; the original is at ampbase.io.

show 2 replies