Amazon has a transaction log service (the details aren’t public) which is used by Aurora and MemoryKV
A reliable log seems clutch. If you’ve safely logged an update, you have more flexibility in when you finish flushing writes out. After a leader crash, a new leader could look at the log and finish the work, much like when a single-node DB does crash recovery.
If you were trying to write a minimal database that leaned heavily on managed services and didn’t drop writes, wonder if you could use something like Kinesis or MSK to buffer up logs and relay events to followers until the leader can write a complete LSM part to S3.
S3 recently added [conditional writes] which gives you CAS-style operations on S3 objects.
Alas, S3 conditional PUTs currently just let you check a key doesn’t exist before creating, without (yet) offering compare-and-set on Etag/contents.
I recently learned that BlueSky team switched from Postgres to a combination of Scylla and SQLite. One of the reasons was because (vanilla) Postgres is not horizontally scalable, but Scylla is.
I got curious: it looks like Scylla runs the big app, and the personal data server you can optionally run stores data with SQLite.
Incidentally, the Bluesky team like their boxes with disks attached. I do too, but trying to have fun with this idea!
I think S3 express is a VERY niche product right now because of the billing model. Most solutions amortize the high TTFB latency by concurrently fetching multiple parts, and storing all metadata in local disk or memory caching on boot
A reliable log seems clutch. If you’ve safely logged an update, you have more flexibility in when you finish flushing writes out. After a leader crash, a new leader could look at the log and finish the work, much like when a single-node DB does crash recovery.
If you were trying to write a minimal database that leaned heavily on managed services and didn’t drop writes, wonder if you could use something like Kinesis or MSK to buffer up logs and relay events to followers until the leader can write a complete LSM part to S3.
(If you were trying to log direct to S3, multipart uploads give you a very limited way to send an object to S3 as up to 1000 pieces, which One Zone Express’s new append feature expands.)
Alas, S3 conditional PUTs currently just let you check a key doesn’t exist before creating, without (yet) offering compare-and-set on Etag/contents.
I got curious: it looks like Scylla runs the big app, and the personal data server you can optionally run stores data with SQLite.
Incidentally, the Bluesky team like their boxes with disks attached. I do too, but trying to have fun with this idea!
Haha, the situation with S3 conditional PUTs changed since I wrote the parent comment last night! That “(yet)” turned out to be load-bearing!
AWS announced today you can now check for an unchanged ETag before a write.
I think S3 express is a VERY niche product right now because of the billing model. Most solutions amortize the high TTFB latency by concurrently fetching multiple parts, and storing all metadata in local disk or memory caching on boot