Goals:
- InfluxDB compatible line protocol
- InfluxDB compatible query language (to be supported by grafana)
Immidiate Todo:
- multi type for metrics
- labels for metrics
- fix TODOs
- consistent error handling with anyhow
- query engine execution
- index for labels
Plan:
- WAL
- Ingestion
- Recovery
- Multi-threading for storage
- Storage writer
- Storage reader
- Compaction
- Query support
- Index
Ideas:
-
SIMD instructions to do aggregations *
-
NO mmap to support more stable latency and performance
-
Fuzzy testing of storage engine:
-
Better CPU utilization in ingestion pipeline: network card -> CPUs
-
Data sketches (maybe)
-
Use zerocopy for parsing:
-
Structures to to try
-
Set up benches:
-
Check alternatives for bytes arrays:
-
Check low level networking (maybe):
-
O_DIRECT for wall log
-
Use smallvec or/and arrayvec crate
-
measure allocation rate using DHAT
Refs:
- replication:
- tsdbs: