OoOJoin  0.0.1
The next generation of out-of-order join operator
RandomDataLoader.h
Go to the documentation of this file.
1 
2 //
3 // Created by tony on 29/12/22.
4 //
5 
6 #ifndef _INCLUDE_TESTBENCH_RandomDataLoader_H_
7 #define _INCLUDE_TESTBENCH_RandomDataLoader_H_
9 #include <Utils/MicroDataSet.hpp>
10 using namespace INTELLI;
11 namespace OoOJoin {
12 
36  protected:
37  tsType windowLenMs, timeStepUs, watermarkTimeMs, maxArrivalSkewMs, eventRateKTps;
38  vector<tsType> genArrivalTime(vector<tsType> eventTime, vector<tsType> arrivalSkew) {
39  vector<tsType> ru = vector<tsType>(eventTime.size());
40  size_t len = (eventTime.size() > arrivalSkew.size()) ? arrivalSkew.size() : eventTime.size();
41  for (size_t i = 0; i < len; i++) {
42  ru[i] = eventTime[i] + arrivalSkew[i];
43  }
44  return ru;
45  }
46 
47  void bubble_sort(vector<OoOJoin::TrackTuplePtr> &arr) {
48  size_t i, j;
49  TrackTuplePtr temp;
50  size_t len = arr.size();
51  for (i = 0; i < len - 1; i++)
52  for (j = 0; j < len - 1 - i; j++)
53  if (arr[j]->arrivalTime > arr[j + 1]->arrivalTime) {
54  temp = arr[j];
55  arr[j] = arr[j + 1];
56  arr[j + 1] = temp;
57  }
58  }
59  vector<OoOJoin::TrackTuplePtr> genTuples(vector<keyType> keyS, vector<tsType> eventS, vector<tsType> arrivalS) {
60  size_t len = keyS.size();
61  vector<OoOJoin::TrackTuplePtr> ru = vector<OoOJoin::TrackTuplePtr>(len);
62  for (size_t i = 0; i < len; i++) {
63  ru[i] = newTrackTuple(keyS[i], 0, eventS[i], arrivalS[i]);
64  }
65  bubble_sort(ru);
66  return ru;
67  }
68  vector<TrackTuplePtr> genTuplesSmooth(size_t testSize,
69  uint64_t keyRange,
70  uint64_t rateKtps,
71  uint64_t groupUnit,
72  uint64_t maxSkewUs,
73  uint64_t seed = 999) {
74  MicroDataSet ms(seed);
75  uint64_t tsGrow = 1000 * groupUnit / rateKtps;
76  vector<keyType> keyS = ms.genRandInt<keyType>(testSize, keyRange, 1);
77  vector<tsType> eventS = ms.genSmoothTimeStamp<tsType>(testSize, groupUnit, tsGrow);
78  vector<tsType> arrivalSkew = ms.genRandInt<tsType>(testSize, maxSkewUs, 1);
79  vector<tsType> arrivalS = genArrivalTime(eventS, arrivalSkew);
80  vector<TrackTuplePtr> genTuple = genTuples(keyS, eventS, arrivalS);
81  return genTuple;
82  }
83  public:
84  ConfigMapPtr cfgGlobal;
85  vector<TrackTuplePtr> sTuple, rTuple;
86  RandomDataLoader() {}
87  ~RandomDataLoader() {}
93  virtual bool setConfig(ConfigMapPtr cfg);
99  virtual bool setModConfig(ConfigMapPtr cfg) {
100  assert(cfg);
101  return true;
102  }
103 
108  virtual vector<TrackTuplePtr> getTupleVectorS();
109 
114  virtual vector<TrackTuplePtr> getTupleVectorR();
115 
116 };
117 
124 typedef std::shared_ptr<class RandomDataLoader> RandomDataLoaderPtr;
130 #define newRandomDataLoader std::make_shared<OoOJoin::RandomDataLoader>
131 
135 }
136 #endif //INTELLISTREAM_INCLUDE_TESTBENCH_RandomDataLoader_H_
#define newTrackTuple
(Macro) To creat a new TrackTuple under shared pointer.
Definition: Tuples.h:176
The all-in-one class for the Micro dataset.
Definition: MicroDataSet.hpp:45
The abstract class of dataloader.
Definition: AbstractDataLoader.h:39
The dataloader which produces random key, random value and random skewness.
Definition: RandomDataLoader.h:35
virtual bool setModConfig(ConfigMapPtr cfg)
Set the modification config map related to this loader.
Definition: RandomDataLoader.h:99
std::shared_ptr< class RandomDataLoader > RandomDataLoaderPtr
The class to describe a shared pointer to RandomDataLoader.
Definition: RandomDataLoader.h:124
uint64_t keyType
Definition: Tuples.h:18
uint64_t tsType
Definition: Tuples.h:20
std::shared_ptr< class TrackTuple > TrackTuplePtr
The class to describe a shared pointer to TrackTuple.
Definition: Tuples.h:171
std::shared_ptr< ConfigMap > ConfigMapPtr
The class to describe a shared pointer to ConfigMap.
Definition: ConfigMap.hpp:356
vector< tsType > genRandInt(size_t len, tsType maxV, tsType minV=0)
generate the vector of random integer
Definition: MicroDataSet.hpp:159
vector< tsType > genSmoothTimeStamp(size_t len, size_t step, size_t interval)
The function to generate a vector of timestamp which grows smoothly.
Definition: MicroDataSet.hpp:222
Definition: OperatorTable.cpp:7