differential_dataflow/columnar/trace/mod.rs
1//! The TRACE face of the columnar subsystem: the columnar data arranged as a
2//! differential-dataflow trace.
3//!
4//! Under the hood this is a [`Chunk`](crate::trace::chunk::Chunk) implementation
5//! ([`ColChunk`], an `UpdatesTyped` trie, resident or paged), plugged into the
6//! generic chunk harness. The exported names are the BATCH/TRACE vocabulary DD
7//! arranges with — [`Spine`], [`Batcher`], [`Builder`], [`Chunker`] — so callers
8//! work in trace terms, not chunk-implementation terms.
9//!
10//! - [`chunk`] — `ColChunk`: the `Chunk` impl (cursor + merge/extract/advance/settle).
11//! - [`chunker`] — melds [`RecordedUpdates`](super::collection::RecordedUpdates)
12//! streams into `ColChunk` batches.
13//! - [`spill`] — per-worker page-out control (`Chunk::settle`'s spill hook).
14
15pub mod chunk;
16pub mod chunker;
17pub mod spill;
18
19pub use chunk::ColChunk;
20
21/// The columnar trace: a spine of `Rc`-shared [`ColChunk`] batches.
22pub type Spine<K, V, T, R> = crate::trace::chunk::ChunkSpine<ColChunk<(K, V, T, R)>>;
23/// The columnar merge batcher (the chunk harness's `MergeBatcher` over `ColChunk`).
24pub type Batcher<K, V, T, R> = crate::trace::chunk::ChunkBatcher<ColChunk<(K, V, T, R)>>;
25/// The columnar batch builder.
26pub type Builder<K, V, T, R> = crate::trace::chunk::ChunkBuilder<ColChunk<(K, V, T, R)>>;
27/// The input chunker: melds `RecordedUpdates<U>` streams into `ColChunk<U>` batches.
28pub type Chunker<U> = chunker::TrieChunker<U>;