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
Event Store Launch
Search
eventstore
September 17, 2012
Programming
380
1
Share
Event Store Launch
eventstore
September 17, 2012
Other Decks in Programming
See All in Programming
Swift Concurrency Type System
inamiy
0
490
2026_04_15_量子計算をパズルとして解く
hideakitakechi
0
100
Claude Code × Gemini × Ebitengine ゲーム制作素人WebエンジニアがGoでゲームを作った話
webzawa
0
100
Cache-moi si tu peux : patterns et pièges du cache en production - Devoxx France 2026 - Conférence
slecache
0
210
LM Linkで(非力な!)ノートPCでローカルLLM
seosoft
0
480
Alternatives to JPA 2026
debop
0
110
Running Swift without an OS
kishikawakatsumi
0
810
PHPで TLSのプロトコルを実装してみるをもう一度しゃべりたい
higaki_program
0
200
Vibe NLP for Applied NLP
inesmontani
PRO
0
410
ローカルで稼働するAI エージェントを超えて / beyond-local-ai-agents
gawa
3
270
実践CRDT
tamadeveloper
0
550
事業会社でのセキュリティ長期インターンについて
masachikaura
0
250
Featured
See All Featured
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
270
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
260
Prompt Engineering for Job Search
mfonobong
0
260
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
190
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
180
How GitHub (no longer) Works
holman
316
150k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.9k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
270
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
61
43k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
120
Transcript
The Event Store 17th September 2012 Release! Skills Matter, London
Agenda • Demo • How to interact with the Event
Store • Internal architecture, decisions made • Something else… • Summary • Questions
DEMO TIME!
There are only 24 bytes of mutable data in the
Event Store
There are only 24 BYTES of mutable data in the
Event Store
Transaction File All data goes into a constantly appending file.
Transaction File Last Disk Flush
Transaction File Last Disk Flush Last Indexed
Transaction File The file is built up of many smaller
chunks of files.
Transaction File Chunk 1 Chunk 0
Transaction File Chunk 1 (1MB) Chunk 3 (1MB) Chunk 2
(1MB)
Scavenge 7 6 5 4 3 2 1 0 Index
has (1,2,7) deleted Scavenge 6 5 4 3 0 6 à 4 5 à 3 4 à 2 3 à 1 0 à 0
Transaction File Chunk 1 (1MB) Chunk 3 (1MB) Chunk 2
(1MB) Chunk 1a (1MB-) (items removed)
Transaction File Chunk 3 (1MB) Chunk 2 (1MB) Chunk 1a
(1MB-) (items removed)
TF Scavenge TF Chunks are immutable once written.
TF Scavenge Allows indexes and data storage to be scavenged
separately.
Indexes There is only one index in the Event Store.
Indexes Entries in index are 20 bytes each. (so 1
billion items is 20GB!)
Memtable 1 (up to 1M)
Memtable 1 (up to 1M) Ptable 1 (1M) Last Disk
Write
Memtable 1 (up to 1M) PTable 1 (1M) Last Disk
Write
PTable 01 (1M)
PTable 02 (1M) PTable 01 (1M)
PTable 03 (1M) PTable 02 (1M) PTable 01 (1M)
Merge
PTable 11 (4M)
PTable 11 (4M) PTable 01 (1M)
PTable 11 (4M) PTable 01 (1M) PTable 02 (1M)
PTable 03 (1M) PTable 11 (4M) PTable 01 (1M) PTable
02 (1M)
Merge
PTable 11 (4M) PTable 12 (4M)
PTable 11 (4M) PTable 01 (1M) PTable 12 (4M)
PTable 11 (4M) PTable 01 (1M) PTable 02 (1M) PTable
12 (4M)
PTable 03 (1M) PTable 11 (4M) PTable 01 (1M) PTable
02 (1M) PTable 12 (4M)
Indexes Indexes are immutable!
Indexes Reads have no locks!
No toasting of drives!
Simple When you look at what you have done and
think “Wow, it’s really simple” you have probably done something right.
Benchmarks! All benchmarks should be taken lightly for any system.
Usually they are biased!
Benchmarks! • Have indexed over 1B items with log(n) performance
Benchmarks! • Have indexed over 1B items with log(n) performance
• Writes! 15,000+/sec over TCP
Benchmarks! • Have indexed over 1B items with log(n) performance
• Writes! 15,000+/sec over TCP • Reads! 50,000+/sec over TCP
Pure async is good.
You can do a lot on one thread.
Immutability is good.
WAT?
There is an entire query language!
Projections Handle( Handle( Handle(state, Created), Deactivated), Closed)
Projections State, Event à State
Projections from_all().when( AccountCreated: function(state,event) { state.Name = event.CustomerName; state.Balance =
0; }, TransactionOccurred: function(state,event) { state.Balance += event.value; } );
Projections fromAll() fromStream(x,y,z) foreach(account)
Projection Indexes Link Link Link Link
Projection Indexes from_all().when_any( function(state, event) { emit(‘/streams/’ + event.Type, link_to(event));
} );
DEMO TIME!
Questions?
THANKS!
Coming 31st October
ONE YEAR FREE SUPPORT On all appliances ordered before 31st
October!
None