
tBench - A benchmark framework for temporal XML and PSM

Release v0.2 (March 16, 2013)


===============================================================================
CONTACT
===============================================================================

For questions and comments:

- Stephen W. Thomas (Chief Programmer)
  Affiliation: Queen's University
  Email: sthomas@cs.queensu.ca

- Richard T. Snodgrass 
  Affiliation: University of Arizona
  Email: rts@cs.arizona.edu

- Rui Zhang 
  Affiliation: University of Arizona
  Email: ruizhang@email.arizona.edu


===============================================================================
INTRODUCTION
===============================================================================

This package contains the tBench benchmark framework, and supporting tools. For a
complete description of tBench, see the TimeCenter technical report
and our SP&E 2013 paper in the docs directory.

Briefly, the tBench benchmark framework (currently) contains 10 benchmarks. The
foundation benchmark is "DC-SD", borrowed from the XBench family of
benchmarks. The remaining benchmarks are temporal and PSM exensions to "DC-SD".
All of the components (i.e., data, schema, and workloads) of the remaining 9
benchmarks are derived from the components of "DC-SD", by applying one or more
(manual or automatic) transformations. These transformations are contained (if
automatic) or described (if manual) in the Makefile of each benchmark; see
below for further details. 


===============================================================================
DIRECTORY STRUCTURE
===============================================================================

- benchmarks 
  This directory holds the benchmarks: (possible symlinks) to data, schemas,
  and workloads. It will also hold a Makefile (described below) for creating
  the benchmark, and a benchmark.xml file that describes the metadata of the
  benchmark.

- tools 
  This directory holds the supporting tool suite to help create and
  validate the individual benchmarks (described further below)

- docs 
  Contains published documentation about tBench and benchmark frameworks.


===============================================================================
USAGE
===============================================================================

To iteratively build all the benchmarks, run the command:

./makeAll.sh

This command will descend into each benchmark, in the proper order, and call its 
Makefile. 

Each benchmark (located in the benchmarks/ directory) contains a Makefile that
will create the benchmark. In some cases, the Makefile can also be used to
perform validation checks and execute the benchmark. Each Makefile contains
the following eight targets:

- clean
  Removes all generated files

- data
  Creates/generates/transforms (as appropriate) the data

- schema 
  Creates/generates/transforms (as appropriate) the schema

- workload 
  Creates/generates/transforms (as appropriate) the workload

- vdata
  Validates the data (e.g., for consistency, against the schema)
  
- vschema
  Validates the schema (e.g., for consistency and wellformedness)

- vworkload
  Validates the workload (e.g., for wellformedness)

- execute
  Executes the workload against the data

If no target is specified, then all targets are performed. 

Note that some components can not yet be automatically created; these already
exist in the benchmark and are unaffected by the Makefile. The Makefile will
output a message if this is the case.



===============================================================================
SUPPORTING TOOLS
===============================================================================

Some additional tools are needed to run the tBench benchmarks (called within
the Makefiles):

- tXSchema tool suite v2.1 (included). 
  http://cgi.cs.arizona.edu/apps/tauXSchema/index.php

- tGenerator v0.2 (included). 

- xmllint (standard on most *nix distributions). 
  http://xmlsoft.org/

- XBench v1.0 (included).
  https://cs.uwaterloo.ca/~tozsu/ddbms/projects/xbench/Publications.html

- Nux v1.6 (included). 
  http://acs.lbl.gov/software/nux/


The paths to these tools are defined in top level Makefile.inc. If you need 
to change the path to one of the tools, change it in this file.



===============================================================================
Operating System Support
===============================================================================

Currently, tBench has been developed for and tested on Linux (specifically,
Ubuntu 12.04). Support for Windows remains as future work. The main
difficulties for Windows support are (1) tool support (i.e., xmllint, Nux),
and (2) symbolic links from children benchmarks to their parents' directories.
Both of these issues can be resolved by installing Cygwin on Windows, which is a
fully-featured *nix emulation environment. Although untested, tBench should
function properly using Cygwin.



