Skip to main content

Projection

A query-optimized read model built by a projector from event streams. Projections are the "read side" of CQRS.

Characteristics

  • Derived: Built from events, not the source of truth
  • Disposable: Can be rebuilt by replaying events
  • Optimized: Structured for specific query patterns
  • Eventually consistent: May lag behind writes

Examples

EventsProjectionQuery Pattern
OrderCreated, ItemAddedOrder summary tableGet order by ID
PlayerRegistered, FundsDepositedPlayer balance viewGet current balance
HandStarted, BetPlacedActive hands dashboardList active hands

Projection vs Event Store

AspectProjectionEvent Store
Source of truthNoYes
StructureQuery-optimizedAppend-only log
RebuildableYes (replay events)No (is the source)
ConsistencyEventuallyImmediately

In Angzarr

Projectors output to:

  • Databases (PostgreSQL, Redis)
  • APIs (REST endpoints)
  • Files (reports, exports)
  • External systems (webhooks, queues)