Quite often you would want to change your projections or add completely new ones to the system. Obviously we would want to go back in time and make everything look like these changes were there since the beginning of time.
This is where replaying events come into play.
In order to be able to do that, we should set up our system to record all passing events into a separate event log for the domain. This event log is completely separate from aggregate event streams (should these be used in the system). It’s sole purpose is to simplify event replays for projections.
--
You received this message because you are subscribed to the Google Groups "DDD/CQRS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dddcqrs+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and stop receiving emails from it, send an email to dddcqrs+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Hi Rinat,--Sorry I'm still trying to learn how an event store should be implemented and my only source is the blog posts scattered around the web.To follow on my questions, if I have an event store backed by a MySql database what should the tables be in that database?Let's say we have 3 aggregates Customer,Supplier and Order.Are the events from the 3 aggregates stored in a single table? or does each aggregate hold its events in a different table?
On Saturday, November 1, 2014 6:26:48 AM UTC+2, Rinat Abdullin wrote:I wrote that when I didn't really know what I was doing :)If your event storage supports efficient replay of all events across aggregates, then you don't need a separate global event stream. Some stores like geteventstore.com and most databases even persist their changes as a global event stream by default.
On Saturday, November 1, 2014, <sherifsa...@gmail.com> wrote:In Rinat Abdullin's article about Event Sourcing - Projections--Quite often you would want to change your projections or add completely new ones to the system. Obviously we would want to go back in time and make everything look like these changes were there since the beginning of time.This is where replaying events come into play.In order to be able to do that, we should set up our system to record all passing events into a separate event log for the domain. This event log is completely separate from aggregate event streams (should these be used in the system). It’s sole purpose is to simplify event replays for projections.Is this always true? Should I always keep 2 copies of any event in the event store?Isn't the event stored in the aggregate's stream enough to construct a projection by replaying the stream the same way it would be replayed to construct the aggregate itself?
You received this message because you are subscribed to the Google Groups "DDD/CQRS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dddcqrs+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--Rinat Abdullin | Writer at Abdullin.com
You received this message because you are subscribed to the Google Groups "DDD/CQRS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dddcqrs+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and stop receiving emails from it, send an email to dddcqrs+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and stop receiving emails from it, send an email to dddcqrs+u...@googlegroups.com.
create table DomainEventEntry (
aggregateIdentifier varchar2(255) not null,
sequenceNumber number(19,0) not null,
type varchar2(255) not null, --aggregate class name
eventIdentifier varchar2(255) not null,
metaData blob,
payload blob not null, -- details
payloadRevision varchar2(255),
payloadType varchar2(255) not null, --event class name
timeStamp varchar2(255) not null
);
alter table DomainEventEntry
add constraint PK_DomainEventEntry primary key (aggregateIdentifier, sequenceNumber, type);
To unsubscribe from this group and stop receiving emails from it, send an email to dddcqrs+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and stop receiving emails from it, send an email to dddcqrs+u...@googlegroups.com.
For your domain with huge data from the tid bits i have seen its likely that the write model is likely to be stressed.
Currently we get about 20 million SQS messages every hour to process on each server. Since we only keep the current state for our prices the smallest database has 200 million records. If I start to track the history changes in prices my event log will grow gigantically.
--