These functions convert back and forth between a specific BatchID and the earliest time of the BatchID just after it.
The batcher for this store
instances of this trait MAY NOT change the logic here.
For each batch, collect up values with the same key on mapside before the keys are expanded.
This is the monadic version of readLast, returns the BatchID actually on disk
Override this to set up store pruning, by default, no (key,value) pairs are pruned.
Reads the input data after the last batch written.
This combines the current inputs along with the last checkpoint on disk to get a log of all deltas with a timestamp This is useful to leftJoin against a store.
Returns a snapshot of the store's (K, V) pairs aggregated up to (but not including!) the time covered by the supplied batchID.
Returns a FlowProducer that supplies all data for the given specific version within this store's rootPath.
Make sure not to keep more than versionsToKeep when we write out.
This gives the batches needed to cover the requested input This will always be non-empty
For (firstNonZero - 1) we read empty.
writeLast receives an INCLUSIVE upper bound on batchID and a pipe of all key-value pairs aggregated up to (and including) that batchID.