Skip to main content

vortex_btrblocks/
lib.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright the Vortex contributors
3
4#![deny(missing_docs)]
5
6//! Vortex's [BtrBlocks]-inspired adaptive compression framework.
7//!
8//! This crate provides a sophisticated multi-level compression system that adaptively selects
9//! optimal compression schemes based on data characteristics. The compressor analyzes arrays
10//! to determine the best encoding strategy, supporting cascaded compression with multiple
11//! encoding layers for maximum efficiency.
12//!
13//! # Key Features
14//!
15//! - **Adaptive Compression**: Automatically selects the best compression scheme based on data patterns
16//! - **Type-Specific Compressors**: Specialized compression for integers, floats, strings, and temporal data
17//! - **Cascaded Encoding**: Multiple compression layers can be applied for optimal results
18//! - **Statistical Analysis**: Uses data sampling and statistics to predict compression ratios
19//! - **Recursive Structure Handling**: Compresses nested structures like structs and lists
20//!
21//! # Example
22//!
23//! ```rust
24//! use vortex_btrblocks::{BtrBlocksCompressor, BtrBlocksCompressorBuilder, IntCode};
25//! use vortex_array::Array;
26//!
27//! // Default compressor with all schemes enabled
28//! let compressor = BtrBlocksCompressor::default();
29//!
30//! // Configure with builder to exclude specific schemes
31//! let compressor = BtrBlocksCompressorBuilder::default()
32//!     .exclude_int([IntCode::Dict])
33//!     .build();
34//! ```
35//!
36//! [BtrBlocks]: https://www.cs.cit.tum.de/fileadmin/w00cfj/dis/papers/btrblocks.pdf
37
38pub use compressor::float::FloatCode;
39use compressor::float::FloatCompressor;
40pub use compressor::integer::IntCode;
41use compressor::integer::IntCompressor;
42pub use compressor::string::StringCode;
43use compressor::string::StringCompressor;
44
45mod builder;
46mod canonical_compressor;
47mod compressor;
48mod ctx;
49mod sample;
50mod scheme;
51mod stats;
52
53pub use builder::BtrBlocksCompressorBuilder;
54pub use canonical_compressor::BtrBlocksCompressor;
55pub use canonical_compressor::CanonicalCompressor;
56use compressor::Compressor;
57use compressor::CompressorExt;
58use compressor::MAX_CASCADE;
59pub use compressor::integer::IntegerStats;
60pub use compressor::integer::dictionary::dictionary_encode as integer_dictionary_encode;
61use ctx::CompressorContext;
62use ctx::Excludes;
63use scheme::Scheme;
64use scheme::SchemeExt;
65pub use stats::CompressorStats;
66pub use stats::GenerateStatsOptions;