There's a joke in my friend circle that asks

The Two Machines • Buttondown

submited by
Style Pass
2024-09-24 11:00:05

There's a joke in my friend circle that asks "is it a database?" A startup, a program, a syscall, a person good with numbers, a person with a good memory. It's all very "is it a sandwich.” But it’s kind of true that it’s weird you can look at RocksDB and Snowflake and say “these are the same class of thing,” because they have very little functionality in common and exist at wildly different levels of abstraction.

As someone interested in the idea of “database” broadly speaking (as you might be, if you are reading this) this is something I’ve had to reckon with when saying what it is I’m actually interested in. Because “patterns for writing to disk efficiently” and “optimizing join orders” are so different but both of interest to me, that I’m forced to conclude there are two different categories of “thing” here and I think of them as “fsync machines” and “join machines.”

An fsync machine is concerned primarily with things like ACID. Reliability, failover, and being able to trust that the data is correct. If you're dealing with disk write throughput, you've likely got an fsync machine on your hands. If you're an fsync machine, you don't tend to care too much about complicated computational procedures outside of "shove that data into that buffer as quickly as possible." Storage engines are fsync machines. Most transactional systems are fsync machines, primarily.

Leave a Comment