|
|
|
Evaluating the Availability (performance impact, failed requests in case of resource failures) of a DBMS cluster.
|
|
|
|
|
|
|
|
### Evaluation Scenario Workflow
|
|
|
|
|
|
|
|
The evaluation scenario execution comprises the following steps:
|
|
|
|
|
|
|
|
1. deploy *DBMS_X* in cluster size *C_Y* on cloud resources *CR_Z*
|
|
|
|
2. execute workload *W_A*
|
|
|
|
3. inject resource failure into DBMS cluster during workload execution
|
|
|
|
4. process availability metrics based on throughput and latency metrics (beta)
|
|
|
|
|
|
|
|
### Supported DBMS
|
|
|
|
|
|
|
|
- Cassandra
|
|
|
|
- CockroachDB (beta)
|
|
|
|
- Couchbase
|
|
|
|
- Elasticsearch
|
|
|
|
- MongoDB (beta)
|
|
|
|
- Riak
|
|
|
|
|
|
|
|
##### Important DBMS Parameters
|
|
|
|
- databaseSeedComponent instances -> 1 seed instance + databaseSeedComponent instances define the cluster size
|
|
|
|
- ReplicationFactor -> 1..clustersize-1
|
|
|
|
|
|
|
|
|
|
|
|
### Supported Workloads
|
|
|
|
|
|
|
|
#### YCSB
|
|
|
|
- Sensor Storage (YCSB write only)
|
|
|
|
- YCSB (multi-phase: write + CRUD phase)
|
|
|
|
|
|
|
|
##### Important YCSB Parameters
|
|
|
|
- *maxExecutionTime* defines the runtime of the evaluation in seconds
|
|
|
|
- *recordCount* defines the number of records to be inserted in the DBMS, i.e. the total number of operations in a sensor storage scenario
|
|
|
|
- *operations* defines the total number of operations to be executed in a multi-phase scenario
|
|
|
|
- *fieldLength* defines the size of a record in bytes * 10 (for number of items per record)
|
|
|
|
- DBMS specific Read/Write consistency settings, please check the [YCSB DBMS bindings](https://github.com/brianfrankcooper/YCSB) for more details
|
|
|
|
|
|
|
|
#### TPC-C
|
|
|
|
- TPC-C (by Cockroach loadgen)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### Supported Clouds
|
|
|
|
|
|
|
|
- OpenStack V2
|
|
|
|
- OpenStack V3
|
|
|
|
- Amazon EC2
|
|
|
|
|
|
|
|
#### Failure Specification
|
|
|
|
- *failureLevel* defines the type of failure to inject, currently supported: VM
|
|
|
|
- *nodeType* defines the target DBMS node to inject the failure, currently supported: DATA (recommended), SEED and MANAGEMENT (only for MongoDB)
|
|
|
|
- *gibbonDelay* defines the delay before inserting the failure in parallel to the workload execution
|
|
|
|
- *failureRecovery* defines if a recovery action should be triggered, i.e. adding a new node to the cluster
|
|
|
|
- *recoveryDelay* defines the delay before triggering the recovery action
|
|
|
|
|
|
|
|
#### Examples
|
|
|
|
|
|
|
|
For getting started please have a look at the availability [example templates](https://omi-gitlab.e-technik.uni-ulm.de/mowgli/getting-started/tree/master/examples/availability) |
|
|
|
\ No newline at end of file |