Skip to content

HammerDB-Scale orchestrates parallel database benchmarks on Kubernetes to stress test infrastructure. Deploy multiple independent TPC-C/TPC-H workloads, correlate database performance with storage/compute/network metrics, find consolidation limits.

Notifications You must be signed in to change notification settings

PureStorage-OpenConnect/hammerdb-scale

Repository files navigation

HammerDB Scale

A Kubernetes orchestrator for parallel HammerDB testing designed to validate storage platform performance at scale.

What is HammerDB Scale?

HammerDB Scale runs synchronized database performance tests across multiple database instances simultaneously. This is particularly valuable 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

Storage Platform (SAN/NAS/Cloud)
         |
    ┌────┴────┬────────┬────────┐
    │         │        │        │
  DB-01    DB-02    DB-03    DB-04  ← Multiple database instances
    │         │        │        │
    └────┬────┴────────┴────────┘
         │
  HammerDB Scale (Kubernetes Jobs)
    Parallel TPC-C/TPC-H Tests

Each database gets its own Kubernetes job running HammerDB, all starting simultaneously to create realistic storage load patterns.

Features

  • Parallel Execution: Test multiple databases simultaneously
  • Simple Design: One Kubernetes job per database target
  • Helm Deployment: Simple configuration and management
  • Storage Metrics: Optional Pure Storage FlashArray monitoring
  • Result Aggregation: Automatic collection and summarization

Supported Databases

Database Status Image
SQL Server Ready sillidata/hammerdb-scale:latest
Oracle Ready Build Dockerfile.oracle (setup guide)
PostgreSQL Planned -
MySQL Planned -

Quick Start

1. Configure targets in values.yaml

targets:
  - name: sqlserver-01
    type: mssql
    host: "sqlserver1.example.com"
    username: sa
    password: "YourPassword"
    tprocc:
      databaseName: tpcc

2. Build schemas

./deploy-test.sh --phase build --test-id test-001 --benchmark tprocc
kubectl logs -n default -l hammerdb.io/phase=build --follow

3. Run load test

helm uninstall build-test-001
./deploy-test.sh --phase load --test-id test-001 --benchmark tprocc
kubectl logs -n default -l hammerdb.io/phase=load --follow

4. Aggregate results

./aggregate-results.sh --phase load --test-id test-001
cat ./results/test-001/load/summary.txt

Docker Images

┌─────────────────────────────────────────────────────────────┐
│  sillidata/hammerdb-scale:latest (PUBLIC)                   │
│  ✓ SQL Server, PostgreSQL, MySQL drivers                    │
│  ✓ All TCL scripts and Pure Storage collector               │
└─────────────────────────────────────────────────────────────┘
                              │
                    docker build -f Dockerfile.oracle
                              ▼
┌─────────────────────────────────────────────────────────────┐
│  myregistry/hammerdb-scale-oracle:latest (USER BUILDS)      │
│  + Oracle Instant Client 21.11                             │
└─────────────────────────────────────────────────────────────┘

Documentation

Document Description
Configuration Guide All values.yaml options
Usage Guide Workflows and troubleshooting
Oracle Setup Building Oracle-enabled images
Adding Databases Extend to PostgreSQL, MySQL
Changelog Version history

Project Structure

hammerdb-scale/
├── Chart.yaml              # Helm chart metadata
├── values.yaml             # Configuration
├── CHANGELOG.md            # Version history
├── Dockerfile              # Base image (SQL Server)
├── Dockerfile.oracle       # Oracle extension
├── templates/              # Helm templates
├── scripts/                # HammerDB TCL scripts
├── examples/               # Example configurations
└── docs/                   # Documentation

Quick Reference

# Deploy
./deploy-test.sh --phase build --test-id test-001 --benchmark tprocc
./deploy-test.sh --phase load --test-id test-001 --benchmark tprocc

# Monitor
kubectl get jobs -n hammerdb-scale -w
kubectl logs -n hammerdb-scale -l hammerdb.io/phase=load --follow

# Results
./aggregate-results.sh --phase load --test-id test-001

# Cleanup
helm uninstall load-test-001 -n hammerdb-scale

Contributing

Contributions welcome! Especially:

  • PostgreSQL implementation
  • MySQL/MariaDB implementation
  • Additional monitoring features

License

Same as HammerDB project.

Credits

Built on HammerDB by Steve Shaw.

About

HammerDB-Scale orchestrates parallel database benchmarks on Kubernetes to stress test infrastructure. Deploy multiple independent TPC-C/TPC-H workloads, correlate database performance with storage/compute/network metrics, find consolidation limits.

Resources

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published