Igniters,
I was thinking about improving Ignite window processing support so that queries 
for windowed data is not user-initiated (which can have timing issues) but 
rather event-driven, similar to ContinuousQuery but being able to fire 
size-based or time-based entry windows to the listening client.
Some thougths on implementation:1. Guarantee all window events go to the same 
partition (user will need to specify it as a windowed cache). Maybe it can be 
rather implemented by extending IgniteQueue?2. Set a trigger on cache, which 
will listen to eviction (in case of size-based windowed cache) or expiration 
(time-based cache) events of the cache and fire entries.
It has to be exposed to the user by some API, very roughly something 
likeIgniteStream<K,V> is = IgniteStream.on(cache).with(windowingType, 
filterPredidate).aggregate(aggFunc)is.run() // to continuously return windowed 
results
where windowingType is time/size/session-based windows, aggFunc is 
sum/min/max/etc. or user-specified.
It can be an experimental feature and I think it is a useful API to enforce our 
stream processing, but I would like to know your opinion. Do you think such API 
is needed? I have a limited knowledge of Ignite internals -- any other ideas on 
the implementation?
For your reference, 
https://flink.apache.org/news/2015/12/04/Introducing-windows.html is a good 
introduction on windows processing.
-Roman

P.S. Other things like operator/event/ingress time but has to be considered for 
the implementation are omitted.

Reply via email to