An Event Store (ES) is a database for storing events in an Event Sourcing System (ESS). Instead of storing current state, a very common way to persist data, an ESS captures all changes to an application state as a sequence of events - not only delta of state, but when and why the state was changed. Event Sourcing is considered a part of Domain Driven Design.
One of the advantages when using ESS is projections. A projection listens to events and constructs a read-only view of desired data, for example a database table only containing specific information for a particular view in the GUI. This separation of concerns is called Command Query Responsibility Segregation, CQRS. In ESS, the commands are creating events and queries reads from projections.
The ES persists all events in the domain, and is therefore an append-only database. Usually the ES is a relational database that has the advantage of transactions when writing events. Scaling a relational database is not trivial.
To improve scalability, fault tolerance and performance, our thesis is that using Riak would improve all of these points compared to using a relational database as an Event Store.
The overall goal is to evaluate the Open Source database Riak as a viable Event Store.
- Getting a thorough understanding of how a Event Sourcing System works.
- Understanding how the Open Source project Sandthorn implements ESS, including the SQL Event Store.
- Studying the NoSQL database Riak and understanding the differences to relational databases.
- Creating a Sandthorn Event Store using Riak in the Ruby language.
- Studying how to evaluate an Event Store in terms of performance, scalability and fault tolerance.
- Evaluate differences in performance, scalability and fault tolerance between the SQL Event Store and the created Riak Event Store.
- The evaluation methods should be reusable when evaluating other persistance mechanimsm in the future.
Good knowledge of Ruby and relational databases are mandatory.
Lars Krantz [email protected] Tel: +46709468080 UpptecOn AB Stortorget 13A 216 20 Malmö
Upptec supplies a SaaS for valuations in the insurance industry. We are based in Malmö, Sweden and have seven employees.