eventflowdb

module
v0.14.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 10, 2021 License: AGPL-3.0

README

EventflowDB

EventflowDB is a database designed with Event Sourcing in mind.

Features
  • Stream based, immutable event storage and retrieval
  • Global stream for projections
  • gRPC API
  • HTTP API
  • Go client driver
  • TLS for both the gRPC and HTTP server
Deployment

The easiest way to get up and running is via Docker containers. To use this you need to install Docker:

Docker installation instructions

Once you've installed Docker, you can execute the following commands to start an EventflowDB instance with a persistent, named volume:

docker volume create eventflowdb

docker run -d -v eventflowdb:/var/lib/eventflowdb/data -p 6543:6543 -p 16543:16543 ghcr.io/eventflowdb/eventflowdb:v0.14.1

Configuration

The following environment variables can be used to alter the configuration:

Environment variable Flag Default Description
GRPC_ADDR --grpc-addr :6543 The address that the gRPC server uses to listen on
HTTP_ADDR --http-addr :16543 The address that the HTTP server uses to listen on
DATA --data ./data The folder in which persisted data resides
TLS --tls false Whether or not to use TLS
CERT --cert cert.pem The location of the TLS certificate file
KEY --key key.pem The location of the TLS key file
ENABLE_PROM --enable-prom true Whether or not the Prometheus endpoint should be enabled

Usage

EventflowDB is using gRPC with Protobuf as its main method of transport and encoding. The api.proto file is the source of truth for the API.

API Specification:

service EventStore {
    rpc AppendToStream(AppendToStreamRequest) returns (AppendToStreamResponse) {}
    rpc GetStream(GetStreamRequest) returns (GetStreamResponse) {}
    rpc GetEvent(GetEventRequest) returns (Event) {}
    rpc GetEventsFromStream(GetStreamRequest) returns (GetEventsFromStreamResponse) {}
    rpc ListStreams(ListStreamsRequest) returns (ListStreamsResponse) {}
    rpc StreamCount(StreamCountRequest) returns (StreamCountResponse) {}
    rpc EventCount(EventCountRequest) returns (EventCountResponse) {}
    rpc StreamSequence(StreamSequenceRequest) returns (StreamSequenceResponse) {}
    rpc Version(VersionRequest) returns (VersionResponse) {}
}

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

Roadmap

The features on the roadmap in no particular order:

  • Authentication
  • Client libraries
  • Command Line Interface

These may change at any point in the future and will be deleted once they're either implemented or if they won't.

Contributions

Contributions are most welcome. If you are unsure if a certain feature will benefit the project, please open up an issue.

Authors

License

This project is licensed under the GNU Affero General Public License v3.0 - see the LICENSE.md file for details

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL