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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
eventstore
September 17, 2012
Programming
380
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Event Store Launch
eventstore
September 17, 2012
Other Decks in Programming
See All in Programming
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
370
ふつうのFeature Flag実践入門
irof
8
4.2k
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.3k
AIで効率化できた業務・日常
ochtum
0
150
はてなアカウント基盤 State of the Union
cockscomb
1
970
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
190
どこまでゆるくて許されるのか
tk3fftk
0
270
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
240
トークンをケチるな、設計しろ:GitHub Copilotを賢く使うコンテキスト戦略
ochtum
0
220
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4.2k
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
320
dRuby over BLE
makicamel
2
390
Featured
See All Featured
Information Architects: The Missing Link in Design Systems
soysaucechin
0
980
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
Side Projects
sachag
455
43k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
350
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
310
Optimising Largest Contentful Paint
csswizardry
37
3.7k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
260
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
260
A Soul's Torment
seathinner
6
3k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
620
The Mindset for Success: Future Career Progression
greggifford
PRO
0
370
4 Signs Your Business is Dying
shpigford
187
22k
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