The database built for Event Sourcing

Persist your application data as streams of events with our open-source database, the best data storage solution for event-sourced systems. Available for free download on most platforms or use our managed service Event Store Cloud.

EventStoreDBEvent Store Cloud
  • bene-audit-sm@2x
    Audit An event-sourced system stores your data as a series of immutable events over time, providing one of the strongest audit log options available.
  • bene-time-sm@2x
    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.
  • bene-root-sm@2x
    Root cause analysis Business events can be tied back to their originating events providing traceability and visibility of entire workflows from start to finish.
  • bene-fault-sm@2x
    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 downstream projections. EventStoreDB is a distributed database technology with failover if a leader fails.
  • bene-event-sm@2x
    Event-driven architecture Traditional approaches gather data in discrete areas to be called on only when needed. An event-driven approach can be more efficient by immediately reacting to new published information. Event streams can create notifications about new events, and by subscribing to the stream, business can react to these changes in real-time. This allows for easier modelling and building complex business workflows.
  • bene-async-sm@2x
    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.
  • bene-auto-sm@2x
    Service autonomy If a service goes down, dependent services can “catch up” when the source comes back up. Because events are stored in a sequence in the stream, synchronization can be achieved when each service is back online.
  • bene-replay-sm@2x
    Replay and reshape The series of events in a stream can be replayed and transformed to provide new insight and analytics, e.g. the event stream can be replayed to a point in time and a “what if” analysis can be used to project potential future outcomes.
  • bene-observe-sm@2x
    Observability In event-sourced systems, events flow through queues and streams, allowing for unprecedented observability. What is uniquely powerful is that the events can contain the business context which allows real-time analytics.
  • bene-connect-sm@2x
    Occasionally connected Since there is a log of all 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.
  • bene-flow-sm@2x
    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.
  • bene-legacy-sm@2x
    Legacy migration Migration of legacy systems to modern distributed architectures can be carried out incrementally, gradually replacing specific pieces of functionality with event-sourced services. Existing read paths of the legacy system can remain in place while writes are directed to the services.

What is Event Sourcing?

Event Sourcing is an alternative way to persist data in which all changes in a system are stored as an immutable series of events in the order that they occurred. The current state is derived from that event log.

This contrasts with state-oriented persistence that only keeps the latest version of the entity state; when changes occur in "traditional" database systems, the state is updated and the history, along with the reason for the change, is lost.

In event-sourced systems, whenever an action occurs that changes the state of a business entity (for example an order is marked as shipped), the system will publish an event to the stream describing what has happened (as per the example, the event might be OrderShipped). In EventStoreDB, additional metadata can also be stored in each event such as a timestamp, what action caused the event, and who performed that action.

The stream (or streams: EventStoreDB allows you to define and create many streams as required for your domain model) comprises a log of all events that have occurred, and by replaying them the current state can be derived. That can output the same end-result as in a traditional database, but it can also provide much more; you can perform additional tasks such as time travelling through the system and root cause analysis. And being immutable it provides one of the strongest methods for audit log available.

Read our beginner's guide to Event Sourcing


Main features of EventStoreDB

EventStoreDB's core database server is used in production systems worldwide. The core features make it the ideal database choice for building event-sourced systems. It’s available 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.

  • Guaranteed writes
  • Multiple client interfaces
  • Great performance that scales
  • Immutable data store
  • High availability
  • Optimistic concurrency checks
  • Multiple hosting options
  • Atom subscriptions
  • Projections
  • Subscribe to streams with competing consumers
  • Commercial support plans
  • enterprise-support

    Support Plans

    Protect your business-critical systems with technical support from the team behind EventStoreDB. Plans for every stage of project from proof of concept to successful operation in production, with a range of SLAs to suit startups to enterprise organizations worldwide.

    View our support plans
  • prod-consulting


    We use our years of experience helping customers with their event-sourced systems to provide implementation and development consulting that helps you get the most from your Event Sourcing project. Tell us your requirements and we'll provide a bespoke plan and quote.

    Explore consulting packages
  • prod-training


    Learn Event Sourcing, CQRS, DDD, and EventStoreDB with our professional training courses for developers and software architects. In addition to our regular public training courses, we can also provide private courses and bespoke training for your team.

    Find a training course

Learn EventStoreDB

It’s easy to get started with EventStoreDB.

If you are a new user, follow our getting started guide for step-by-step instructions on downloading and installing EventStoreDB, 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 EventStoreDB, our docs section for technical documentation, or head over to the community forum where we have an active community of users.

Getting started guideTutorials