Do not bind graph size to an edge isolate
Edge runtimes are excellent routing and execution surfaces, but an unbounded graph cannot live entirely in an isolate’s memory. The authoritative state must be disk-backed and partitioned. Caches should hold bounded index blocks or query results, never an uncontrolled whole-graph replica.
On Cloudflare, the recommended target uses many SQLite-backed Durable Object shards for transactional state and R2 for packed immutable history, checkpoints, mirrors, and cold recovery.
Use object storage as a log and recovery substrate
Object storage works best when writes are batched into immutable segments and metadata is bounded. Each segment needs graph, region, writer epoch, sequence range, entry count, checksum, schema generation, and previous-root integrity.
Use immutable manifest generations with a compact root pointer. Publish a root only after every referenced object has been verified. Background compaction merges small segments and prunes unreferenced generations after a safety horizon.
Treat search and SQL views as projections
Lexical, vector, analytics, and cross-shard indexes are rebuildable. Transactional outboxes record every required projection in the same authoritative commit. Queues or workflows drain those outboxes, retry safely, and expose per-shard watermarks.
A failed projection must not disappear into logs. It remains durable until acknowledged, with a dead-letter and repair path for poison records.
Price the operation shape, not only storage
At low volume, fixed platform minimums and support dominate. At high volume, mutation CPU, vector dimensions queried, object-store writes, compaction, replication, and hot storage shape cost. The public bill can remain simple by metering reads, atomic mutation transactions, hybrid searches, and logical storage.
Planning models need an uncertainty buffer and real telemetry. Rate cards should be versioned and invoices reproducible from committed operations.