CLI for orchestrating parallel HammerDB database benchmarks at scale on Kubernetes
Project description
HammerDB-Scale
A Python CLI for orchestrating parallel HammerDB database benchmarks at scale on Kubernetes.
What is HammerDB-Scale?
HammerDB-Scale runs synchronized database performance tests across multiple database instances simultaneously. It deploys HammerDB as Kubernetes Jobs targeting multiple databases in parallel, making it ideal for:
- Storage Platform Testing: Validate storage array performance under realistic multi-database workloads
- Scale Testing: Test how storage performs when serving 2, 4, 8+ databases concurrently
- Capacity Planning: Understand how many database workloads your storage can support
How It Works
HammerDB-Scale is a CLI orchestrator that sits on your workstation and drives benchmarks through Kubernetes:
+--------------------------------------+
| Kubernetes Cluster |
hammerdb-scale CLI | |
(your machine) | +-----------+ +--------------+ |
| | | HammerDB |--->| Database 1 | |
| helm install | | Job 1 | +--------------+ |
|---------------->| +-----------+ |
| | +-----------+ +--------------+ |
| kubectl logs | | HammerDB |--->| Database 2 | |
|---------------->| | Job 2 | +--------------+ |
| | +-----------+ |
| results/report | +-----------+ +--------------+ |
| | | HammerDB |--->| Database N | |
| | | Job N | +--------------+ |
| | +-----------+ |
| +--------------------------------------+
- You define your database targets and benchmark parameters in a YAML config file
- The CLI translates your config into Helm values and deploys one Kubernetes Job per database target
- Each Job runs a HammerDB container that connects to its assigned database and executes the benchmark
- All Jobs run in parallel, producing synchronized load across all targets
- The CLI collects results from Job logs, aggregates metrics (TPM/NOPM for TPC-C, QphH for TPC-H), and generates an HTML scorecard
Quick Start
# Install
pip install hammerdb-scale
# Generate config interactively
hammerdb-scale init
# Validate config and database connectivity
hammerdb-scale validate
# Build schema, run benchmark, collect results
hammerdb-scale run --build --wait
hammerdb-scale results
hammerdb-scale report --open
Supported Databases
| Database | Benchmarks | Container Image |
|---|---|---|
| SQL Server | TPC-C, TPC-H | sillidata/hammerdb-scale:latest |
| Oracle | TPC-C, TPC-H | sillidata/hammerdb-scale-oracle:latest |
Workflow
init → validate → run --build → results → report
│ │ │ │ │
│ │ │ │ └─ HTML scorecard
│ │ │ └─ aggregate TPM/NOPM/QphH
│ │ └─ build schema + run benchmark (parallel K8s jobs)
│ └─ check config, helm, kubectl, DB connectivity
└─ generate config interactively
Commands
| Command | Description |
|---|---|
version |
Show CLI, Python, helm, kubectl versions |
init |
Generate config file interactively |
validate |
Validate config, prerequisites, and connectivity |
build |
Create benchmark schema on database targets |
run |
Execute benchmark workload (--build for combined) |
status |
Show job status with --watch for live updates |
logs |
View HammerDB output logs |
results |
Aggregate and display benchmark results |
report |
Generate self-contained HTML scorecard |
clean |
Remove K8s resources and/or database tables |
Documentation
- Configuration Reference — YAML schema, target defaults, examples
- Usage Guide — Command reference, results interpretation, troubleshooting
- Container Images — Pre-built images, building your own, architecture
- Migration Guide (v1 to v2) — Upgrading from shell-script version
- Security — Credential handling and network considerations
- Changelog
Requirements
- Python 3.10+
- Helm 3.x — used to template and deploy Kubernetes Jobs
- kubectl — configured with a context that has access to your cluster
- Kubernetes cluster — with permissions to create Jobs and Namespaces
- Database targets — one or more Oracle or SQL Server instances reachable from the cluster
Optional
- pipx — recommended for installing CLI tools in isolated environments:
pipx install hammerdb-scale
Configuration
See the Configuration Reference for the full schema. Minimal example:
name: my-benchmark
default_benchmark: tprocc
targets:
defaults:
type: mssql
username: sa
password: "YourPassword"
mssql: {}
hosts:
- name: sql-01
host: sql-01.example.com
- name: sql-02
host: sql-02.example.com
hammerdb:
tprocc:
warehouses: 100
load_virtual_users: 4
driver: timed
rampup: 2
duration: 5
Complete examples for all database/benchmark combinations are in the examples/ directory.
Contributing
Contributions are welcome! Please open an issue to report bugs or request features.
License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hammerdb_scale-2.0.2.tar.gz.
File metadata
- Download URL: hammerdb_scale-2.0.2.tar.gz
- Upload date:
- Size: 163.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ab04e786fa371889e1de94415fad5b551a1f5e6f0913077014aeb039a82a2d7f
|
|
| MD5 |
4675a5fa17442e3ce55759df05cca201
|
|
| BLAKE2b-256 |
269dd98461fb1e575fbb8099d922ae8590e28f3c508433ba811774873db0fdbd
|
Provenance
The following attestation bundles were made for hammerdb_scale-2.0.2.tar.gz:
Publisher:
publish.yml on PureStorage-OpenConnect/hammerdb-scale
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hammerdb_scale-2.0.2.tar.gz -
Subject digest:
ab04e786fa371889e1de94415fad5b551a1f5e6f0913077014aeb039a82a2d7f - Sigstore transparency entry: 1048142348
- Sigstore integration time:
-
Permalink:
PureStorage-OpenConnect/hammerdb-scale@36c9a672c9cd06e5b6a9d183798ffb4adc2981e8 -
Branch / Tag:
refs/tags/v2.0.2 - Owner: https://github.com/PureStorage-OpenConnect
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@36c9a672c9cd06e5b6a9d183798ffb4adc2981e8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file hammerdb_scale-2.0.2-py3-none-any.whl.
File metadata
- Download URL: hammerdb_scale-2.0.2-py3-none-any.whl
- Upload date:
- Size: 151.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
538b2f57f4c45d8302679ca3391e74c6d85b01e7ce5084eed24059011faeb642
|
|
| MD5 |
8621f0f44d30cb1b52fe9cfec2b19920
|
|
| BLAKE2b-256 |
79c20c31bb847959c17ad57ed59eaace36a9ff63c7858b45d152325fc8c8b845
|
Provenance
The following attestation bundles were made for hammerdb_scale-2.0.2-py3-none-any.whl:
Publisher:
publish.yml on PureStorage-OpenConnect/hammerdb-scale
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hammerdb_scale-2.0.2-py3-none-any.whl -
Subject digest:
538b2f57f4c45d8302679ca3391e74c6d85b01e7ce5084eed24059011faeb642 - Sigstore transparency entry: 1048142390
- Sigstore integration time:
-
Permalink:
PureStorage-OpenConnect/hammerdb-scale@36c9a672c9cd06e5b6a9d183798ffb4adc2981e8 -
Branch / Tag:
refs/tags/v2.0.2 - Owner: https://github.com/PureStorage-OpenConnect
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@36c9a672c9cd06e5b6a9d183798ffb4adc2981e8 -
Trigger Event:
push
-
Statement type: