The Internet of Things (IoT) connects a vast network of devices that continuously generate large volumes of time-stamped data. Extracting value from such data requires storage systems optimized for high-frequency, append-only workloads. This study compares five Time-Series Databases (TSDBs) โ InfluxDB, TimescaleDB, QuestDB, Apache Druid, Graphite โ alongside one relational SQL system (PostgreSQL) and one NoSQL system (Cassandra). The focus is on data ingestion performance in a private cloud environment using a standardized IoT dataset.
The experiments compare relational, time-series, and NoSQL databases under identical workloads.
Benchmarks include:
- Raw ingestion and optimized ingestion codes
- Query latency across six representative queries (Q1โQ6)
- Multiple dataset sizes (5 rows, 2,000 rows, 500,000 rows)
Note: This repository only contains ingestion scripts for each database. Query benchmarking, visualization, and analysis are documented separately in the main thesis but are not part of this code repository.
- The folder
TimeSeriesDatabase_Bechmarks_PythonCodescontains a folders with a<Database name>, each folder containsPython scripts, configuration files, README.md, and usage instructions for benchmarking as part of the time-series database performance evaluation for IoT data. - The folder
Datahas the dataset used for this benchmarking
- Prepare datasets โ CSV files in the
data/folder. - Start your database service โ Local or VM instance.
- Choose the database folder and follow its
README.md. - Run ingestion scripts to insert data.
- Run query scripts to measure query latency.
- Record results for comparison.
- InfluxDB v2
- PostgreSQL
- TimescaleDB (PostgreSQL extension for time-series)
- QuestDB
- Apache Druid
- Graphite (excluded from some results due to disk usage limits)
- Apache Cassandra