Mongo implementation for Sagas

Since mongo is becoming a nosql first class citizen for axon framework, any plans to implement saga persistance with it? where the scheduling engine would leverage persistance from a nosql repository like mongo.

The scenario is that if any software project is going a nosql route and mongo is already supported persistance mechanism, it would be very neat to have saga repository for mongo as all replicaset type multinode persistance instance of different repositories used by an application and axon would be uniform/consistent in same multinode infrastructure for maintainence. Currently, both JPA and mongo would have to be used by developer and have to maintain multiple persistance infrastructure.

Am I missing something? Any thoughts, ideas?

Cheers

Also, one more point is that schedule persistance (Quartz) need to be also consistent with the nosql mongo persistance strategy leveraging horizontal scaling and multinode infrastructure.

Any thoughts?

Cheers

Hi,

all very valid points. If Mongo is really becoming a 1st class citizen of Axon, I will surely provide repository implementations for Sagas using MongoDB as well. And I can imagine you’d want to use Mongo for most persistent data…

However, it seems that Mongo is not very suitable as an Event Store. Although it performs a little better than a relational database, it seems that Mongo’s power is in inconsistent reads, which might be fine for a query DB, but not for an event sotre. I am currently looking at Redis, a key-value store that allows several constructs as value.

Scalability is the key for Axon in the time to come. So I’ll expect to be doing a lot more investigation to find the best implementation for all these components.

To be continued…

Cheers,

Allard

Have you considered Apache cassandra (leveraged by facebook, twitter, Rackspace) and open sourced by facebook. Lot of buzz around its scalability compared to Google’s bigtable and Amazon SimpleDb?

Cheers…

Hi,

Cassandra is definitely on the radar as well. However, similarly to Mongo, Cassandra’s power is really unleashed when you allow for inconsistent reads.

Quite soon, I’ll create a test fixture and try what the different solutions provide in terms of performance and consistency guarantees (which is cruicial for an Event Store). I will be comparing SQL solutions with NoSQL solutions like Riak, Redis, Mongo, Cassandra and perhaps Membase.

Cheers,

Allard

Hi Allard

I was just wondering if you got around to making the definitive NoSQL comparative study you mentioned? :slight_smile:

/Mads

Hi Mads,

the test fixtures are there, but so far, I have only run them against JPA/MySQL, filesystem, Redis and Mongo. I know there is a Cassandra implementation event store made by a community member (see https://github.com/mingfang/AxonFramework/tree/master/cassandra), but I didn’t have time to evaluate or benchmark yet.

A lot has happened since April 2011, but unfortunately not a lot of NoSQL implementation…

Cheers,

Allard