Strong, eventual, causal and read-your-writes consistency
coreadvancedThese four named models sit on a spectrum from strictest to loosest, each relaxing a different guarantee in exchange for better performance or availability. Strong consistency means every read sees the most recent write, as if there were only one copy of the data. Eventual consistency only guarantees that, given enough time with no new writes, every copy converges — with no guarantee about what a read sees in the meantime. Causal consistency sits in between: operations that are causally related (a reply to a comment) must be seen in that same order by everyone, but truly concurrent, unrelated writes can be seen in different orders by different observers. Read-your-writes is a narrower, single-user guarantee: whatever a specific process just wrote, that same process will see on its own next read — even if other processes have not caught up yet.
Think of it as
Think of four different standards for how quickly news spreads through a large organization. Strong consistency is a single company-wide announcement system where everyone hears the news at the exact same instant — nobody can ever be "ahead" or "behind." Eventual consistency is word-of-mouth gossip — it will eventually reach everyone, but at any given moment some people know and some do not, with no promise about who finds out first. Causal consistency is like a chain of replies in a group chat — if someone replies to a message, everyone who sees the reply also has to have seen the original message first (cause before effect), even though two unrelated side conversations can appear in either order to different readers. Read-your-writes is the guarantee that you, personally, always remember what you yourself just said — even if the rest of the group has not caught up on it yet.
What we're doing: Show the same comment-and-reply scenario under causal consistency vs eventual consistency, illustrating exactly what causal ordering adds.
- 9
- This is the specific confusing case eventual consistency alone allows — cause and effect appearing out of order to some observer.
- 19
- This is exactly what causal consistency adds on top of plain eventual consistency — the specific causally-linked pair is now guaranteed ordered, without paying for full strong consistency on every unrelated write too.
Why this works: This is the concrete value causal consistency provides over plain eventual consistency — it fixes the specific class of confusing "effect before cause" anomalies users actually notice, without paying strong consistency's full coordination cost on every single write in the system, most of which are not causally related to each other at all.
Assuming "read-your-writes" implies other users also see your write promptly
Wrong
Better
What you see: A feature built assuming read-your-writes covers "everyone sees updates quickly" works fine for the user who just posted (they see their own comment instantly) but other users still see a stale page for a while — the guarantee that was actually configured only ever covered the posting user's own subsequent reads, not anyone else's.
Why: Read-your-writes is explicitly a single-process (or single-session) guarantee — it says nothing at all about what any OTHER process observes, which is a fundamentally different and much weaker promise than "the write becomes visible to everyone quickly," and conflating the two leads to a feature that only half-works.
- Strong — every read sees the latest write
- Causal — related writes stay ordered
- Read-your-writes — you always see your own writes
- Eventual — converges, no ordering promise
The four models compared directly
Remember: Strong > causal > read-your-writes > eventual, from strictest to loosest. Strong: every read sees the latest write. Causal: causally-related writes stay ordered for everyone, unrelated ones do not. Read-your-writes: a single process always sees its own prior writes. Eventual: all copies converge eventually, with no promise about anything before that.
See also: consistency availability partition tradeoffs · read replicas and consistency · why components disagree

