TimescaleDB is a category-defining relational database for time-series data. Packaged as a PostgreSQL extension, TimescaleDB is designed to be easy to use, easy to get started, and easy to maintain.
docker-compose exec -T timescaledb psql -U prest <<SQL
COPY device_info FROM '/var/tmp/devices_small_device_info.csv' WITH (FORMAT CSV);
COPY readings FROM '/var/tmp/devices_small_readings.csv' WITH (FORMAT CSV);
SQL
docker-compose exec -T timescaledb psql -U prest <<SQL
SELECT
time, device_id, battery_temperature
FROM
readings
WHERE
battery_status = 'charging'
ORDER BY
time DESC
LIMIT
10;
SQL
docker-compose exec -T timescaledb psql -U prest <<SQL
SELECT
time, readings.device_id, cpu_avg_1min,
battery_level, battery_status, device_info.model
FROM
readings
JOIN device_info ON readings.device_id = device_info.device_id
WHERE
battery_level < 33
AND battery_status = 'discharging'
ORDER BY
cpu_avg_1min DESC, time DESC
LIMIT
5;
SQL
docker-compose exec -T timescaledb psql -U prest <<SQL
CREATE VIEW battery_level_by_hour AS
SELECT
time_bucket('1 hour', time) AS "hour",
model,
min(battery_level) AS min_battery_level,
max(battery_level) AS max_battery_level
FROM
readings
JOIN device_info ON readings.device_id = device_info.device_id
GROUP BY
"hour", model;
SQL
docker-compose exec -T timescaledb psql -U prest <<SQL
SELECT
hour, min(min_battery_level), max(max_battery_level)
FROM
battery_level_by_hour
WHERE
model IN ('pinto', 'focus')
GROUP BY
hour
ORDER BY
hour ASC
LIMIT
12;
SQL