To run the code:
- download the TPC-H skew benchmark: https://github.com/YSU-Data-Lab/TPC-H-Skew
- generate TPC-H skew dataset using the benchmark (skew factor = 0.4): ./dbgen -s 1 -z 0.4 -T L
- process the generated data file so that it is suitable for postgresql. The sample code is in exp_data_processing/file_operation.py
- install postgresql
- create a database "tpch_6mz0_4" in postgresql: create database tpch_6mz0_4
- create a lineitem table in database tpch_6mz0_4 in postgresql: CREATE TABLE LINEITEM ( L_ORDERKEY INTEGER NOT NULL, L_PARTKEY INTEGER NOT NULL, L_SUPPKEY INTEGER NOT NULL, L_LINENUMBER INTEGER NOT NULL, L_QUANTITY DECIMAL(15,2) NOT NULL, L_EXTENDEDPRICE DECIMAL(15,2) NOT NULL, L_DISCOUNT DECIMAL(15,2) NOT NULL, L_TAX DECIMAL(15,2) NOT NULL, L_RETURNFLAG CHAR(1) NOT NULL, L_LINESTATUS CHAR(1) NOT NULL, L_SHIPDATE DATE NOT NULL, L_COMMITDATE DATE NOT NULL, L_RECEIPTDATE DATE NOT NULL, L_SHIPINSTRUCT CHAR(25) NOT NULL, L_SHIPMODE CHAR(50) NOT NULL, L_COMMENT VARCHAR(44) NOT NULL);
- inject data into the table: COPY lineitem FROM '/lineitem.tbl' ( FORMAT CSV, DELIMITER('|') );
- run the java code:
- Disjoint approach: src/test/java/experiments/Test_MultiMap_Disjoint.java
- Overlapping approach: src/test/java/experiments/Test_MultiMap_Overlapping.java
- Overlapping approach with user-desired overlapping size: src/test/java/experiments/Test_MultiMap_Overlapping_with_User_Defined_Overlap.java
- dprfMM: src/test/java/experiments/Test_DprfMM.java
- XORMM: src/test/java/experiments/Test_XorMM.java