Read Models, projections and the EventStore


I have to implement a read model named “current user data” (it is updated by a variety of events like UserCreatedEvent, UserUpgradedAccountEvent, UserExtendedAccountEvent etc.).

Would you either

a) use a subscription and update a read model database (e.g. an SQL database table)

b) use a foreachStream()-projection and hold the current user data in the per-stream-state of the projection

I kind of tend to (a) because I read that projections aren’t really a feature to replace all read models but a specific tool for indexes and complex event processing (e.g. temporal queries). However, as the projections-based implementation for my read model seems pretty straightforward, I’m not sure about the “best practice”. What’s your opinion?

Best regards,