NoSQL Schema Evaluator (NoSE)

Build Status

This is a work in progress tool to provide automated physical schema design for NoSQL data stores. NoSE is licensed under the GPLv3 license.

Testing has been done with Ruby 2+ with dependencies managed via bundler. Most of the code should also run under the latest JRuby. To get started, run bundle install to install the necessary dependencies. However, under JRuby, any code depending on C extensions or MRI internals should be excluded with --without=development gurobi mysql. The GUROBI_HOME environment must be set to a valid Gurobi installation. A free academic license can be obtained from the Gurobi website. Note that this project depends on forks of several gems.

Examples of the workload input format is given in the workloads/ directory. To run the schema advisor against the workload rubis, simply execute the command below

bundle exec nose search rubis

All source code is documented and more details on the command line tool can be retrieved by running bundle exec nose help. You can view complete documentation by running bundle exec rake doc and viewing the output in the doc/ directory. Tests are written using RSpec and can be executed with bundle exec rspec. If you do not have a copy of Gurobi available, you can exclude tests depending on it with --tag ~gurobi.

Some commands require a configuration file in lieu of command line options. An example configuration file for the different components of NoSE is given in nose.yml.example. Unfortunately, the line between what is configured in the configuration file and command line flags is currently somewhat blurry.

Publications

ACM DL Author-ize service Michael J. Mior. 2014. Automated schema design for NoSQL databases. In Proceedings of the 2014 SIGMOD PhD symposium (SIGMOD'14 PhD Symposium). ACM, New York, NY, USA, 41-45.

Mior, M.J.; Kenneth Salem; Ashraf Aboulnaga; Rui Liu, "NoSE: Schema Design for NoSQL Applications," in Data Engineering (ICDE), 2016 IEEE 32nd International Conference on, 16-20 May 2016 (to appear)