an in memory store provided for test should not be used in real cases
an interval is a dynamic time range that is divided by window boundary and checkpoint time
a MonoidState storing non-window state
used in window applications it keeps the current window and slide ahead when the window expires
this is a list of states, each of which is bounded by a time window state of each window doesn't affect each other