Exploring the main features of EventStoreDB the state transition database
Articles

Exploring the main features of EventStoreDB

Megan Armstrong  |  11 July 2023

What exactly is EventStoreDB? What makes it different from other operational databases? 

To answer this in a nutshell, EventStoreDB is an event based state transition database. It goes beyond traditional databases that store just the current state of your data; it retains the who, why and when of each state change. 

State changes are the most fundamental unit of data; from these, you can build up whatever use of data is needed - both now and in the future. Learn more about event based state transition and what makes EventStoreDB different in this webinar and this blog. 

Now you know more about what EventStoreDB actually is, let’s explore its main features and how they can benefit you. 

Guaranteed writes as your source of truth 

When you append data (events) into EventStoreDB, they are stored as a reliable log of the changes in your application. The change itself is stored as well as the context of the change. These changes represent a core asset of your business and can be streamed, replayed, and transformed into whatever shape you need.

EventStoreDB has been architected from the ground up as an operational database for your enterprise’s source of record/source of truth data. It assures your events are written to disk (and a quorum of follow nodes have as well) before returning successfully. As a database technology that has been running high value production workloads for over 10 years, securing and assuring data integrity is key a key aspect of EventStoreDB’s value proposition.

decoded

High availability: access what you need, when you need it 

Maintain continuous and uninterrupted access to your data even in the presence of node failures or network partitions in EventStoreDB by clustering; this is where the database operates as a cluster of nodes, with replication mechanisms syncronizing events across the cluster so each node contains a copy of the same event. This ensures data redundancy and fault tolerance. 

For append operations, your data will remain available provided at least half of the nodes in your cluster are alive and connected. For read operations, EventStoreDB will continue to serve requests as long as a single node is available. As such, even if some nodes fail, you’ll still get continuous data access. Providing this type of uptime is key for modern, global operational systems needing to operate 24X7 access.

The power of projections

Projections in EventStoreDB provide a powerful toolset so you can set up queries that react to events as they are written, plus filter and transform data from one more streams into new streams. Often, projections are used to transform lower level events (e.g. an order line item is added or changed) to higher level, course grain event (e.g. an order is now complete). The resulting streams can be used in other projections, creating a real time pipeline capability for processing events.

As such, you can build sophisticated, event-driven systems with real-time data processing and analytics capabilities, without the need to directly modify source data. You’ll also gain new, meaningful data representations from your event streams, facilitating more informed decision-making and insights into your application’s behaviour. 

A concurrency model

In EventStoreDB, optimistic concurrency checks are performed by the server to maintain data consistency when multiple clients attempt to write events to the same stream concurrently. 

It does this through versioning; each stream has a version number. With optimistic concurrency, the client assumes that the stream’s version it last read is still corresponding when writing new events. This is specified as part of the append request and the client expects the stream’s version to match what’s provided. 

When multiple clients are appending events to the same stream, the server processes the requests in the order they are received. If the expected version doesn’t match the current version of the stream, the server will detect a concurrency conflict. In this instance, an exception will be returned to the client to handle how to proceed. 

Managing streams this way avoids unintended data overwrites, maintaining data consistency and integrity in the event stream. 

Performance that scales

EventStoreDB helps with performance and scalability in multiple ways. First and foremost, applications written on EventStoreDB are architected by default to write the minimum amount of information synchronously (the part you have to wait for) and querying/reading asynchronously. Write can be optimized separately than reads improving the scalability characteristics of most systems.

From a pure log performance perspective, EventStoreDB is designed to deliver high performance and efficiency - even under demanding workloads and as data volumes increase. The performance of EventStoreDB can be fine-tuned through configuration settings to optimise its behaviour for your specific use case and hardware setups. 

Maintaining this performance is crucial for complex event sourcing systems, with the continuous generation of events and the need to capture state changes. Moreover, as businesses increasingly require real-time data and analytics, you can be certain that EventStoreDB can support you. 

Try eventstoredb

Choose a deployment method that aligns with your infrastructure

As an open source technology, EventStoreDB can be deployed:

  • In your production environment and managed by you or
  • In Event Store Cloud, where our expert team will manage your clusters for you, so you can concentrate on building exceptional software

Event Store Cloud allows you to take advantage of the operational best practices that have evolved managing EventStoreDB as well as take advantage of the latest features across the cloud and database feature set as they emerge.

Work in your preferred language

Client SDKs based on the gRPC framework are available for most of the major languages and platforms - including .NET, Java, Go, Node (Javascript, Typescript), Python, and Rust.  These can be mixed and matched based on your needs. You can therefore choose which works best for you and easily integrate EventStoreDB into your projects, regardless of your tech stack.

Support when you need it 

Multi-tiered support plans with response times to fit your needs are available, so you can access dedicated assistance and additional tools to ensure the smooth operation of your EventStoreDB instances.

This is key for mission-critical applications, enterprise use cases, and projects that require a high level of confidence in the reliability of the database.

Learn more about support.

Harness the true power of event driven architecture with Event Store

You now understand some of EventStoreDB’s top features and why it’s an important source of truth for your business. So why not download the open source version and get started?

Try eventstoredb

 


Photo of Megan Armstrong

Megan Armstrong Megan Armstrong is the Content Marketing Manager at Event Store Ltd.