Skip to main content

CLI for orchestrating parallel HammerDB database benchmarks at scale on Kubernetes

Project description

HammerDB-Scale

PyPI version Python versions License

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:

                          ┌──────────────────────────────────────┐
hammerdb-scale CLI        │         Kubernetes Cluster           │
  (your machine)          │                                      │
        │                 │   ┌─────────┐     ┌──────────────┐  │
        │  helm install   │   │ HammerDB│────▶│ Database 1   │  │
        ├────────────────▶│   │  Job 1  │     └──────────────┘  │
        │                 │   ├─────────┤     ┌──────────────┐  │
        │  kubectl logs   │   │ HammerDB│────▶│ Database 2   │  │
        ├────────────────▶│   │  Job 2  │     └──────────────┘  │
        │                 │   ├─────────┤     ┌──────────────┐  │
        │  results/report │   │ HammerDB│────▶│ Database N   │  │
        │                 │   │  Job N  │     └──────────────┘  │
        │                 │   └─────────┘                       │
        │                 └──────────────────────────────────────┘
  1. You define your database targets and benchmark parameters in a YAML config file
  2. The CLI translates your config into Helm values and deploys one Kubernetes Job per database target
  3. Each Job runs a HammerDB container that connects to its assigned database and executes the benchmark
  4. All Jobs run in parallel, producing synchronized load across all targets
  5. 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

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

Apache 2.0

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

hammerdb_scale-2.0.0.tar.gz (158.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hammerdb_scale-2.0.0-py3-none-any.whl (147.6 kB view details)

Uploaded Python 3

File details

Details for the file hammerdb_scale-2.0.0.tar.gz.

File metadata

  • Download URL: hammerdb_scale-2.0.0.tar.gz
  • Upload date:
  • Size: 158.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for hammerdb_scale-2.0.0.tar.gz
Algorithm Hash digest
SHA256 6376f80dc1d4df9697d39c2055788b357a9679a764dd4c7688de0807ac39c310
MD5 b443fa6b55e157584e618911e3688274
BLAKE2b-256 59ca22614d9ccd09f2817fd087e856f46076cee9ea1b82d7adec0bc47fb69bbb

See more details on using hashes here.

Provenance

The following attestation bundles were made for hammerdb_scale-2.0.0.tar.gz:

Publisher: publish.yml on PureStorage-OpenConnect/hammerdb-scale

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hammerdb_scale-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: hammerdb_scale-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 147.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for hammerdb_scale-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3cb791b05c39b6f993663bcf59e9dd3f4f7260297ad595dea321cbd9fe6bbe74
MD5 988479d2e33d95b2c0d8af6a35270e3d
BLAKE2b-256 7b20a54a333122f48478dcd3a711a97b82e1f79106956dd63bd5f23aaf2163c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for hammerdb_scale-2.0.0-py3-none-any.whl:

Publisher: publish.yml on PureStorage-OpenConnect/hammerdb-scale

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page