|
| 1 | ++ ----------------------------------------------- + |
| 2 | ++ Python TPC-C + |
| 3 | ++ ----------------------------------------------- + |
| 4 | + |
| 5 | + |
| 6 | +The basic idea is that you will need to create a new driver file that |
| 7 | +implements the functions defined in "abstractdriver.py". One function will |
| 8 | +load in the tuples into your database for a given table. Then there are five |
| 9 | +separate functions that execute the given transaction based on a set of input |
| 10 | +parameters. All the work for generating the tuples and the input parameters |
| 11 | +for the transactions has been done for you. |
| 12 | + |
| 13 | +Here's what you need to do to get started: |
| 14 | + |
| 15 | +(1) Download the source code from Github: |
| 16 | + |
| 17 | +https://github.com/apavlo/py-tpcc/tree/master/pytpcc |
| 18 | + |
| 19 | +(2) Create a new file in the 'drivers' directory for your system that follows |
| 20 | +the proper naming convention. For example, if your system is 'MongoDB', then |
| 21 | +your new file will be called 'mongodbdriver.py' and that file will contain a |
| 22 | +new class called 'MongodbDriver' (note the capitalization). |
| 23 | + |
| 24 | +(3) Inside your class you will need to implement the required functions of |
| 25 | +defined in AbstractDriver. There is documentation on what these need to do |
| 26 | +also available on Github: |
| 27 | + |
| 28 | +https://github.com/apavlo/py-tpcc/wiki |
| 29 | + |
| 30 | +(3) Try running your system. I would start by defining the configuration file |
| 31 | +that gets returned with by the 'makeDefaultConfig' function in your driver and |
| 32 | +then implement the data loading part first, since that will guide how you |
| 33 | +actually execute the transactions. Using 'MongoDB' as an example again, you |
| 34 | +can print out the driver's configuration dict to a file: |
| 35 | + |
| 36 | +$ python ./tpcc.py --print-config mongodb > mongodb.config |
| 37 | + |
| 38 | +Make any changes you need to 'mongodb.config' (e.g., passwords, hostnames). |
| 39 | +Then test the loader: |
| 40 | + |
| 41 | +$ python ./tpcc.py --no-execute --config=mongodb.config mongodb |
| 42 | + |
| 43 | +You can use the CSV driver if you want to see what the data or transaction |
| 44 | +input parameters will look like. The following command will dump out just the |
| 45 | +input to the driver's functions to files in /tmp/tpcc-* |
| 46 | + |
| 47 | +$ python ./tpcc.py csv |
| 48 | + |
| 49 | +You can also look at my SqliteDriver implementation to get an idea of what |
| 50 | +your transaction implementation functions need to do: |
| 51 | + |
| 52 | +https://github.com/apavlo/py-tpcc/blob/master/pytpcc/drivers/sqlitedriver.py |
0 commit comments