mirror of
https://github.com/nosqlbench/nosqlbench.git
synced 2025-02-25 18:55:28 -06:00
updated project details
This commit is contained in:
43
MODULES.md
Normal file
43
MODULES.md
Normal file
@@ -0,0 +1,43 @@
|
||||
## Contributing
|
||||
|
||||
We are actively looking for contributors to help make NoSQLBench better.
|
||||
This is an ambitious project that is just finding its stride. If you want
|
||||
to be part of the next chapter in NoSQLBench development please look at
|
||||
[CONTRIBUTING](CONTRIBUTING.md) for ideas, and jump in where you feel comfortable.
|
||||
|
||||
All contributors are expected to abide by the [CODE_OF_CONDUCT](CODE_OF_CONDUCT.md).
|
||||
|
||||
## License
|
||||
|
||||
All of the code in this repository is licensed under the APL version 2. If you contribute
|
||||
to this project, then you must agree to license all of your construbutions under
|
||||
this license.
|
||||
|
||||
# Project Structure
|
||||
|
||||
NoSQLBench is an ambitious project. It has lots of advanced functionality
|
||||
built-in that you won't find in any other performance testing tool. That means that
|
||||
there is also a lot of code.
|
||||
|
||||
To make a testing runtime that can be expanded according to different protocols and
|
||||
scripting requirements, modularity is absolutely essential. Thus, you will find many
|
||||
nodules, each focusing on one specific type of responsibility. The build system
|
||||
bundles all the modules together into a cohesive whole using SPI and auto-discovery
|
||||
mechanisms at run-time.
|
||||
|
||||
To make it easier to find the module you are looking for, the following strict
|
||||
naming conventions have been adopted:
|
||||
|
||||
- All packages within a module start with `io.nosqlbench`, followed by the module name,
|
||||
with hyphens converted to dots. For example, the 'engine-api' module contains
|
||||
packages in `io.nosqlbench.engine.api`.
|
||||
- Modules which implement activity types (high-level protocol drivers) are named `activitytype-...`.
|
||||
- Modules which provide procedural data generation support are named `virtdata-...`.
|
||||
- Modules which provide core runtime logic are named `engine-...`.
|
||||
- Project-wide maven defaults are contained in the mvn-defaults module.
|
||||
|
||||
All runtime packaging and bundling is done in the `nb` module. It produces a Linux binary
|
||||
in target/eb. If you are doing testing and need to have a classpath that includes all th
|
||||
bundled modules together, then use the `nb` module as your classpath module.
|
||||
|
||||
|
109
README.md
109
README.md
@@ -1,28 +1,70 @@
|
||||

