OO7 Example Application
=======================

This is a simple implementation of the OO7 object-oriented database benchmark
on top of Fabric. It is written using FabIL.

This directory contains the following sub-directories:

  - src/fabil: source code for the FabIL implementation of OO7
  - src/java: source code for the Java implementation of OO7
  - bin: a collection of scripts for running the example
  - etc: configuration files for the example's store and worker


Compiling
---------
To build the example, run 'ant' in the OO7 example directory:

  $ ant


Using
-----
This example comes with a store named "database" for storing the OO7 databases,
and a worker named "worker" for creating OO7 databases and running the OO7
traversals.

  0. Begin in the OO7 example directory:

        $ cd $FABRIC/examples/OO7

  1. Start the "database" store that will be holding the OO7 databases:

	$ bin/start-store

  2. If you are starting with a fresh store, you will need to initialize the
     worker by creating its principal object on the store:

	$ bin/init-worker

  3. Create a OO7 database:

	$ bin/create-db fab://[store_name]/[db_name] [db_size] [fanout]

     e.g. to create a tiny database named "OO7" with fanout=3 on the
     "database" store:

	$ bin/create-db fab://database/OO7 tiny 3

  4. Execute a traversal (e.g. T1 on the database named "OO7"):

	$ bin/t1 fab://database/OO7

     The script will execute a traversal and print out timing information. To
     execute a traversal against a "hot" worker cache, add the "--hot" option:

       $ bin/t1 fab://database/OO7 --hot

     Similar scripts for running T2a, T2b, T2c, and T6 traversals are also
     available in the 'bin' directory.

  5. You can clean up the store's persistent state by removing the 'var'
     directory:

	$ rm -rf var

