oxirs_vec/compaction/mod.rs
1//! # Online Index Compaction System
2//!
3//! This module provides production-grade online compaction for vector indices,
4//! enabling efficient memory reclamation and defragmentation without downtime.
5//!
6//! ## Features
7//!
8//! - **Online Compaction**: No downtime during compaction operations
9//! - **Incremental Processing**: Process in small batches to minimize impact
10//! - **Multiple Strategies**: Time-based, size-based, and adaptive compaction
11//! - **Background Operation**: Runs in background thread with low priority
12//! - **Metrics & Monitoring**: Track fragmentation, reclaimed space, and performance
13//! - **Graceful Degradation**: Continues serving queries during compaction
14//!
15//! ## Compaction Strategies
16//!
17//! - **Periodic**: Compact at regular time intervals
18//! - **Threshold-Based**: Compact when fragmentation exceeds threshold
19//! - **Adaptive**: Automatically adjust based on workload patterns
20//! - **Manual**: Trigger compaction on demand
21//!
22//! ## Example
23//!
24//! ```rust,ignore
25//! use oxirs_vec::compaction::{CompactionManager, CompactionConfig, CompactionStrategy};
26//!
27//! let config = CompactionConfig {
28//! strategy: CompactionStrategy::Adaptive,
29//! fragmentation_threshold: 0.3,
30//! compaction_interval: Duration::from_secs(3600),
31//! batch_size: 1000,
32//! ..Default::default()
33//! };
34//!
35//! let mut manager = CompactionManager::new(config)?;
36//!
37//! // Start background compaction
38//! manager.start_background_compaction()?;
39//!
40//! // Or trigger manual compaction
41//! manager.compact_now()?;
42//!
43//! // Get compaction metrics
44//! let stats = manager.get_statistics();
45//! println!("Fragmentation: {:.2}%", stats.fragmentation_ratio * 100.0);
46//! ```
47
48#![allow(dead_code)]
49
50pub mod config;
51pub mod manager;
52pub mod metrics;
53pub mod strategies;
54pub mod types;
55
56#[cfg(test)]
57mod tests;
58
59// Re-export main types
60pub use config::CompactionConfig;
61pub use manager::CompactionManager;
62pub use metrics::CompactionMetrics;
63pub use strategies::CompactionStrategy;
64pub use types::{CompactionResult, CompactionState, CompactionStatistics};