Class BucketSequencer<T>
java.lang.Object
io.nosqlbench.engine.api.activityapi.planning.BucketSequencer<T>
- Type Parameters:
T- The element which is to be scheduled.
- All Implemented Interfaces:
ElementSequencer<T>
Introduction
This class allows you to create a cyclic schedule that will maintain a mix of elements according to individual ratios. This particular sequencer simulates the effect of drawing from each bucket in round robin order until they are empty, putting each event into the planned sequence in turn. While this is not a good way to evenly interleave events over a large number, it is easy to reason about when looking at ratios like A:5,B:3,C:1. In this case, the order of events would be A B C A B A B A A. #Explanation and Example
Given a set of three events A, B, and C, and a set of respective frequencies of these events 5, 5, and 1. In short form: A:5,B:5,C:1. This means that a total of 11 events will be scheduled. With this sequencing algorithm, source buckets of events of type A, B, and C are initialized with the respective number of instances. Then, each bucket in turn is drawn from in round robin fashion, with each bucket being removed from the rotation when it becomes empty.
Further Examples
These examples simply show in symbolic terms how the ordering is affected by different ratios.
- X:1,Y:1,Z:1 - X Y Z
- L:4,M:1 - L M L L L
- A:4,B:3,C:2,D:1 - A B C D A B C A B A
- A:1,B:2:C:3:D:4 - A B C D B C D C D D
- D:4,C:3,B:2,A:1 - D C B A D C B D C D
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionint[]seqIndexByRatioFunc(List<T> elems, ToLongFunction<T> ratioFunc) int[]seqIndexesByRatios(List<T> elems, List<Long> ratios) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface io.nosqlbench.engine.api.activityapi.planning.ElementSequencer
seqElementsByRatioFunc, sequenceSummary
-
Constructor Details
-
BucketSequencer
public BucketSequencer()
-
-
Method Details
-
seqIndexByRatioFunc
- Specified by:
seqIndexByRatioFuncin interfaceElementSequencer<T>
-
seqIndexesByRatios
- Specified by:
seqIndexesByRatiosin interfaceElementSequencer<T>
-