Recently I'm learning CQRS and want to change my system to use event-sourcing patterns.
But I found that on .Net platform, there is two Event Store implementations.
The two implementations confuse me - can someone please explain the key differences between them.
EventStoreDB is an industrial-strength Event Sourcing database that stores your critical data in streams of immutable events. It was built from the ground up for Event Sourcing and offers an unrivaled solution for building event-sourced systems.
On the technical level, event sourcing can be implemented using dedicated storage systems, as well as general-purpose "NoSQL" and SQL databases. If you're interested in the origins of event sourcing, the articles by Greg Young on event sourcing and CQRS are a great place to start.
Event stores are the database category that is natively focused on storing events. Usually, they do that by having the append-only log as the central point. An event store is a different kind of database from traditional databases (graph, document, relational etc).
Event Sourcing ensures that all changes to application state are stored as a sequence of events. Not just can we query these events, we can also use the event log to reconstruct past states, and as a foundation to automatically adjust the state to cope with retroactive changes.
NEventStore is a persistence agnostic event sourcing library for .NET with multiple storage options such as relational and document databases.
EventStoreDB is a newer and high performing event sourcing solution with its own persistence engine and API's for multiple protocols and languages. It has open source and commercial options.
As far as I know you can use EventStoreDB as a persistence engine for NEventStore in a future version of NEventStore as well.
Additionally to mentioned EventStoreDB and NEventStore there is relatively new SQLStreamStore library, that conceptually similar to NEventStore.
They have a few essential differences, but historically SQLStreamStore can be consider as a successor of NEventStore. The author of the SQLStreamStore damianh previously was a maintainer of NEventStore. The latest release of NEventStore was 15 Mar 2014, SQLStreamStore is actively developing.
For more details why SqlStreamStore was created see the answer SQLStreamStore vs NEventStore vs EventStore #108
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With