Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Storing data as a sequence of events (RubyConfAt)
Search
Łukasz Reszke
May 31, 2026
Programming
19
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Storing data as a sequence of events (RubyConfAt)
Łukasz Reszke
May 31, 2026
Other Decks in Programming
See All in Programming
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
160
Oxlintのカスタムルールの現況
syumai
6
1.2k
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
14
6.6k
エージェンティックRAGにAWSで入門しよう!
har1101
9
1.9k
ランチタイムLT会3周年!ランチタイムLT会を3年間続けられたお話
y0hgi
1
120
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
820
Oxcを導入して開発体験が向上した話
yug1224
4
370
なぜ型を書くのか? TSKaigi2026で改めて考える #tskaigi_smarthr
kajitack
0
180
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
290
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
8
3.9k
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
1
540
スマートグラスで並列バイブコーディング
hyshu
0
270
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.5k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
How GitHub (no longer) Works
holman
316
150k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
490
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Claude Code のすすめ
schroneko
67
230k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
170
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
250
The Spectacular Lies of Maps
axbom
PRO
1
840
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Transcript
Helping Rails apps since 2007 a boutique consultancy specializing in
Ruby expertise
Relational Database
CRUD
Change = State Overwrite
Admit.
Information is lost
WHAT IT IS NOW
HOW WE GOT THERE
HOW WE GOT THERE
Alternative for saving data as snapshot
Storing state as sequence of facts
Facts == Events
Event Sourcing
ONE THING TO REMEMBER FROM THIS PRESENTATION
Event Sourcing is just another persistence technique.
Event
Events are kept in Event Store
Append only log
Immutable
Event <-> Stream
None
None
None
None
None
None
None
None
None
None
None
None
None
HOW WE GOT THERE?
None
None
None
One to Many
Load the state Make decision Publish an event (new state)
Consolidate events into streams to answer interesting business questions
None
None
None
None
None
None
None
None
None
None
None
Event Store… DB?
Rails Event Store Backed up and maintained by
Started in 2015
Based on Database that you already use
Two Tables Events and Events in streams
Comes with migrations
Comes with event browser
Case - Warehouse
Shipment
Packing
Mistakes happen
Information?
shipment.status == :packed
So it’ll be billed for packing…
So it’ll be billed for packing… Once
Demo
Benefits - State change history recorded as sequence of events
- ZERO DATA LOSS - Auditability - Reconstructing state - Makes debugging easier
Check it out at railseventstore.org
THANK YOU! Łukasz Reszke