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.
- 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 | Details |
|---|---|---|
| KurrentDB | https://github.com/kurrent-io/KurrentDB-Client-Go | Streams map closely to Kurrent streams. |
| MongoDB | https://github.com/mongodb/mongo-go-driver | Can choose between a single collection for all events or one collection per aggregate type. |
| PostgreSQL | https://github.com/lib/pq | Uses a single table for all events. |
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 |