chronix_engine/index/mod.rs
1//! # chronix-index
2//!
3//! Indexing structures for the Chronix time-series database.
4//!
5//! This crate provides indexing structures for efficient segment pruning:
6//!
7//! - [`TimeIndex`] — Sorted time-range index for O(log N) segment lookup
8//! - [`SeriesBloomFilter`] — Per-segment bloom filters for series key pruning
9//! - [`series_index`] — The per-segment series list the blooms, the tag index
10//! and the cardinality budget are rebuilt from at open
11//! - [`SegmentCatalog`] — Segment metadata catalog with manifest persistence
12//! - [`TagInvertedIndex`] — Inverted tag index for tag-value → segment mapping
13//! - [`ZoneMapPredicate`] — Predicate pushdown using per-row-group column stats
14//!
15//! Together, these indices enable multi-level pruning that eliminates segments
16//! and row groups from query processing before any data is decoded.
17
18#![warn(missing_docs)]
19#![deny(unsafe_code)]
20
21pub mod bloom;
22pub mod catalog;
23pub mod error;
24pub mod inverted;
25pub mod series_index;
26pub mod time_index;
27pub mod zone_map;
28
29pub use bloom::SeriesBloomFilter;
30pub use catalog::{CatalogColumnStats, SegmentCatalog, SegmentCatalogEntry};
31pub use error::IndexError;
32pub use inverted::TagInvertedIndex;
33pub use time_index::{TimeIndex, TimeIndexEntry};
34pub use zone_map::{
35 prune_row_groups, segment_overlaps_range, ZoneMapOp, ZoneMapPredicate, ZoneMapResult,
36};