The Time Series Benchmark Suite (TSBS) is a collection of Go programs designed to generate datasets and benchmark read and write performance across multiple time series databases. The repository supports eleven databases including TimescaleDB, MongoDB, InfluxDB, CrateDB, Cassandra, ClickHouse, Akumuli, QuestDB, SiriDB, Timestream, and VictoriaMetrics. The codebase originated from a fork of InfluxDB's initial benchmarking work and has evolved into a comprehensive tool for evaluating database performance on time series workloads.
TSBS implements two primary use cases for realistic workload simulation. The DevOps use case models monitoring scenarios with two variants: a full form generating 100 metrics per reading interval across nine system categories like CPU and memory, and a simplified CPU-only form with ten metrics per reading. The Internet of Things use case simulates a trucking company scenario with diagnostic data, metrics, environmental factors like out-of-order data and batch ingestion, and metadata tracking. Not all databases support both use cases, with coverage varying by implementation.
The benchmarking process operates in three distinct phases. First, data and queries are pre-generated deterministically using configurable parameters including use case selection, PRNG seed, device or truck count, time ranges, and reading intervals. This deterministic generation ensures identical datasets and queries across multiple benchmark runs. Second, the pre-generated data is loaded into target databases using database-specific loader programs that share common flags for batch size, worker concurrency, and connection details while offering database-specific tuning options. Third, query execution performance is measured against the loaded datasets. The suite currently benchmarks bulk load and query execution performance but does not yet measure concurrent insert and query performance, which is identified as a future priority.
TSBS uses native Go clients wherever possible to connect to each database, ensuring fair performance comparisons. The data generation process is entirely deterministic, allowing reproducible benchmarks across different runs and databases. The IoT use case specifically generates realistic data imperfections including out-of-order entries and missing data to better represent production scenarios.
According to GitGenius activity tracking, the repository shows median issue and pull request response latency of approximately 9,561 hours with a mean of 26,850 hours across seventeen tracked items. Enhancement requests and new database additions represent the most active issue categories, with contributors including AlinaRinn, huangsijun17, and orcarex. The repository maintains connections with related projects through overlapping contributors, including zed-industries/zed, timescale/timescaledb, and clickhouse/clickhouse.
The tool provides multiple query types for comprehensive performance evaluation, with query generation supporting various analytical patterns. Users can generate queries through individual commands or batch processing via helper scripts. TSBS offers both unified loading through the tsbs_load executable and database-specific loaders, with convenience shell scripts available for simplified local testing. The repository includes supplemental documentation for each supported database, detailing specific implementation details and configuration requirements for accurate benchmarking across diverse time series database platforms.