Skip to content

Projection

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

  • 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
EventsProjectionQuery Pattern
OrderCreated, ItemAddedOrder summary tableGet order by ID
PlayerRegistered, FundsDepositedPlayer balance viewGet current balance
HandStarted, BetPlacedActive hands dashboardList active hands
AspectProjectionEvent Store
Source of truthNoYes
StructureQuery-optimizedAppend-only log
RebuildableYes (replay events)No (is the source)
ConsistencyEventuallyImmediately

Projectors output to:

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