Implements the TypeDB benchmark using the simulation framework. This benchmark contains a 'minimal set of representative queries' to emulate a typical typedb workload.
It was developed to evaluate the effects of replacing RocksDB with SpeeDB on read & write performance, and to evaluate the effect of any future changes on performance.
What are the changes implemented in this PR?
Move the simulation framework into the /framework directory
Introduce the read-write benchmark in the read-write directory
Apart from the minimal implementation of the simulation framework needed, the benchmark:
Implements PersonAgent as the only simulation agent, with:
An insert workload: createPerson
A match-insert workload: createFriendship
Four match workloads: readAddressFromName, readFriendsOf, readFriendsOfFriends, readPersonsByPostCode
See /benchmark/README.md for a longer description.
Introduces custom ModelParameters (configurable through the config file) of
personPerIteration: determines how many person entities (and associated attributes) are inserted per run of personAgent.createPerson
friendshipPerIteration: determines how many friendship relations are inserted per run of personAgent.createFriendship
postCodes: determines how many unique postCodes exist, which determine the growth of the read in readPersonsByPostCode
What is the goal of this PR?
Implements the TypeDB benchmark using the simulation framework. This benchmark contains a 'minimal set of representative queries' to emulate a typical typedb workload. It was developed to evaluate the effects of replacing RocksDB with SpeeDB on read & write performance, and to evaluate the effect of any future changes on performance.
What are the changes implemented in this PR?
/framework
directoryread-write
directoryPersonAgent
as the only simulation agent, with:createPerson
createFriendship
readAddressFromName
,readFriendsOf
,readFriendsOfFriends
,readPersonsByPostCode
/benchmark/README.md
for a longer description.ModelParameters
(configurable through the config file) ofpersonPerIteration
: determines how manyperson
entities (and associated attributes) are inserted per run ofpersonAgent.createPerson
friendshipPerIteration
: determines how manyfriendship
relations are inserted per run ofpersonAgent.createFriendship
postCodes
: determines how many uniquepostCodes
exist, which determine the growth of the read inreadPersonsByPostCode