Download presentation
Presentation is loading. Please wait.
1
Event Store and Web Applications Greg Young @gregyoung
3
Purchase Order Line Items (n) Shipping Information
4
Cart Created 3 Items Added Shipping Information Added
5
Purchase Order AddItemCommand ChangeAddressCommand AddItemCommand
7
Cart Created 3 Items Added 1Item Removed Shipping Information Added
9
6 5 4 3 2 1 7
10
5 snap 4 3 2 1 6
12
A single model cannot be appropriate for reporting, searching, and transactional behaviors…
13
Focus on strategic design first.
14
There is no “best” storage.
15
Focus on strategic design first.
16
A single data model is almost never appropriate. 3+ is common!
17
Focus on strategic design first.
18
IdParentIdData 10Parent 21Child1 31Child2
19
Focus on strategic design first. IdParentId0ParentId1ParentId2ParentId3ParentId4Data 100000Parent 210000Child1 312000Child2
20
Wrong models cause massive accidental complexity
21
Client Domain Bus OLAP GraphDb StreamProcessing publish 3nf Hibernate
22
Client Domain Bus OLAP GraphDb StreamProcessing publish 3nf Hibernate
23
Client Domain Bus OLAP GraphDb StreamProcessing publish 3nf Hibernate New Model?
24
Client Domain OLAP GraphDb StreamProcessing Events
25
Client Domain OLAP GraphDb StreamProcessing Events New Model
26
Client Events Client Any Producer
27
All streams are Atom Feeds
28
Atom feeds seem inefficient, are they?
29
Get Head of Stream
30
Reply with first/last links
31
Event stream 'newstream' http://127.0.0.1:2113/streams/newstream 2013-06-29T14:45:06.550308Z EventStore
32
Get Head of Stream Reply with first/last links Get Document with Links
33
Get Head of Stream Reply with first/last links Get Document with Links Reply Document with Links to Events
34
0@newstream http://127.0.0.1:2113/streams/newstream/0 2013-06-29T14:45:06.550308Z EventStore event-type 1@newstream http://127.0.0.1:2113/streams/newstream/1 2013-06-29T14:45:06.550308Z EventStore event-type
35
Get Head of Stream Reply with first/last links Get Document with Links Reply Document with Links to Events Get /streams/foo/events/1
36
Get Head of Stream Reply with first/last links Get Document with Links Reply Document with Links to Events Get /streams/foo/events/1 Reply Document with Links to Events
37
Get Head of Stream Reply with first/last links Get Document with Links Reply Document with Links to Events Get /streams/foo/events/1 Get /streams/foo/events/2 Reply Document with Links to Events
38
Get Head of Stream Reply with first/last links Get Document with Links Reply Document with Links to Events Get /streams/foo/events/1 Get /streams/foo/events/2 Reply Document with Links to Events
39
Much is forgotten here.
40
Http KeepAlives
41
Http Pipelining
42
Intermediaries!
43
Content Type Negotiation!
44
Get Head of Stream
45
Reply with first/last links
46
Get Head of Stream Reply with first/last links Get Document with Links Reply Document with Links to Events
47
Get Head of Stream Reply with first/last links Get Document with Links Reply Document with Links to Events Get /streams/foo/events/1 Get /streams/foo/events/2 Accept: app/json Accept: app/xml
48
Get Head of Stream Reply with first/last links Get Document with Links Reply Document with Links to Events Get /streams/foo/events/1 Get /streams/foo/events/2 Reply Document with Links to Events Accept: app/json Accept: app/xml ContentType: app/json ContentType: app/xml
49
ES-LongPoll: 30
50
Client Events Client Any Producer
51
Client Events ua Client Any Producer Nginx nyc Nginx vno
52
{ rewritePattern : “/mystuff/{stream}/{event} }
53
Accept security_summary Accept: security_detail Accept: security_raw Events Security Master Security Handler
54
Accept security_summary Accept: security_detail Accept: security_raw Events Security Master Security Handler Accept: security_detail2?
55
Browser Events Browser Validate IndexDb AtomPub
56
Browser Events Browser Validate IndexDb AtomPub
57
Browser Events Browser Validate IndexDb AtomPub
58
Browser Events Browser Validate IndexDb AtomPub
59
Browser Events Validate IndexDb AtomPub
60
Browser Events Validate IndexDb AtomPub
61
A single model cannot be appropriate for reporting, searching, and transactional behaviors…
62
Atom feeds are efficient on a massive scale
63
There is no “best” storage.
64
Event Store is BSD-3 OSS
65
Questions?
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.