Přeskočit na obsah

Event sourcing, protože zdroj je event stream

WS ISIR publikuje číselně uspořádané neměnné akce. Cokoli jiného než uložit je doslova a přehrávat zahazuje jedinou vlastnost, kterou zdroj dává zadarmo. Tahle stránka popisuje mechaniku toho rozhodnutí; kód pro repliku a projektor zatím neexistuje a je na roadmapě jako fáze 1.

Zdroj
neměnné akce s pořadovým ID, publikované od roku 2008
Replika
append-only, idempotentní podle ID akce, nikdy se needituje
Projekce
odvozená, kdykoli znovu postavitelná z logu
Oprava
oprav projektor, zvyš jeho verzi, přehraj — nikdy ruční UPDATE
Stav
plánováno (fáze 1: replika a checkpoint, projekce)

Dvě vlastnosti, na kterých stojí celý návrh

Pořadová ID dělají z inkrementální synchronizace triviální úlohu: stačí se zeptat na všechno za ID N. Neměnnost dělá bezpečným přehrávání — nic, co už bylo staženo, se zpětně nezmění, takže lokální kopii lze bez rizika považovat za append-only.

Kdyby si systém z proudu udělal jen aktuální tabulku, obě vlastnosti by zahodil a každá oprava interpretace by znamenala znovu obtěžovat veřejnou službu v rámci limitu 3000 požadavků denně.

Checkpoint je jediné pohyblivé místo

Proč se projekce nikdy nepatchuje ručně

Ruční UPDATE opraví jeden řádek a zároveň nenávratně rozpojí projekci od logu. Od té chvíle už přehrání nedá stejný výsledek jako to, co je v databázi, a projekce přestane být odvozená — stane se druhým zdrojem pravdy, který nikdo neumí zrekonstruovat.

Proto zní oprava vždycky stejně: oprav projektor, zvyš jeho verzi, přehraj z logu. Replika se přitom nedotkne.

Co event sourcing neřeší

Nezaručuje, že je interpretace správná — jen že jde opravit. Kvalita dat pořád stojí na extrakci ze skenů, prahu spolehlivosti a lidské kontrole. A levné přehrávání je podmíněné tím, že se výsledky extrakce cachují; bez cache by každá oprava stála celý backfill znovu.

Kde to v repozitáři žije

Souvisí

Zpět na sekci Architektura