---
id: "event-store"
type: "kind"
category: "messaging"
url: "https://localhost:3000/catalogue/kinds/event-store"
---

# Event store

Append-only replicated event log that is the system of record.

| | |
|---|---|
| Category | Messaging |
| Properties | 6 |
| Components | 5 |
| Rules | 1 |

## Properties

| property | type | values | required | default |
|---|---|---|---|---|
| `journaled` | boolean | — | no | true |
| `managed` | boolean | — | no | false |
| `replication` | enum | `none`, `raft`, `primary-replica` | no | "none" |
| `role` | enum | `journal`, `sequencer` | no | "journal" |
| `snapshotIntervalEvents` | integer | — | no | — |
| `storage` | enum | `mmap`, `rocksdb`, `database` | no | "database" |

## Rules for this kind · 1

### Stateful engine pinned to a single zone `stateful-engine-pinned-to-single-zone` (error)

- Page: https://localhost:3000/catalogue/rules/stateful-engine-pinned-to-single-zone.md
- Why: A matching engine, coordination service or event store living in exactly one availability zone, with no failover and no replication, is lost with that zone. Everything that depends on it stops with it.
- Applies to: every node of kind matching-engine, coordination-service or event-store
- Message: '{{node.id}}' is pinned to a single availability zone with no failover or replication.

It fires when:

- all of these hold:
  - the node sits inside exactly 1 availability-zone group
  - any of these hold:
    - the node's `failover` is "none"
    - the node's `replicated` is false
    - the node's `replication` is "none"

## Components · 5

### vendor-neutral

- [Generic event store](https://localhost:3000/catalogue/components/event-store.md) `event-store` — the kind itself

### default

- [Axon Server](https://localhost:3000/catalogue/components/axon-server.md) `axon-server` — 4 defaults
- [Apache BookKeeper](https://localhost:3000/catalogue/components/bookkeeper.md) `bookkeeper` — 3 defaults
- [EventStoreDB](https://localhost:3000/catalogue/components/eventstoredb.md) `eventstoredb` — 5 defaults
- [Raft event log](https://localhost:3000/catalogue/components/raft-event-log.md) `raft-event-log` — 4 defaults

## Source (`kind` YAML, verbatim)

```yaml
# yaml-language-server: $schema=../schema/kind.schema.json
# Append-only, replicated event log that is the system of record (event sourcing, exchange journals, sequencers).
# Differs from stream: state is derived from it and it is snapshotted; role sequencer marks the single writer that orders events.
schemaVersion: "1"
type: "kind"
id: "event-store"
category: "messaging"
properties:
  replication:
    type: "enum"
    values: ["none", "raft", "primary-replica"]
    default: "none"
  journaled:
    type: "boolean"
    default: true
  snapshotIntervalEvents:
    type: "integer"
  storage:
    type: "enum"
    values: ["mmap", "rocksdb", "database"]
    default: "database"
  role:
    type: "enum"
    values: ["journal", "sequencer"]
    default: "journal"
  managed:
    type: "boolean"
    default: false
```

Human page: https://localhost:3000/catalogue/kinds/event-store
