Expand description
Time-series optimizations for OxiRS
Status: Production Ready (v0.2.2)
This crate provides high-performance time-series storage and query capabilities for IoT-scale RDF data.
§Features
- Gorilla compression - 40:1 storage reduction (Facebook, VLDB 2015)
- Delta-of-delta timestamps - <2 bits per timestamp
- SPARQL temporal extensions - WINDOW, RESAMPLE, INTERPOLATE
- 500K+ writes/sec - High-throughput ingestion
- Hybrid storage - Seamless RDF + Time-Series integration
- Retention policies - Automatic downsampling and expiration
- Write-Ahead Log - Crash recovery and durability with CRC32 protection
- Background compaction - Automatic storage optimization
- Columnar storage - Disk-backed binary format
- Series indexing - Efficient chunk lookups
- Raft replication - Distributed consensus with quorum commits
- Arrow/Parquet export - Analytics interoperability
§Architecture
+---------------------------------------------+
| Hybrid Storage Model |
+---------------------------------------------+
| |
| +--------------+ +-----------------+ |
| | RDF Store |<-->| Time-Series DB | |
| | (oxirs-tdb) | | (this crate) | |
| +--------------+ +-----------------+ |
| | | |
| | Semantic | High-freq |
| | metadata | sensor data |
| +----------+----------+ |
| | |
| +----------v---------+ |
| | Unified SPARQL | |
| | Query Layer | |
| +--------------------+ |
+---------------------------------------------+§Quick Start
§Basic Usage
use oxirs_tsdb::HybridStore;
use chrono::Utc;
// Create hybrid store (RDF + time-series)
let store = HybridStore::new()?;
// Direct time-series insertion
let series_id = 1;
let timestamp = Utc::now();
let value = 22.5;
store.insert_ts(series_id, timestamp, value)?;
// Query time range
let start = timestamp - chrono::Duration::hours(1);
let end = timestamp + chrono::Duration::hours(1);
let points = store.query_ts_range(series_id, start, end)?;Re-exports§
pub use config::AggregationFunction;pub use config::TsdbConfig;pub use error::TsdbError;pub use error::TsdbResult;pub use series::DataPoint;pub use series::SeriesDescriptor;pub use series::SeriesMetadata;pub use storage::ChunkEntry;pub use storage::ColumnarStore;pub use storage::SeriesIndex;pub use storage::DeltaOfDeltaCompressor;pub use storage::DeltaOfDeltaDecompressor;pub use storage::GorillaCompressor;pub use storage::GorillaDecompressor;pub use storage::TimeChunk;pub use write::BufferConfig;pub use write::BufferStats;pub use write::CompactionConfig;pub use write::CompactionStats;pub use write::Compactor;pub use write::RetentionEnforcer;pub use write::RetentionStats;pub use write::WalEntry;pub use write::WriteAheadLog;pub use write::WriteBuffer;pub use query::Aggregation;pub use query::AggregationResult;pub use query::InterpolateMethod;pub use query::Interpolator;pub use query::QueryBuilder;pub use query::QueryEngine;pub use query::QueryResult;pub use query::RangeQuery;pub use query::ResampleBucket;pub use query::Resampler;pub use query::TimeRange;pub use query::WindowFunction;pub use query::WindowSpec;pub use integration::Confidence;pub use integration::DetectionResult;pub use integration::HybridStore;pub use integration::RdfBridge;pub use sparql::interpolate_function;pub use sparql::register_temporal_functions;pub use sparql::resample_function;pub use sparql::window_function;pub use sparql::QueryRouter;pub use sparql::RoutingDecision;pub use sparql::TemporalFunctionRegistry;pub use sparql::TemporalValue;pub use compression::dict_decode;pub use compression::dict_encode;pub use compression::gorilla_decode;pub use compression::gorilla_encode;pub use compression::rle_decode;pub use compression::rle_encode;pub use compression::AdaptiveCompressor;pub use compression::CompressedBlock;pub use compression::CompressionAlgorithm;pub use compression::DictionaryBlock;pub use compression::DictionaryEncoder;pub use compression::GorillaDecoder;pub use compression::GorillaEncoder;pub use compression::RleBlock;pub use compression::RleEncoder;pub use compression::RleRun;pub use replication::AppendEntriesArgs;pub use replication::AppendEntriesReply;pub use replication::LogEntry;pub use replication::RaftError;pub use replication::RaftResult;pub use replication::RaftRole;pub use replication::RaftState;pub use replication::RequestVoteArgs;pub use replication::RequestVoteReply;pub use replication::TsdbCommand;pub use replication::WriteEntry;pub use replication::ReplicationGroup;pub use replication::TsdbRaftNode;pub use write::BatchWriter;pub use write::BatchWriterConfig;pub use write::CrcWal;pub use write::MetricPoint;pub use analytics::AggregationFunction as ExportAggregation;pub use analytics::ArrowExporter;pub use analytics::ColumnarExport;pub use analytics::ColumnarStats;pub use analytics::DuckDbQueryAdapter;pub use analytics::ExportedPoint;pub use analytics::ParquetCompression;pub use analytics::ParquetExporter;pub use analytics::DataValueType;pub use analytics::MetricSchema;pub use analytics::MetricSchemaBuilder;pub use analytics::SqlDataPoint;pub use analytics::SqlExporter;pub use analytics::AdaptiveKalmanFilter;pub use analytics::AnomalyEvent;pub use analytics::KalmanAnomaly;pub use analytics::KalmanFilter;pub use analytics::GpuAggMetrics;pub use analytics::GpuAggOp;pub use analytics::GpuDownsampler;pub use analytics::GpuTimeSeriesAggregator;pub use analytics::ArrowColumn;pub use analytics::ArrowDataType;pub use analytics::ArrowField;pub use analytics::ArrowIpcReader;pub use analytics::ArrowIpcWriter;pub use analytics::ArrowRecordBatch;pub use analytics::ArrowSchema;pub use analytics::TaggedDataPoint;pub use analytics::TimeUnit;pub use analytics::ParquetColumn;pub use analytics::ParquetIpcCompression;pub use analytics::ParquetReader;pub use analytics::ParquetValues;pub use analytics::ParquetWriter;
Modules§
- alert_
rule - Time-series alerting rules engine (v1.7.0). Time-series alerting rules engine.
- analytics
- Advanced analytics: anomaly detection and time-series forecasting. Advanced analytics for time-series data stored in OxiRS TSDB.
- anomaly_
detection - Statistical anomaly detection for time-series data (v1.2.0). Statistical Anomaly Detection for Time-Series Data.
- anomaly_
detector - Statistical anomaly detection for time-series data. Time-series anomaly detection algorithms.
- compression
- Advanced compression algorithms: Gorilla XOR, RLE, Dictionary, Adaptive. Advanced compression algorithms for time-series data
- compression_
codec - Time-series value compression codecs: Delta, RLE, Zigzag, Gorilla, Plain (v1.5.0). Time-series value compression codecs
- config
- Configuration types for TSDB storage and query options.
- continuous_
query - Continuous aggregate queries with materialized views (v1.8.0). Continuous aggregate queries for time-series data.
- downsampler
- Time-series downsampling algorithms: LTTB, Average, MinMax, First, Last, Sum, Count (v1.2.0). Time-series downsampling algorithms.
- error
- Error types and result aliases for TSDB operations.
- event_
correlator - Time-series event correlation engine: Pearson correlation, sliding-window evaluation, threshold triggers, and event purging (v1.1.0 round 14) Time-series event correlation engine (v1.1.0 round 14).
- forecaster
- Time-series forecasting using exponential smoothing and moving averages (v1.1.0 round 15) Time-series forecasting using exponential smoothing and moving averages.
- gorilla_
compression - Gorilla/Delta-of-Delta compression for time-series data (v1.1.0). Gorilla / Delta-of-Delta Compression for Time-Series Data
- integration
- Integration with oxirs-core RDF Store (hybrid storage). Integration with oxirs-core RDF Store
- query
- Query engine for time-series data with aggregations and window functions. Time-series query engine
- replication
- Raft consensus state machine for distributed TSDB replication. Raft-based replication for distributed TSDB
- retention_
policy - Retention policies for time-series data expiration and downsampling (v1.1.0). Time-series retention policy management.
- rollup_
engine - Time-series rollup/downsampling engine: windowed Mean/Sum/Min/Max/Count/First/Last aggregation, multi-resolution rollup, and LTTB visual downsampling (v1.1.0 round 16) Time-series rollup and downsampling engine (v1.1.0 round 16).
- series
- Series definitions including data points and metadata.
- series_
iterator - Forward/backward time series iterator with windowing (v1.6.0).
- sparql
- SPARQL temporal extensions for time-series queries. SPARQL temporal extensions for time-series queries
- storage
- Storage layer with compression and chunk management. Columnar storage engine with compression
- tag_
index - Tag-based time series indexing with inverted index (v1.9.0). Tag-based time series indexing.
- write
- Write path with WAL and compaction for durable data ingestion. Write path with WAL and compaction
- write_
buffer - In-memory write buffer for time-series ingestion: size/time flush policies, WAL integration, backpressure (v2.0.0). In-memory write buffer for time-series data ingestion.