Design and implement event stores for event-sourced systems. Use when building event sourcing infrastructure, choosing event store technologies, or implementing event persistence patterns.
Comprehensive guide to designing event stores for event-sourced applications.
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā Event Store ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā āāāāāāāāāāāāāāā āāāāāāāāāāāāāāā āāāāāāāāāāāāāāā ā
ā ā Stream 1 ā ā Stream 2 ā ā Stream 3 ā ā
ā ā (Aggregate) ā ā (Aggregate) ā ā (Aggregate) ā ā
ā āāāāāāāāāāāāāā⤠āāāāāāāāāāāāāā⤠āāāāāāāāāāāāāā⤠ā
ā ā Event 1 ā ā Event 1 ā ā Event 1 ā ā
ā ā Event 2 ā ā Event 2 ā ā Event 2 ā ā
ā ā Event 3 ā ā ... ā ā Event 3 ā ā
ā ā ... ā ā ā ā Event 4 ā ā
ā āāāāāāāāāāāāāāā āāāāāāāāāāāāāāā āāāāāāāāāāāāāāā ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā Global Position: 1 ā 2 ā 3 ā 4 ā 5 ā 6 ā ... ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
| Requirement | Description |
|---|---|
| Append-only | Events are immutable, only appends |
| Ordered | Per-stream and global ordering |
| Versioned | Optimistic concurrency control |
| Subscriptions | Real-time event notifications |
| Idempotent | Handle duplicate writes safely |
| Technology | Best For | Limitations |
|---|---|---|
| EventStoreDB | Pure event sourcing | Single-purpose |
| PostgreSQL | Existing Postgres stack | Manual implementation |
| Kafka | High-throughput streaming | Not ideal for per-stream queries |
| DynamoDB | Serverless, AWS-native | Query limitations |
| Marten | .NET ecosystems | .NET specific |
Full template library and detailed worked examples live in references/details.md. Read that file when you need the concrete templates.
Order-{uuid}