The slides from the Europe Virtual ALT.NET Presentation on the CQRS EventStore v3:
http://blog.jonathanoliver.com/2011/10/eventstore-evan-presentation/
3. Finances the EventStore project
Started in 2006 (as Qualified Address)
All your street address are belong to us
My personal guinea pig
Fully geo-distributed
5. Hand-crafted SQL and stored procedures
Canonical data model
Application integration via shared database
Generated DAL
6. Temporal database design
Messaging
Breakthrough—Putting DBs in their place
Greg Young—InfoQ and DevTeach Videos
7. Capturing business intent
Rebuild state from events
Rewind, pause, fast-forward
Build alternate models
Immutable data is crazy scalable
Complete audit
8. It’s not a framework—I hate frameworks
It doesn’t permeate your code
You can swap it out and/or build your own
Nothing existed at the time—March 2009
Implementation reflects the developer
9. Goal: technology is an implementation detail
Transactions typically exist in SQL land
Lots of interesting alternatives appearing
Momentum around NoSQL increasing
Two-phase commit virtually non-existent
10. Absorbing transactions
Cross-resource transactional consistency
Commits
Exposing a robust, easy-to-use model
11. “Repository” App / Service Layer Dispatcher / Bus
EventStore
“ISession” commit
Event Stream
commit
“ISessionFactory” Event Store Pipeline Hooks
“NHibernate Magic”
Persistence Engine Serializer
Disk, DB, Memory, etc. Durable Storage
(Snapshotting and some advanced capabilities have been ommitted)
12. Transaction #1 Message Handler EventStore
Async Dispatch
Scheduler
commit ack
•Optimistic Concurrency
• Idempotency/De-duplication Disk
Transaction #2
Dispatch Messaging
Wire Protocol
Scheduler Technology
Mark as dispatched
Transaction #3
EventStore
Disk
13. Streams vs. Aggregates
Usage Example
Implementation
14. Pipes and filters
Filter out, modify, up-convert
Select, Precommit, and Postcommit
Implementation
15. Synchronous vs. Asynchronous
Any bus, broker, or messaging technology
Any serialization mechanism
Production example
Implementation
17. The primary storage engine
Easy to understand
Great management tools
Proven, mature implementation
10+ flavors (SQL Server, MySQL, SQLite, etc.)
Code
18. Easy alternative for .NET
Great commercial support
Great management tools
Responsive community + Oren/Ayende
Gotcha: 2PC and repeatable reads
19. Highly robust engine
Established as a primary NoSQL engine
Lots of management tools
Code