Skip to content

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:

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 StoreDriverGlobal ReadsStream DeletionOutboxDetails
KurrentDBKurrentDB-Client-GoYesNo—Streams map closely to Kurrent streams.
MongoDBmongo-go-driverYesYesYesA single collection for all events, or events partitioned across collections by a configurable selector.
PostgreSQLpgxYesYesYesUses a single table for all events.
SQLitemodernc.org/sqliteYesYes—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 StoreDriverDetails
MongoDBmongo-go-driverOne document per projection; reads pinned to the primary, writes must be acknowledged.
PostgreSQLpgxA single table, one row per projection.
SQLitemodernc.org/sqliteA single table, one row per projection; no CGO required.

Snapshot Stores

Coming soon.

BackendDriver

Aggregate Caches

Aggregate CacheTypeDriver
bigcacheIn-Memoryhttps://github.com/allegro/bigcache
freecacheIn-Memoryhttps://github.com/coocood/freecache
RedisDistributedhttps://github.com/go-redis/redis
ValkeyDistributedhttps://github.com/valkey-io/valkey-go