Component Library
Estoria orchestrates the lifecycle of aggregates, but it relies on a set of vendor-specific components to provide the underlying storage features. These components include:
- Event Stores, for storing events.
- Checkpoint Stores, for persisting projection progress.
- Snapshot Stores, for storing snapshots of aggregate state.
- Aggregate Caches, for caching aggregate state in memory or in a distributed cache.
Officially Supported Implementations
These components are maintained by the Estoria project. They are tested against each Estoria release and subject to a standard suite of acceptance tests.
Event Stores
| Event Store | Driver | Global Reads | Stream Deletion | Outbox | Details |
|---|---|---|---|---|---|
| KurrentDB | KurrentDB-Client-Go | Yes | No | — | Streams map closely to Kurrent streams. |
| MongoDB | mongo-go-driver | Yes | Yes | Yes | A single collection for all events, or events partitioned across collections by a configurable selector. |
| PostgreSQL | pgx | Yes | Yes | Yes | Uses a single table for all events. |
| SQLite | modernc.org/sqlite | Yes | Yes | — | Uses a single table for all events; no CGO required. |
Global Reads and Stream Deletion are the event store’s optional capabilities. KurrentDB’s “No” for stream deletion is deliberate: its native delete semantics cannot honestly satisfy the interface’s contract, so the store does not claim it (the rationale is in its README). Outbox links to the store’s companion transactional outbox package, where one exists.
Checkpoint Stores
Checkpoint stores persist projection progress — the global position a projection has processed through, keyed by versioned projection ID.
| Checkpoint Store | Driver | Details |
|---|---|---|
| MongoDB | mongo-go-driver | One document per projection; reads pinned to the primary, writes must be acknowledged. |
| PostgreSQL | pgx | A single table, one row per projection. |
| SQLite | modernc.org/sqlite | A single table, one row per projection; no CGO required. |
Snapshot Stores
Coming soon.
| Backend | Driver |
|---|
Aggregate Caches
| Aggregate Cache | Type | Driver |
|---|---|---|
| bigcache | In-Memory | https://github.com/allegro/bigcache |
| freecache | In-Memory | https://github.com/coocood/freecache |
| Redis | Distributed | https://github.com/go-redis/redis |
| Valkey | Distributed | https://github.com/valkey-io/valkey-go |