Key Features
Key Features
TamarackDB is an open source event store written in Go. It follows the DCB specification, serves an HTTP API, and keeps its data in one SQLite file.
For developers
- DCB. A command reads the events it needs, selected by type and tags. Its write is refused if an event matching that read was appended in the meantime. There are no streams to design up front. See Concepts.
- Projections. An application can store the state it computes from events next to them, read by type and id. Each write checks the version that was read, so two writes never overwrite each other. Projections can be rebuilt from events at any time. See Concepts.
- Transactions. A command reads, decides, and writes in a transaction held by the server. At commit, its events and projections are written together, or not at all. See Concepts.
- HTTP API. Plain JSON requests, from any language. Reads stream events as NDJSON. See HTTP API.
- Client library. A PHP client covers the whole API. See Client Libraries.
For operators
- Simple deployment. Static Linux binaries for amd64 and arm64, with no runtime and no external service. A Docker image and a systemd unit are ready to use. See Install.
- One SQLite file. Events and projections live in one database file, easy to inspect and to copy.
- Single instance. One process and one writer, with no clustering. TamarackDB fits applications with modest write throughput.
- Built-in backup.
tamarackdb-backupkeeps an incremental copy of an instance’s events, from a local or a remote instance. See Backup and Import. - Import.
tamarackdb-init --importbuilds a new database from a dump of another event store’s history. Each event keeps its sequence and its time. See Backup and Import. - Security. The server listens on a unix socket by default. A Bearer token is optional, and a reverse proxy adds TLS. See Security.
- Monitoring.
GET /healthfor a supervisor or a load balancer,GET /statsfor counters, and an access log. See Monitoring.