oxirs_vec/tiering/mod.rs
1//! # Hot/Warm/Cold Tiering System for Vector Indices
2//!
3//! This module provides a production-grade tiering system that automatically manages
4//! vector indices across different storage tiers based on access patterns, size, and
5//! performance requirements.
6//!
7//! ## Tiering Strategy
8//!
9//! - **Hot Tier**: In-memory, frequently accessed indices (sub-millisecond latency)
10//! - **Warm Tier**: Memory-mapped or SSD-backed indices (millisecond latency)
11//! - **Cold Tier**: Compressed, disk-based indices (second latency, loaded on demand)
12//!
13//! ## Features
14//!
15//! - Automatic tier promotion/demotion based on access patterns
16//! - Configurable policies (LRU, LFU, cost-based, adaptive)
17//! - Integration with monitoring and analytics
18//! - Support for gradual tier transitions
19//! - Predictive tier management using ML
20//! - Multi-tenant resource allocation
21//!
22//! ## Example
23//!
24//! ```rust,ignore
25//! use oxirs_vec::tiering::{TieringManager, TieringConfig, TieringPolicy};
26//!
27//! let config = TieringConfig {
28//! hot_tier_capacity_gb: 16.0,
29//! warm_tier_capacity_gb: 128.0,
30//! cold_tier_capacity_gb: 1024.0,
31//! policy: TieringPolicy::Adaptive,
32//! ..Default::default()
33//! };
34//!
35//! let mut manager = TieringManager::new(config)?;
36//!
37//! // Add an index
38//! manager.register_index("embeddings_v1", index)?;
39//!
40//! // Access triggers automatic tier management
41//! let results = manager.query_index("embeddings_v1", query_vector, k)?;
42//!
43//! // Check tier statistics
44//! let stats = manager.get_tier_statistics();
45//! println!("Hot tier: {:.2}% utilized", stats.hot_tier_utilization * 100.0);
46//! ```
47
48#![allow(dead_code)]
49
50pub mod access_tracker;
51pub mod config;
52pub mod manager;
53pub mod metrics;
54pub mod policies;
55pub mod storage_backends;
56pub mod tier_optimizer;
57pub mod types;
58
59#[cfg(test)]
60mod tests;
61
62// Re-export main types
63pub use config::TieringConfig;
64pub use manager::TieringManager;
65pub use metrics::TierMetrics;
66pub use policies::{TierTransitionReason, TieringPolicy};
67pub use types::{IndexMetadata, StorageTier, TierStatistics};