Exjobbsförslag från företag

Detta är ett uppsatsförslag hämtat från Nationella Exjobb-poolen. Klicka här för att komma tillbaka till samtliga exjobbsförslag.

Förslaget inkom 2011-11-29

Investigating Ways To Build CQRS Read Models

Investigating Ways To Build CQRS Read Models

Traditionally, business applications have been developed by designing a database, and having objects that are read, passed down to the user interface, updated and then written back to the database. A new approach to developing business applications makes the read operations and the write operations belong to distinct APIs. This is called CQRS, Command/Query Responsibility Segregation. (Commands are objects representing the writes, and Queries handle the reads.) The resulting structure of the application allows write side and read side to evolve independently, and frees the developers from a number of common problems of the traditional approach.

Going one step further, the read side and the write side can have different databases, with events being passed from the write side to the read side in order to keep it up to date. In fact, the write side can switch from storing just the current state of the application to storing all such events that have ever been sent. This latter technique is called event sourcing, and frees the development team from the tyranny of a single shape of the business data. The data can then be re-shaped and re-interpreted to meet future requirements, based on the stored events. This allows for much more nimble and agile application development.

CQRS and Event Sourcing have been around for a long time, but are only now catching on in the business world. It is time to learn about these highly applicable concepts.

One challenge of this is that many developers are simply used to being able to write queries against a shared read/write database to obtain data. The goal of this exjobb is to invesgitate ways to make it easy to derive a read model from an event stream. This may involve a declarative approach, making it possible to get a read model without writing a lot of code. The read model may be a SQL database, some kind of noSQL solution, or even just mapping events to update an XML file or Excel sheet.

Some possible direction include:

Simple mapping from event values to table columns
More complicated relationships, such as JOINs and derived values, or tables with interdependencies
Support for upgrading events from one version to another
Investigating MapReduce approaches
Collecting event handlers into projections

The project will be developed using C# on .NET.

Du bör läsa till civilingenjör med inriktning mot data.


Informationen om uppsatsförslag är hämtad från Nationella Exjobb-poolen.