durable-streams-rust: use the cold tier as the durable bulk store (make local per-stream files a non-durable read cache)

Aperta
#4,696 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
28/100
Tipo di issue
Funzionalità
Chiarezza
Da chiarire
Stato di attività
Tranquilla
Stack tecnologico
aws

Direzione di ricerca

Inizia da CARDINALITY_CLIFF_FIX.md e dagli entry point del checkpoint WAL e del cold tier esposti dalle opzioni --tier-*. Traccia l’interazione tra gli upload dei tier, il riciclo del WAL e l’ordine di ripristino, inclusi --tier-segment-bytes e --tier-compact-bytes. Il lavoro è completato quando le questioni aperte relative al ripristino e alla durabilità sono state risolte e i file locali proposti, usati solo come cache, non richiedono più un checkpoint di durabilità O(N).

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Context

The write cardinality cliff is caused by the WAL checkpoint's O(N_touched) per-stream fdatasync storm (see investigation in CARDINALITY_CLIFF_FIX.md). The checkpoint exists only to make per-stream data durable so the WAL can be recycled.

Proposal

The server already has a cold tier (S3/MinIO segments, --tier-*). Make the local per-stream files a pure read cache, not a durability target:

  • Durability = WAL (recent) + cold-tier segments (bulk).
  • The WAL recycles once its records are persisted to the tier — which is already batched into bounded segments, i.e. O(segments) uploads/fsyncs, not O(streams).
  • Recovery = load tier state + replay the WAL tail. The per-stream local files are rebuilt lazily as a cache and never need a per-file fdatasync.

This deletes the O(N) checkpoint by reusing infrastructure that already exists, and fits the tiered architecture better than one-file-per-stream local durability.

Open questions

  • Is the cold tier currently authoritative enough for recovery (upload durability, ordering vs WAL recycle floor)?
  • Interaction with --tier-segment-bytes / --tier-compact-bytes cadence.

Alternatives tracked separately

  • Log-structured local store (#LOG_STRUCTURED_ISSUE).
  • Incremental/staggered checkpoint + --wal-checkpoint-syncfs (being prototyped now).
Lingua principale
TypeScript
Stelle
10.4k
Fork
399
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di electric-sql/electric

Tutte le issue di electric-sql/electric

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.