Crate manifold_timeseries

Crate manifold_timeseries 

Source
Expand description

§manifold-timeseries

Time-series storage optimizations for the Manifold embedded database.

This crate provides ergonomic, type-safe wrappers around Manifold’s core primitives for storing and querying time-series data with multi-granularity downsampling and retention policies.

§Features

  • Dual encoding strategies: Absolute (default) or delta encoding for timestamps
  • Multi-granularity tables: Raw, minute, hour, and day aggregates
  • Manual downsampling: Compute aggregates (min, max, avg, sum, count)
  • Retention policies: Time-based cleanup of old data
  • High performance: Leverages Manifold’s WAL group commit and ordered key-value storage

§Quick Start

use manifold::column_family::ColumnFamilyDatabase;
use manifold_timeseries::{TimeSeriesTable, AbsoluteEncoding};

let db = ColumnFamilyDatabase::open("my.db")?;
let cf = db.column_family_or_create("metrics")?;

// Write time series data
{
    let write_txn = cf.begin_write()?;
    let mut ts = TimeSeriesTable::<AbsoluteEncoding>::open(&write_txn, "cpu")?;
     
    let timestamp = 1609459200000; // 2021-01-01 00:00:00 UTC
    ts.write("server1.cpu.usage", timestamp, 42.5)?;
     
    drop(ts);
    write_txn.commit()?;
}

// Read time series data
let read_txn = cf.begin_read()?;
let ts_read = manifold_timeseries::TimeSeriesTableRead::<AbsoluteEncoding>::open(&read_txn, "cpu")?;

let start = 1609459200000;
let end = 1609459260000;
for point in ts_read.range("server1.cpu.usage", start, end)? {
    let (timestamp, value) = point?;
    println!("{}: {}", timestamp, value);
}

§Architecture

This crate does not implement time-series analytics (forecasting, anomaly detection, etc.). Instead, it focuses on efficient storage and provides integration traits for external libraries.

Re-exports§

pub use aggregate::Aggregate;
pub use aggregate::Granularity;
pub use encoding::AbsoluteEncoding;
pub use encoding::DeltaEncoding;
pub use encoding::EncodingError;
pub use encoding::TimestampEncoding;
pub use timeseries::TimeSeriesTable;
pub use timeseries::TimeSeriesTableRead;
pub use integration::TimeSeriesSource;

Modules§

aggregate
Aggregate types and granularity levels for time series downsampling.
downsampling
Downsampling logic for time series aggregation.
encoding
Timestamp encoding strategies for time series keys.
integration
Integration traits for external analytics libraries.
retention
Retention policy implementation for automatic data cleanup.
timeseries
Time series table implementation with multi-granularity support.