EventStoreDB is the event-native database, where business events are immutably stored and streamed. Designed for event-sourced, event-driven, and microservices architectures
- What is EventStoreDB
- What is EventStore Cloud
- Licensing
- Documentation
- Getting started with EventStoreDB
- Getting started with EventStore Cloud
- Client libraries
- Deployment
- Communities
- Contributing
- Building EventStoreDB
- Need help?
EventStoreDB is a new category of operational database that has evolved from the Event Sourcing community. Powered by the state-transition data model, events are stored with the context of why they have happened. Providing flexible, real-time data insights in the language your business understands.
Download the latest version. For more product information visit the website.
Event Store Cloud is a fully managed cloud offering that's designed to make it easy for developers to build and run highly available and secure applications that incorporate EventStoreDB without having to worry about managing the underlying infrastructure. You can provision EventStoreDB clusters in AWS, Azure, and GCP, and connect these services securely to your own cloud resources.
For more details visit the website.
View Event Store Ltd's licensing information.
For guidance on installation, development, deployment, and administration, see the User Documentation.
Follow the getting started guide.
Event Store can manage EventStoreDB for you, so you don't have to run your own clusters. See the online documentation: Getting started with Event Store Cloud.
This guide shows you how to get started with EventStoreDB by setting up an instance or cluster and configuring it. EventStoreDB supports two protocols: gRPC-based (current) and TCP-based (legacy).
- Python: pyeventsourcing/esdbclient
- Node.js (javascript/typescript): EventStore/EventStore-Client-NodeJS
- Java: (EventStore/EventStoreDB-Client-Java
- .NET: EventStore/EventStore-Client-Dotnet
- Go: EventStore/EventStore-Client-Go
- Rust: EventStore/EventStoreDB-Client-Rust
- Read more in the gRPC clients documentation
- Elixir: NFIBrokerage/spear
- Ruby: yousty/event_store_client
Read more in the documentation.
- Event Store Cloud - steps to get started in Cloud.
- Self-managed - steps to host EventStoreDB yourself.
Development is done on the master
branch.
We attempt to do our best to ensure that the history remains clean and to do so, we generally ask contributors to squash their commits into a set or single logical commit.
If you want to switch to a particular release, you can check out the release branch for that particular release. For example:
git checkout release/oss-v22.10
EventStoreDB is written in a mixture of C# and JavaScript. It can run on Windows, Linux and macOS (using Docker) using the .NET Core runtime.
Prerequisites
Once you've installed the prerequisites for your system, you can launch a Release
build of EventStore as follows:
dotnet build -c Release src
The build scripts: build.sh
and build.ps1
are also available for Linux and Windows respectively to simplify the build process.
To start a single node, you can then run:
dotnet ./src/EventStore.ClusterNode/bin/x64/Release/net8.0/EventStore.ClusterNode.dll --dev --db ./tmp/data --index ./tmp/index --log ./tmp/log
You can launch the tests as follows:
dotnet test src/EventStore.sln
You can also build a Docker image by running the command:
docker build --tag myeventstore . \
--build-arg CONTAINER_RUNTIME={container-runtime}
--build-arg RUNTIME={runtime}
For instance:
docker build --tag myeventstore . \
--build-arg CONTAINER_RUNTIME=bookworm-slim \
--build-arg RUNTIME=linux-x64
Note: Because of the Docker issue, if you're building a Docker image on Windows, you may need to set the DOCKER_BUILDKIT=0
environment variable. For instance, running in PowerShell:
$env:DOCKER_BUILDKIT=0; docker build --tag myeventstore . `
--build-arg CONTAINER_RUNTIME=bookworm-slim `
--build-arg RUNTIME=linux-x64
Currently, we support the following configurations:
- Bookworm slim:
CONTAINER_RUNTIME=bookworm-slim
RUNTIME=linux-x64
- Jammy:
CONTAINER_RUNTIME=Jammy
RUNTIME=linux-x64
- Alpine:
CONTAINER_RUNTIME=alpine
RUNTIME=linux-musl-x64
You can verify the built image by running:
docker run --rm myeventstore --insecure --what-if