The stream database built for event sourcing
What is event sourcing?
Event-sourced systems store data as a stream of events, rather than just storing current state. When a change occurs in event sourcing, instead of updating the state, a new event is added to the stream. Replaying the event stream allows you to determine the current state.
Benefits of event sourcing
There is a huge array of benefits of using event sourcing, not least being able to see a full history of changes that is highly valuable in sectors like finance and government that require accurate audit logs. Below we've listed the top benefits of event-sourced data models.
Audit
Event Store stores your data as a series of immutable events over time, providing one of the strongest audit log options available (characteristics similar to a blockchain)
Time travel
All state changes are kept, so it is possible to move systems backward and forwards in time which is extremely valuable for debugging and “what if” analysis
Root cause analysis
Business events can be tied back to originating events providing traceability and visibility of entire workflows from start to finish
Event-driven architecture: realtime streams
Unlike traditional databases which optimize pooling data into opaque silos, event streams can be listened to, allowing businesses to react in real-time to events
Service autonomy
If a service goes down, event sourcing allows the dependent services to “catch up” when the source comes back up - because events are stored in a sequence in the stream, knowing the current position allows synchronization
Replay and reshape
The series of changes (events) in a stream can be replayed and transformed as new business requirements inevitably emerge - e.g. the event stream can be replayed to a point in time and “what if” analysis can be used to project potential future outcomes
Legacy migration
Event sourcing can enable the migration of legacy systems to modern distributed architectures in an incremental manner, gradually replacing specific pieces of functionality with event-sourced services (strangler pattern) - existing read paths of the legacy system can remain in place while writes are directed to the new event-sourced services
Asynchronous first
Event sourced systems strive for the minimum amount of synchronous interaction - consistency boundaries are consciously chosen so that business requirements are met and everything else is eventually consistent - this results in responsive, high performance, scalable systems
Occasionally connected
Since event sourcing keeps a log of the state changes of an application, it can be used in occasionally connected system scenarios - when a device is disconnected it can continue to work on its own data locally and synchronize upon connection
Observability
In event-sourced systems, events flow through queues and streams increasing observability - what is uniquely powerful in the event sourcing context is the events contain the business context
One way data flow
Data in a CQRS/event-sourced system flows one way (through independent models to update or read information) - this brings an improved ability to reason about data and debug as each component in the data flow has a single responsibility
Fault tolerance
Event streams are fundamentally just logs with strong backup and recovery characteristics - writing just the core “source of record” data to the event stream enables the rebuilding of the downstream projections - Event Store itself is also a distributed database technology with failover if a leader fails
Why use Event Store?
Event Store is an industrial-strength database technology that stores your critical data in streams of immutable events allowing you to realize the powerful benefits of the event sourcing design pattern. It was built specifically for event sourcing - we believe that makes it the best solution in the market for building event-sourced systems.
It’s offered as open-source software so it’s free to use. And with our tutorials it’s easy to get started - you’ll have a demo application to write and read events in minutes.
Main features
- Guaranteed writes
- High availability
- Projections
- Multiple client interfaces
- Optimistic concurrency checks
- Subscribe to streams with competing consumers
- Great performance that scales
- Multiple hosting options
- Commercial support plans
- Immutable data store
- Atom subscriptions
Who uses Event Store?
Hundreds of companies around the world run production applications built on Event Store. These companies depend on the power and immutability of data that Event Store gives them.
Learn Event Store
It’s easy to get started with Event Store.
If you are a new user, follow our getting started guide for step-by-step instructions on downloading and installing Event Store, and writing sample applications to write and read events.
If you know the basics but want to know more, check out our tutorials for in-depth guides on specific features or use cases of Event Store, our docs section for technical documentation, or head over to the Google Group where we have an active community of users.