Every fast write moves work somewhere else

(shayon.dev)

24 points | by shayonj 2 hours ago

4 comments

  • aleksiy123 39 minutes ago
    Today I learned there’s a name for the general version of this idea.

    https://en.wikipedia.org/wiki/Waterbed_theory

    At a certain point in a solution everything you do to optimize (“push”) in one area will cause a negative effect in a different area (“bulge”).

    But this is a nice concrete example.

    • baq 1 minute ago
      I like minimal irreducible inherent complexity of a problem or a system (waterbed or zero-point would work I guess) and then you can derive some form of a law of conservation of complexity… if you can measure it. You can definitely feel it, though.
    • shayonj 37 minutes ago
      v interesting. Thanks for sharing. I kept seeing this phenomenon of "no free lunches". TIL about the waterbed theory.
    • ttoinou 28 minutes ago
      It’s called constraints and tradeoffs yeah
      • aleksiy123 5 minutes ago
        Sure, but I like how this feels more tactile and how things may bulge in unexpected way.

        Like pushing clay around into the right shape of the problem while it’s fighting you.

        Constraints and tradeoff feels like the simplified model.

  • cpard 1 hour ago
    When I saw the title the first thing I thought of was schema on read versus schema on right when in data platforms.

    You can make writes faster and part of that is by not dealing with schema resolution but you do push the work somewhere else there too.

    I guess the same principles apply on many different levels, from when you write to the file system up to how you deal with conflicted data types during data ingestion.

    • rtibbles 1 hour ago
      The first thing I thought when seeing the title was "writing" with LLMs - writing quickly can easily just move the work onto your readers!
      • dozerly 43 minutes ago
        I like this a lot, it’s true for more than DBs!
  • xixixao 58 minutes ago
    2 angles I think DB designers don’t often think about:

    1. Durability extends to the client. Replicated db might ack a write to client, but what if that ack gets lost on the way back over network? If client talks to the DB over simple HTTP, the write might first look like a failure. Can the client retry?

    2. Human perception times are biological and don’t change much. But everything in the tech stack has gotten so so much faster since the 80s. Throughput matters, sure, but latency (relatively speaking), is much less of a constraint now than it was.

    • cyberpunk 36 minutes ago
      1) you ack the ack, then ack the ack ack ;)

      2) depends, i have a database that farks up a pretty complex distributed system when clients write from another az, latency really can be an issue for some workloads

  • mkeeter 27 minutes ago
    Another fun failure mode in the same vein: if you are emulating an NVMe device and declare that a write operation is successful once bytes are in memory, you will quickly find yourself buffering arbitrarily large amounts of data as "persist to disk" (SSD speed) falls behind "acknowledge writes" (RAM speed). If you do not add backpressure to your system intentionally, it will be added for you – and you may not like where it's placed!

    (This also happens at the SSD level: burst writes can be very fast as data is buffered in the SSD's own RAM, then performance steady-states at the true write speed once that's saturated)