Requirements

Building

  1. Get the source: wget http://people.csail.mit.edu/evanj/hstore-cc-sigmod2010.tar.bz2

  2. Extract: tar xjf hstore-cc-sigmod2010.tar.bz2

  3. Build: cd hstore-cc-sigmod2010; ./build.sh

This script should build everything that is needed.

Scaling % multi-partition transactions

Figure 4 from the paper: This involves running a "sweep" with three configurations: blocking, speculation, and locking. There is a script which attempts to run everything in one go (mptxn.py), but in case it doesn’t this section documents a more detailed procedure:

Note
This takes approximately 5 hours to run.

Simple Script

  1. Run ./mptxn.py [6 machines with ssh access]. If this fails, you may need to attempt running a single test. See below.

  2. Plot the results with ./mptxn_plot.py mptxn.eps.

Single Test

These directions run a single test in one mode (block, spec, or lock). You will need to repeat this three times to get the complete results. You should only try this if the "all in one" script fails.

  1. Start the slave machines: taskmgr/slave_admin.py start [name/ip of 6 machines to use for the tests]

  2. Start a single test configuration: taskmgr/taskcmd.py taskmgrconfigs/task_mptxn.py --slaves=[machines] start --task_args [block|spec|lock]

  3. Wait for the test to finish. Either you can monitor the test task running on the last host, or you can use the wait command: taskmgr/taskcmd.py taskmgrconfigs/task_mptxn.py --slaves=[machines] wait [last host name] --task_args [block|spec|lock]

  4. Get the results via ssh: scp [host]:/tmp/tmp*/*.csv data/mptxn-[test type].csv

  5. Shut down the test: taskmgr/taskcmd.py taskmgrconfigs/task_mptxn.py --slaves=[machines] stop --task_args [block|spec|lock]

Scaling % conflict and % abort

Figures 5 and 6 from the paper. As above, there is a script which attempts to run everything in one go (conflict.py), but if that fails this section also documents a more detailed procedure.

Note
This takes approximately 16 hours to run.

Simple Script

  1. Run ./conflict.py [6 machines with ssh access]. If this fails, you may need to attempt running a single test. See below.

  2. Plot the results with ./conflict_plot.py conflict.eps.

  3. Plot the results with ./abort_plot.py abort.eps.

Single Test

  1. Start the slave machines: taskmgr/slave_admin.py start [name/ip of 6 machines to use for the tests]

  2. Start a single test configuration: taskmgr/taskcmd.py taskmgrconfigs/task_conflict.py --slaves=[machines] start --task_args [conflict|abort] [block|spec|lock]

  3. Wait for the test to finish. Either you can monitor the test task running on the last host, or you can use the wait command: taskmgr/taskcmd.py taskmgrconfigs/task_conflict.py --slaves=[machines] wait [last host name] --task_args [conflict|abort] [block|spec|lock]

  4. Get the results via ssh: scp [host]:/tmp/tmp*/*.csv data/[conflict|abort]-[block|spec|lock].csv

  5. Shut down the test: taskmgr/taskcmd.py taskmgrconfigs/task_conflict.py --slaves=[machines] stop --task_args [conflict|abort] [block|spec|lock]

General Transactions

Figure 7 in the paper.

  1. Run ./mptxn.py [6 machines with ssh access] general.

  2. Plot the results with ./mptxn_plot.py general.eps general.

Scaling TPC-C Warehouses

Figure 8 in the paper.

  1. Run ./tpcc_warehouses.py [6 machines with ssh access].

  2. Plot the results : ./tpcc_warehouses_plot.py tpcc_warehouses.eps.

Note
This takes approximately 4 hours to run.

Scaling TPC-C Multi-Partition Transactions

Figure 9 in the paper.

  1. Run ./tpcc_mptxn.py [6 machines with ssh access].

  2. Plot the results: ./tpcc_mptxn_plot.py tpcc_warehouses.eps.

Note
This takes approximately 7 hours to run.

Notes on Source Code

This code is released under a BSD license. See hstore/LICENSE.

The code in this directory is from a collection of separate source repositories, checked out at the following changesets. The revision in each repository has been tagged with sigmod2010-repeatability.