A Kubernetes orchestrator for parallel HammerDB testing designed to validate storage platform performance at 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
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.
- 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
| Database | Status | Image |
|---|---|---|
| SQL Server | Ready | sillidata/hammerdb-scale:latest |
| Oracle | Ready | Build Dockerfile.oracle (setup guide) |
| PostgreSQL | Planned | - |
| MySQL | Planned | - |
targets:
- name: sqlserver-01
type: mssql
host: "sqlserver1.example.com"
username: sa
password: "YourPassword"
tprocc:
databaseName: tpcc./deploy-test.sh --phase build --test-id test-001 --benchmark tprocc
kubectl logs -n default -l hammerdb.io/phase=build --followhelm 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./aggregate-results.sh --phase load --test-id test-001
cat ./results/test-001/load/summary.txt┌─────────────────────────────────────────────────────────────┐
│ 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 │
└─────────────────────────────────────────────────────────────┘
| 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 |
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
# 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-scaleContributions welcome! Especially:
- PostgreSQL implementation
- MySQL/MariaDB implementation
- Additional monitoring features
Same as HammerDB project.
Built on HammerDB by Steve Shaw.