EventStoreDB is an event-native database that goes beyond traditional databases that store just the current state of your data. EventStoreDB 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.
Let’s explore the main features of EventStoreDB and how they can benefit you.
EventStoreDB has many advantages over a traditional, relational database when it comes to unlocking the true power of Event Sourcing.
When you append 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. With EventStoreDB events are written to disk making it ideal for a “source of truth” database.
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 synchronizing 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.
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.
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.
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.
For more information on EventStoreDB visit our Documentation site.
EventStoreDB is designed not only for modern microservices software architectures, but plays a crucial role in modernizing existing legacy systems.
As an open source technology, EventStoreDB can be deployed:
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.
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.
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.
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?