|
||||
|
||||
This project combines upstream projects of engineblock and virtualdataset into one main project. More details on release practices and contributor guidelines are on the way.
|
||||
# NoSQLBench
|
||||
|
||||
# Status
|
||||
**The Open Source, Pluggable, NoSQL Benchmarking Suite**
|
||||
|
||||
This is in active development. Collaborators are welcome. However, there is still work to be done to groom the slope for new users.
|
||||
## What is NoSQLBench?
|
||||
|
||||
# Project Structure
|
||||
NoSQLBench is a serious performance testing tool for the NoSQL ecosystem.
|
||||
It brings together features and capabilities that are not found in any
|
||||
other tool.
|
||||
|
||||
NoSQLBench is a large project. It has lots of advanced functionality built-in that you won't find in any other performance testing tool.
|
||||
- You can run common testing workloads directly from the command line.
|
||||
- You can generate virtual data sets of arbitrary size, with deterministic
|
||||
data and statistically shaped values.
|
||||
- You can design custom workloads that emulate your application, contained
|
||||
in a single file, based on statement templates - no IDE or coding required.
|
||||
- You can immediately plot your results in a docker and grafana stack on Linux
|
||||
with a single command line option.
|
||||
- When needed, you can open the access panels and rewire the runtime behavior
|
||||
of NoSQLBench to do advanced testing, including a full scripting environment
|
||||
with Javascript.
|
||||
|
||||
To make it easier to find the module you are looking for (for developers),
|
||||
the following strict naming conventions have been adopted:
|
||||
The core machinery of NoSQLBench has been built with attention to detail.
|
||||
It has been battle tested within DataStax as a way to help users validate their
|
||||
data models, baseline system performance, and qualify system designs for scale.
|
||||
|
||||
- All original packages of this project start with `io.nosqlbench`.
|
||||
- All original packages within each module are based directly on the above root package and the module name together. For example, the 'engine-api' module contains packages in `io.nosqlbench.engine.api`.
|
||||
In short, NoSQLBench wishes to be a programmable power tool for performance
|
||||
testing. However, it is somewhat generic. It doesn't know directly about a
|
||||
particular type of system, or protocol. It simply provides a suitable machine
|
||||
harness in which to put your drivers and testing logic. If you know how to build
|
||||
a client for a particular kind of system, EB will let you load it like a plugin
|
||||
and control it dynamically.
|
||||
|
||||
The procedural generation support that has been imported from the VirtualDataSet project now lives in virtdata-* modules.
|
||||
The core runtime that used to be called EngineBlock now lives in engine-* modules.
|
||||
Initially, NoSQLBench comes with support for CQL, but we would like to see this
|
||||
expanded with contributions from others.
|
||||
|
||||
The binary packaging support for Linux (with AppImage) is contained in the nb module. It provides a binary `nb` which is the main command-line artifact from this project.
|
||||
## Origins
|
||||
|
||||
The defaults that are used by all modules are contained in the mvn-defaults module.
|
||||
The code in this project comes from multiple sources. The procedural data
|
||||
generation capability was known before as 'Virtual Data Set'. The core runtime
|
||||
and scripting harness was from the 'EngineBlock' project. The CQL support was
|
||||
previously used within DataStax. In March of 2020, DataStax and the project
|
||||
maintainers for these projects decided to put everything into one OSS project
|
||||
in order to make contributions and sharing easier for everyone. Thus, the new
|
||||
project name and structure was launched as nosqlbench.io. NoSQLBench is an
|
||||
independent project that is primarily sponsored by DataStax.
|
||||
|
||||
We offer NoSQLBench as a new way of thinking about testing systems. It is not
|
||||
limited to testing only one type of system. It is our wish to build a community
|
||||
of users and practice around this project so that everyone in the NoSQL ecosystem
|
||||
can benefit from common concepts and understanding and reliable patterns of use.
|
||||
|
||||
## Contributing
|
||||
|
||||
We are actively looking for contributors to help make NoSQLBench better.
|
||||
This is an ambitious project that is just finding its stride. If you want
|
||||
to be part of the next chapter in NoSQLBench development please look at
|
||||
[CONTRIBUTING](CONTRIBUTING.md) for ideas, and jump in where you feel comfortable.
|
||||
|
||||
All contributors are expected to abide by the [CODE_OF_CONDUCT](CODE_OF_CONDUCT.md).
|
||||
|
||||
## License
|
||||
|
||||
All of the code in this repository is licensed under the APL version 2. If you contribute
|
||||
to this project, then you must agree to license all of your construbutions under
|
||||
this license.
|
||||
|
||||
## System Compatibility
|
||||
|
||||
@@ -32,46 +74,19 @@ This is a Linux targeted tool, as most cloud/nosql testing is done on Linux inst
|
||||
2. on Mac, with `nb.jar` all features are supported, except --docker-metrics
|
||||
3. On Windows, with `nb.jar` all features are supported, except --docker-metrics
|
||||
|
||||
## nosqlbench
|
||||
|
||||
This project aims to provide a missing power tool in the test tooling arsenal.
|
||||
|
||||
The design goals:
|
||||
|
||||
1. Provide a useful and intuitive Reusable Machine Pattern for constructing and reasoning about concurrent performance tests. To encourage this, the runtime machinery is based on [simple and tangible core concepts](http://docs.nosqlbench.io/user-guide/concepts/).
|
||||
2. Reduce testing time of complex scenarios with many variables. This is achieved by controlling tests from an [open javascript sandbox](http://docs.nosqlbench.io/user-guide/scripting/). This makes more sophisticated scenarios possible when needed.
|
||||
3. Minimize the amount of effort required to get empirical results from a test cycle. For this, [metrics reporting](http://docs.nosqlbench.io/user-guide/metrics/) is baked in.
|
||||
|
||||
In short, NoSQLBench wishes to be a programmable power tool for performance
|
||||
testing. However, it is somewhat generic. It doesn't know directly about a
|
||||
particular type of system, or protocol. It simply provides a suitable machine
|
||||
harness in which to put your drivers and testing logic. If you know how to build
|
||||
a client for a particular kind of system, EB will let you load it like a plugin
|
||||
and control it dynamically.
|
||||
|
||||
The most direct way to do this, if you are a tool developer, is to build your
|
||||
own activity type drivers and embed EB as the core runtime. You can always
|
||||
experiment with it and learn how it works by using the built-in diagnostic
|
||||
drivers.
|
||||
|
||||
## History
|
||||
|
||||
The NoSQLBench project started as a branch of [test
|
||||
client](http://github.com/jshook/testclient). It has since evolved to be more generic and capable.
|
||||
|
||||
## License
|
||||
|
||||
nosqlbench is licensed under the Apache Public License 2.0
|
||||
|
||||
## Thanks
|
||||
|
||||
[](http://datastax.com/)
|
||||
|
||||
This project is sponsored by [DataStax](http://datstax.com/) -- The always-on, active everywhere, distributed hybrid cloud database built on Apache Cassandra™, and designed from the ground up to run anywhere, on any cloud, in any datacenter, and in every possible combination. DataStax delivers the ultimate hybrid and multi-cloud database.
|
||||
This project is sponsored by [DataStax](http://datstax.com/) -- The always-on,
|
||||
active everywhere, distributed hybrid cloud database built on Apache Cassandra™,
|
||||
and designed from the ground up to run anywhere, on any cloud, in any datacenter,
|
||||
and in every possible combination. DataStax delivers the ultimate hybrid and multi-cloud database.
|
||||
|
||||

|
||||
|
||||
This project uses tools provided by YourKit, LLC. YourKit supports open source projects with its full-featured Java Profiler.
|
||||
YourKit, LLC is the creator of <a href="https://www.yourkit.com/java/profiler/">YourKit Java Profiler</a>
|
||||
This project uses tools provided by YourKit, LLC. YourKit supports open source projects
|
||||
with its full-featured Java Profiler. YourKit, LLC is the creator of
|
||||
<a href="https://www.yourkit.com/java/profiler/">YourKit Java Profiler</a>
|
||||
and <a href="https://www.yourkit.com/.net/profiler/">YourKit .NET Profiler</a>,
|
||||
innovative and intelligent tools for profiling Java and .NET applications.
|
||||
|
Reference in New Issue
Block a user