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
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
Discordを用いたラボオートメーション関連情報収集の自動化
noguhiro2002
0
470
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
460
DynamoDBの基礎を振り返りながらベクトル検索機能を理解する
musan
3
250
不幸な GC
chencmd
0
820
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.8k
typoなんかねぇよ
raspython3
0
620
Pythonの実行はどこまで賢くなったのか? CPythonとPyPyから見る最適化のしくみ
curekoshimizu
4
2.3k
思考垂れ流し開発 ~音声入力 × AIエージェント × 開発ハーネスによる試行錯誤~
npostring
0
450
AI駆動開発にグラフDBを重ねてみた
satoshi256kbyte
1
400
異なる設計思想のフレームワークを経験して得た学び
amekuhideki
2
880
レビュー履歴をAIに食わせて、 Compose移行を加速するs
shihochan
0
240
【QA Test Talk Vol.8】AI-DLC による Whole Team Approach の加速
pkshadeck
PRO
0
260
Featured
See All Featured
Embracing the Ebb and Flow
colly
88
5.1k
Bash Introduction
62gerente
615
220k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
670
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Technical Leadership for Architectural Decision Making
baasie
3
540
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
A better future with KSS
kneath
240
18k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
460
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
45k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
670
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