The Time-Series Database
Built for Solar
Purpose-built TSDB for solar energy monitoring — pre-computed aggregation across 4 levels, columnar storage optimized for irradiance & power metrics, and sub-100ms queries at scale. Built in Go for solar farms, inverters, and real-time energy analytics.
git clone https://github.com/soltixdb/soltix.gitWhy Soltix?
Soltix is purpose-built for solar plant monitoring — a domain where every installation is physically fixed at a single geographic location with a permanent timezone.
- ✗Re-aggregate at every query request
- ✗High query latency at scale
- ✗Complex query language required
- ✗Heavy resource usage for analytics
- ✓Pre-computed aggregates — zero re-aggregation
- ✓Sub-100ms queries at any scale
- ✓Simple REST API — no query language needed
- ✓5 adaptive encoders — Gorilla, Delta, Dictionary, Bitmap & Snappy
Zero Re-aggregation
Hourly, daily, monthly, yearly rollups pre-computed at write time — queries read directly
Adaptive Compression
Gorilla XOR for floats, Delta-Zigzag for timestamps, Dictionary for strings, Bitmap for bools, Snappy at block level
Distributed by Design
Hash-based sharding, replication, and MapReduce queries across nodes
Simple REST API
Write and query with standard HTTP — no proprietary query language needed
Everything you need for time-series data
From high-speed ingestion to advanced analytics — Soltix has it all built-in.
Core Capabilities
High Performance
10K+ writes/sec with sub-100ms query latency using memory cache and columnar storage.
Multi-Level Aggregation
Pre-computed 1h / 1d / 1mo / 1y aggregates for instant analytics without re-computation.
Horizontal Scalability
Add storage nodes to scale linearly. Consistent hashing ensures even data distribution.
Efficient Storage
Columnar format with 5 adaptive encoders (Gorilla, Delta, Dictionary, Bitmap, Snappy) and 3-tier group architecture.
Advanced Analytics
Anomaly Detection
Built-in Z-Score, IQR, and Moving Average algorithms with automatic detection.
Forecasting
SMA, Holt-Winters, ARIMA, Prophet-style, and ML-based prediction models.
Downsampling
LTTB, MinMax, Average, M4 algorithms for efficient large dataset visualization.
Streaming Queries
Server-Sent Events (SSE) for real-time large dataset streaming.
Infrastructure
WAL + Batching
Write-ahead log for durability with batch flush for maximum write throughput.
Multi-Queue Support
Flexible message queue backends — NATS, Redis Streams, or Kafka.
MapReduce Queries
Parallel query execution across shards with automatic result aggregation.
API Authentication
API key auth with X-API-Key header or Bearer token support.
Built for Every Time-Series Workload
From solar farms to smart factories — Soltix handles any time-series data at scale.
Solar & Renewable Energy
Monitor inverter output, panel efficiency, and energy yield. Pre-computed daily and monthly aggregates make production reports instant.
Smart Factory & IIoT
Track machine vibration, temperature, pressure, and throughput across production lines. Pre-computed aggregation makes shift reports and OEE dashboards instant.
IoT Sensor Networks
Ingest data from thousands of sensors — temperature, humidity, motion, air quality. Designed for high-cardinality device IDs at scale.
Energy & Utilities
Monitor power grids, water systems, and gas pipelines. Pre-computed aggregation delivers instant daily consumption reports and trend analysis.
Distributed Architecture
Router + Storage separation with message queues for reliable, horizontally scalable deployments.
┌──────────────────────────────────────────────────┐
│ Client Applications │
│ (REST API / SSE / Downloads) │
└────────────────────┬─────────────────────────────┘
│ HTTP
▼
┌──────────────────────────────────────────────────┐
│ Router Service (HTTP API) │
│ ┌────────────────────────────────────────────┐ │
│ │ ShardRouter + QueryCoordinator │ │
│ │ • Consistent hashing (Rendezvous) │ │
│ │ • MapReduce parallel queries │ │
│ │ • Anomaly Detection + Forecasting │ │
│ │ • Streaming (SSE) + Downsampling │ │
│ └────────────────────────────────────────────┘ │
└────────────────────┬─────────────────────────────┘
│
┌─────────┴───────────┐
│ Message Queue │
│ (NATS/Redis/Kafka) │
└─────────┬───────────┘
│
┌────────────┼────────────┐
│ │ │
▼ ▼ ▼
┌───────────┐┌───────────┐┌───────────┐
│ Storage-1 ││ Storage-2 ││ Storage-3 │
│ Group 0-2 ││ Group 3-5 ││ Group 6-8 │
│ gRPC Srv ││ gRPC Srv ││ gRPC Srv │
└─────┬─────┘└─────┬─────┘└─────┬─────┘
│ │ │
┌───┴───┐ ┌───┴───┐ ┌───┴───┐
│ Mem │ │ Mem │ │ Mem │
│ WAL │ │ WAL │ │ WAL │
│ Disk │ │ Disk │ │ Disk │
└───────┘ └───────┘ └───────┘Router Layer
HTTP REST API gateway with query coordination, hash-based routing, and built-in analytics.
Message Queue
Decoupled write path via NATS, Redis Streams, or Kafka for reliable data delivery.
Storage Layer
3-tier engine: Group → Device Group → Partition with columnar format and WAL.
Built for Performance
Optimized at every layer — from memory cache to columnar disk format.
Benchmark Results
Simple REST API
Ingest data with a single POST. Query with intuitive parameters. No query language to learn.
# Write a data point
curl -X POST http://localhost:5555/v1/write \
-H "Content-Type: application/json" \
-d '{
"database": "factory_01",
"collection": "sensors",
"points": [{
"id": "sensor-A1",
"timestamp": "2026-02-15T10:30:00+09:00",
"fields": {
"temperature": 42.1,
"humidity": 65.3,
"pressure": 1013.25
}
}]
}'# Query hourly aggregation
curl http://localhost:5555/v1/query \
-G \
-d database=factory_01 \
-d collection=sensors \
-d interval=1h \
-d start=2026-02-15T00:00:00+09:00 \
-d end=2026-02-15T23:59:59+09:00
# Response (pre-computed — zero re-aggregation)
{
"data": [{
"time": "2026-02-15T10:00:00+09:00",
"device_id": "sensor-A1",
"temperature": { "avg": 41.8, "min": 39.0, "max": 45.0, "count": 60 },
"humidity": { "avg": 64.5, "min": 58.2, "max": 70.1, "count": 60 }
}]
}# configs/config.yaml
storage:
timezone: "Asia/Tokyo" # Timezone for aggregation boundaries
data_dir: "./data"
compression: "adaptive" # Gorilla|Delta|Dictionary|Bitmap|Snappy
aggregation:
levels: ["1h", "1d", "1mo", "1y"] # Pre-compute all 4 levelsGet Started in Minutes
From clone to first query in under 5 minutes. No complex setup, no external dependencies beyond etcd.
Clone & Build
git clone https://github.com/soltixdb/soltix.git
cd soltix
make buildStart Infrastructure
# Start etcd + NATS
docker-compose up -d etcd natsRun Services
# Start storage node
./bin/storage -config configs/config.yaml
# Start router (in another terminal)
./bin/router -config configs/config.yamlWrite & Query
# Write data
curl -X POST http://localhost:5555/v1/write \
-H "Content-Type: application/json" \
-d '{"database":"mydb","collection":"sensors","points":[...]}'
# Query data
curl http://localhost:5555/v1/query?database=mydb&collection=sensors