...
Gliffy Diagram name HighwaterMarkUsage pagePin 4
Rejected Alternatives:
GroupBy + Reduce / Aggregate
The following design doesn't take into account the order of which events may arrive from the various threads. The easiest way to trigger this issue is to rapidly change the foreign-key of a record. This in turn has different Stream Threads operating asynchronously on the records, returning them in a non-deterministic order. At this point, GroupBy and reduce simply provide the order that the records arrive. Should your foreign key change rarely or not at all this may not be a problem, but since we want a comprehensive solution for all data patterns this is considered rejected.
Gliffy Diagram name RejectedGroupByReduce pagePin 2