The workload_generator.sh
script generates the workload traces.
Before running the script, adapt the TRACE_FOLDER
variable to point to the directory where your traces want to be stored.
To generate the workloads run:
./workload_generator.sh
This script executes all the workloads (core YCSB and GDPR workloads) and generates the respective traces.
Note that, to limit the size of the resulting files, the values are marked with the placeholder VAL.
If you want to have actual, random generated values in the workload traces, set mockvalues=false
in the workload configuration files.
Important files:
- The workload configuration files are placed here.
- The dummy tracer client is located here
- The adapted GDPR workload class is located here
- For comparison, the default Core workload class is here and the sample Redis Client provided by GDPRBench is here
GDPRuler metadata fields and their associated enums in the code:
- Expiration time:
TTL
- Purpose:
PUR
- Origin:
SRC
- Sharing:
SHR
- Objections:
OBJ
- Monitoring:
LOG
- Data Owner:
USR
Note:
The origin(SRC
) and data owner(USR
) are currently considered immutable fields, which means that they cannot be modified through PUTM
queries.
- in YCSB core workloads, keys are prefixed with the string "user" (source).
- in GDPR core workloads, keys are prefixed with the string "key" (source).
- the Core workload values are the fields generated concatenated into a String (default: 10 fields, 100 bytes each -> 1000bytes)
while the GDPR workload values are set via the
fieldlength
parameter in the workload file - for the Update operation in the Core workloads, we set the
writeallfields
to update all the fields of the value - Removed
DEC
andACL
metadata from GDPRBench since they are implied in the rest (respective count variables are removed from the workload files) - Converted
CAT
toLOG
metadata for monitoring withtrue
/false
values (respective count variables are removed from the workload files) - Reduced the default number of fieldcounts to 8 from 10 (due to metadata field reduction).
mockvalues
parameter in the workload configuration instructs the tracer not to log the random values but place aVAL
placeholderverifyTTL
query removed from GDPR workload / should be done after the development of the controller to verify the correctnessgetLogs()
query specifies the amount of records that need to be audited / will be enhanced in our framework, just keep it to know when to call itUPDATEMETAPURPOSE
PUTM
requests, should also be accompanied with theUSR ID
that requests the modification to see where he has access to (when the query filter is the purpose)SHR
field contains theUSR ID
with whom the data is sharedOBJ
field contains the objected purposes of use for this specific KV pair
For more information on the sequence of execution phases for the YCSB core workloads see here.
Note: We perform a separate load phase for each workload to have autonomous workload traces Load A Run A, Load A Run B, Load A Run C, Load A Run F, Load A Run D, Load E Run E
For GDPR workloads we load and run the workloads as described here.
To fetch and adapt Redis, run the following in the current directory:
git clone [email protected]:redis/redis.git
cd redis
git checkout 4.0.11
git apply ../redis_gdpr.patch
Then, proceed to build and test redis as usual (e.g., using make
).
The provided patch is an adaptation of this to avoid potential compilation issues.
If you encounter any problems, you can try the original one provided by the GDPRbench paper authors.