administering-linux
Manage Linux systems covering systemd services, process management, filesystems, networking, performance tuning, and troubleshooting. Use when deploying…
Time-series database implementation for metrics, IoT, financial data, and observability backends. Use when building dashboards, monitoring systems, IoT platforms, or financial applications. Covers TimescaleDB (PostgreSQL), InfluxDB, ClickHouse, QuestDB, continuous aggregates,
$ npx -y skills add ancoleman/ai-design-components --skill using-timeseries-databases --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/using-timeseries-databasesContext preview
The summary Claude sees to decide when to auto-load this skill.
Time-series database implementation for metrics, IoT, financial data, and observability backends. Use when building dashboards, monitoring systems, IoT platforms, or financial applications. Covers TimescaleDB (PostgreSQL), InfluxDB, ClickHouse, QuestDB, continuous aggregates,
name: using-timeseries-databases description: Time-series database implementation for metrics, IoT, financial data, and observability backends. Use when building dashboards, monitoring systems, IoT platforms, or financial applications. Covers TimescaleDB (PostgreSQL), InfluxDB, ClickHouse, QuestDB, continuous aggregates, downsampling (LTTB), and retention policies.
Implement efficient storage and querying for time-stamped data (metrics, IoT sensors, financial ticks, logs).
Choose based on primary use case:
**TimescaleDB** - PostgreSQL extension
**InfluxDB** - Purpose-built TSDB
**ClickHouse** - Columnar analytics
**QuestDB** - High-throughput IoT
Automatic time-based partitioning:
CREATE TABLE sensor_data (
time TIMESTAMPTZ NOT NULL,
sensor_id INTEGER NOT NULL,
temperature DOUBLE PRECISION,
humidity DOUBLE PRECISION
);
SELECT create_hypertable('sensor_data', 'time');Benefits:
Pre-computed rollups for fast dashboard queries:
-- TimescaleDB: hourly rollup
CREATE MATERIALIZED VIEW sensor_data_hourly
WITH (timescaledb.continuous) AS
SELECT time_bucket('1 hour', time) AS hour,
sensor_id,
AVG(temperature) AS avg_temp,
MAX(temperature) AS max_temp,
MIN(temperature) AS min_temp
FROM sensor_data
GROUP BY hour, sensor_id;
-- Auto-refresh policy
SELECT add_continuous_aggregate_policy('sensor_data_hourly',
start_offset => INTERVAL '3 hours',
end_offset => INTERVAL '1 hour',
schedule_interval => INTERVAL '1 hour');Query strategy:
Automatic data expiration:
-- TimescaleDB: delete data older than 90 days
SELECT add_retention_policy('sensor_data', INTERVAL '90 days');Common patterns:
Use LTTB (Largest-Triangle-Three-Buckets) algorithm to reduce points for charts.
Problem: Browsers can't smoothly render 1M points Solution: Downsample to 500-1000 points preserving visual fidelity
-- TimescaleDB toolkit LTTB SELECT time, value FROM lttb( 'SELECT time, temperature FROM sensor_data WHERE sensor_id = 1', 1000 -- target number of points );
Thresholds:
Time-series databases are the primary data source for real-time dashboards.
Query patterns by component:
| Component | Query Pattern | Example | |-----------|---------------|---------| | KPI Card | Latest value | `SELECT temperature FROM sensors ORDER BY time DESC LIMIT 1` | | Trend Chart | Time-bucketed avg | `SELECT time_bucket('5m', time), AVG(cpu) GROUP BY 1` | | Heatmap | Multi-metric window | `SELECT hour, AVG(cpu), AVG(memory) GROUP BY hour` | | Alert | Threshold check | `SELECT COUNT(*) WHERE cpu > 80 AND time > NOW() - '5m'` |
Data flow: 1. Ingest metrics (Prometheus, MQTT, application events) 2. Store in time-series DB with continuous aggregates 3. Apply retention policies (raw: 30d, rollups: 1y) 4. Query layer downsamples to optimal points (LTTB) 5. Frontend renders with Recharts/visx
Auto-refresh intervals:
For implementation guides, see:
For downsampling implementation:
For examples:
For scripts:
Batch inserts:
| Database | Batch Size | Expected Throughput | |----------|------------|---------------------| | TimescaleDB | 1,000-10,000 | 100K-1M rows/sec | | InfluxDB | 5,000+ | 500K-1M points/sec | | ClickHouse | 10,000-100,000 | 1M-10M rows/sec | | QuestDB | 10,000+ | 4M+ rows/sec |
Rule 1: Always filter by time first (indexed)
-- BAD: Full table scan SELECT * FROM metrics WHERE metric_name = 'cpu'; -- GOOD: Time index used SELECT * FROM metrics WHERE time > NOW() - INTERVAL '1 hour' AND metric_name = 'cpu';
Rule 2: Use continuous aggregates for dashboard queries
-- BAD: Aggregate 1B rows every dashboard load
SELECT time_bucket('1 hour', time), AVG(cpu)
FROM metrics
WHERE time > NOW() - INTERVAL '30 days'
GROUP BY 1;
-- GOOD: Query pre-computed rollup
SELECT hour, avg_cpu
FROM metrics_hourly
WHERE hour > NOW() - INTERVAL '30Comprehensive UI/UX and Backend component design skills for AI-assisted development with Claude
Repo: ancoleman/ai-design-components
Manage Linux systems covering systemd services, process management, filesystems, networking, performance tuning, and troubleshooting. Use when deploying…
Data pipelines, feature stores, and embedding generation for AI/ML systems. Use when building RAG pipelines, ML feature serving, or data transformations.…
Strategic guidance for designing modern data platforms, covering storage paradigms (data lake, warehouse, lakehouse), modeling approaches (dimensional,…
Design cloud network architectures with VPC patterns, subnet strategies, zero trust principles, and hybrid connectivity. Use when planning VPC topology,…
Design comprehensive security architectures using defense-in-depth, zero trust principles, threat modeling (STRIDE, PASTA), and control frameworks (NIST CSF,…
Assembles component outputs from AI Design Components skills into unified, production-ready component systems with validated token integration, proper import…