Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NoSql database for domain events

We are planning to implement our own custom event-store to persist our domain events, for a huge banking system (millions of events). There are many types of NoSql data-stores, and each of them seems to respond to a specific use-case : document, columns-based, key-values, etc...

We don't want to spend time managing indexes, and, in a second time, we would like to be able to feed our BI reporting system from that store.

What kind of store do you think is the most appropriate for us ?

like image 749
Rénald Avatar asked Jun 12 '16 08:06

Rénald


2 Answers

My expectation is that you should be investigating GetEventStore; why roll your own when there is an open source effort with commercial support already available?

As it happens, today is the 4th anniversary of Gabriel Schenker's series on creating an event store.

Konrad Garus wrote about using PostgresSQL (with followup discussion on reddit). As did Jeremy Miller.

Adam Warski describes a MongoDB implementation.

Erik Rozendaal writes up a Redis store.

like image 119
VoiceOfUnreason Avatar answered Dec 29 '22 01:12

VoiceOfUnreason


Full support for GES (we use it for event sourcing), plus, for curiosity, you might want to look at:

  • Marten - using PostgreSQL as document-style storage and as event store. Work in progress by already mentioned Jeremy Miller
  • Streamstone - event store on Azure Table Storage
  • Old good NEventStore is "persistent agnostic" and has adapters for many popular databases

Usually what you will be looking for is:

  • ACID transactions
  • Subscriptions in order to be able to have projections derived directly from the event store
  • Projections inside the event store for advanced stuff or to replace/complement the previous point

As per now only GES has all these features without deploying anything else.

like image 36
Alexey Zimarev Avatar answered Dec 28 '22 23:12

Alexey Zimarev