Having an outer and an inner relation, many operators (i.e., joins, anti-joins and aggregation) can
be computed. By applying a timestamp T = [ Ts, Te)
on operators, we refer to them as temporal
operators. Our main goal is to compute these temporal operators efficiently. This project addresses the
problem of inefficient temporal operations because of overlapping tuples in each relation. Therefore,
the relations are split into partitions, in which no tuple overlaps. After this, the operators can be applied more efficiently.
My contribution to this project is mostly found in the main.c
file starting at line 795.
- Cygwin (Windows)
- Make package (Windows)
-
Clone this repo
-
Open Cygwin and cd into
../source
-
run
make all
-
After changing the code, run
make
again
After a successful build, there are several options:
- For a temporal join on disk, use the command:
./main.exe -o 2 --of tfdb1000k.txt --if tfdb1000k.txt -a DipDisk --on-disk --Join --p 6
- For a temporal anti-join on disk, use the command:
./main.exe -o 2 --of tfdb1000k.txt --if tfdb1000k.txt -a DipDisk --on-disk --AntiJoin --p 6
- For a temporal aggregation on disk, use the command:
./main.exe -o 2 --of tfdb1000k.txt --if tfdb1000k.txt -a DipDisk --on-disk --Aggregation
- For a temporal join on memory, use the command:
./main.exe -o 2 --of tfdb1000k.txt --if tfdb1000k.txt -a DipMem --on-array --Join --p 6
- For a temporal anti-join on memory, use the command:
./main.exe -o 2 --of tfdb1000k.txt --if tfdb1000k.txt -a DipMem --on-array --AntiJoin --p 6
- For a temporal aggregation on memory, use the command:
./main.exe -o 2 --of tfdb1000k.txt --if tfdb1000k.txt -a DipMem --Aggregation
The file tfdb1000k.txt
contains 1000k tuples (start & end time) which randomly overlap each other. The partitions are stored in the respective folder Partitions1
& Partition2
.
Two tupel are overlapping if:
t1.start <= t2.start && t1.end > t2.start
or
t1.start < t2.end && t1.end >= t2.end