{"id":15347647,"url":"https://github.com/michaelmior/nose-cli","last_synced_at":"2026-03-15T13:55:17.765Z","repository":{"id":46261775,"uuid":"75766490","full_name":"michaelmior/nose-cli","owner":"michaelmior","description":":nose: Automated schema design for NoSQL applications","archived":false,"fork":false,"pushed_at":"2024-03-11T16:10:09.000Z","size":109,"stargazers_count":2,"open_issues_count":4,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-15T04:13:32.111Z","etag":null,"topics":["nosql","ruby","schema"],"latest_commit_sha":null,"homepage":"https://michael.mior.ca/projects/NoSE/","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/michaelmior.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-12-06T20:01:48.000Z","updated_at":"2023-01-09T09:21:25.000Z","dependencies_parsed_at":"2023-01-20T09:19:10.466Z","dependency_job_id":null,"html_url":"https://github.com/michaelmior/nose-cli","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelmior%2Fnose-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelmior%2Fnose-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelmior%2Fnose-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/michaelmior%2Fnose-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/michaelmior","download_url":"https://codeload.github.com/michaelmior/nose-cli/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249003957,"owners_count":21196793,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["nosql","ruby","schema"],"created_at":"2024-10-01T11:37:13.757Z","updated_at":"2026-03-15T13:55:12.733Z","avatar_url":"https://github.com/michaelmior.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NoSQL Schema Evaluator (NoSE) CLI\n\n[![Build Status](https://travis-ci.org/michaelmior/nose-cli.svg?branch=main)](https://travis-ci.org/michaelmior/nose-cli)\n[![Depfu](https://badges.depfu.com/badges/0e30a5c5a7e233ee2900a8a92e52ba64/overview.svg)](https://depfu.com/github/michaelmior/nose-cli?project_id=6966)\n[![Code Coverage](https://scrutinizer-ci.com/g/michaelmior/nose-cli/badges/coverage.png?b=main)](https://scrutinizer-ci.com/g/michaelmior/nose-cli/?branch=main)\n\n## Installation\n\n### Requirements\n\n * [Ruby](https://www.ruby-lang.org/) 2+\n * [bundler](http://bundler.io/)\n * [Cbc](https://projects.coin-or.org/Cbc) solver (see the [Dockerfile](Dockerfile) for packages on Ubuntu, [Homebrew](https://github.com/coin-or-tools/homebrew-coinor) maybe useful on Mac OS, but has not been tested)\n\nOnce dependencies have been installed, clone the repository and install the necessary Ruby gems\n\n    git clone https://github.com/michaelmior/nose-cli.git\n    cd nose-cli\n    bundle install --without=development mysql\n\nExamples of the workload input format is given in the `workloads/` directory.\nThese workloads should give you a sense of the input format and can be a starting point for your own workloads.\nFor example, to run the schema advisor against the workload `rubis`, simply execute the command below\n\n    bundle exec nose search rubis\n\nIf you are prompted, accept the default configuration.\nEach recommended physical structure is referred to as an \"index\" and will be the first set of outputs.\nThese indexes will be followed by a list of plans for each query which makes use of these indexes.\nMore information on the other commands available can be found with `bundle exec nose help`.\nIf you have any questions, please [open an issue](https://github.com/michaelmior/NoSE/issues/new) or contact [@michaelmior](https://github.com/michaelmior/).\n\n## Development\n\nTesting has been done with Ruby 2+ but most of the code should also run under the latest [JRuby](http://jruby.org/).\nHowever, under JRuby, any code depending on C extensions or MRI internals should be excluded with `--without=development mysql`.\n\nAll source code is documented and more details on the command line tool can be retrieved by running `bundle exec nose help`.\nYou can view complete documentation by running `bundle exec rake doc` and viewing the output in the `doc/` directory.\nTests are written using [RSpec](http://rspec.info/) and can be executed with `bundle exec rspec`.\nIf you do not have a copy of the Cbc solver available, you can exclude tests depending on it with `--tag ~solver`.\n\nSome commands require a configuration file in lieu of command line options.\nAn example configuration file for the different components of NoSE is given in [nose.yml.example](data/nose-cli/nose.yml.example).\nUnfortunately, the line between what is configured in the configuration file and command line flags is currently somewhat blurry.\n\n## Defining your own workload\n\nTo define a workload and model named `foo`, start by creating `foo_model.rb` and `foo_workload.rb`.\nYou can use any of the [models](https://github.com/michaelmior/NoSE/tree/main/models) and [workloads](https://github.com/michaelmior/NoSE/tree/main/workloads) from the main NoSE repository as a template.\nIn the `Model` directive in your workload file (e.g. `foo_workload.rb`), specify the path to your model file, such as `Model './foo_model.rb'`.\nThen when running NoSE, use `bundle exec nose search ./foo_workload.rb` where `./foo_workload.rb` is the path to your workload file.\nThese paths can either be absolute paths or relative to the current working directory.\n\n## Acknowledgements\n\nThis work was supported by the Natural Sciences and Engineering Research Council of Canada ([NSERC](http://nserc.gc.ca)).\n\n[![NSERC](assets/NSERC-logo.png)](http://nserc.gc.ca)\n\nHosting of [Coin-OR packages](https://packagecloud.io/michaelmior/coinor/) is generously provided by packagecloud.\n\n[![packagecloud](assets/packagecloud-logo.png)](https://packagecloud.io)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaelmior%2Fnose-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmichaelmior%2Fnose-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmichaelmior%2Fnose-cli/lists"}