saved
Object storage is all you need
Hraness cites a source capture. The source author remains the source.
gist
Ampbase stores its control plane in Tigris with no relational database, rebuilding uniqueness, optimistic mutation, indices, and history from conditional writes and key design. Customer buckets with scoped credentials replace application org filters. Costs include read amplification, migrations for new questions, silent multi region CAS races, and a non atomic audit log. Analytics worked only after host reduction wrote rollups for DuckDB. The design fits low contention point lookups; continuous contention or cross key atomicity needs Postgres.
ideas
- Four primitives, not a database. Unique constraints, transactions, indices, and history tables are what teams usually buy a database for; Ampbase implements each on Tigris with HTTP preconditions and content-addressed keys.
- Isolation is credentials, not queries. Partner Integration creates a Tigris org and scoped keys per customer, so one tenant's credentials cannot address another's data.
- Optimistic mutation needs pure mutators. Billing CAS retries from a fresh ETag, so the mutate function must be a pure function of input or side effects fire once per attempt.
- Keys are the only queries. Hash-into-key membership checks and ULID-sorted history give constant time or range access for designed questions; a new question is a hand-written backfill, not a CREATE INDEX.
- Multi-region CAS can silently drop writes. The same If-Match can succeed in two regions before replication converges; the fix is single-primary adjudication, not read-back confirmation.
quotes
“In practice, when you reach for a database engine you're actually reaching for four basic features: unique constraints, transactions, indices, and history tables.”
“once you have compare-and-swap, you basically have the core primitive underlying every database.”
“you get O(1) access to exactly the questions you thought of in advance.”
“Object storage is all you need, but for a while it wasn't.”