Struct dataflow_types::plan::top_k::MonotonicTop1Plan [−][src]
pub struct MonotonicTop1Plan {
pub group_key: Vec<usize>,
pub order_key: Vec<ColumnOrder>,
}
Expand description
A plan for monotonic TopKs with an offset of 0 and a limit of 1.
If the input to a TopK is monotonic (aka append-only aka no retractions) then we don’t have to worry about keeping every row we’ve seen around forever. Instead, the reduce can incrementally compute a new answer by looking at just the old TopK for a key and the incremental data.
This optimization generalizes to any TopK over a monotonic source, but we special case only TopK with offset=0 and limit=1 (aka Top1) for now. This is because (1) Top1 can merge in each incremental row in constant space and time while the generalized solution needs something like a priority queue and (2) we expect Top1 will be a common pattern used to turn a Kafka source’s “upsert” semantics into differential’s semantics. (2) is especially interesting because Kafka is monotonic with an ENVELOPE of NONE, which is the default for ENVELOPE in Materialize and commonly used by users.
Fields
group_key: Vec<usize>
The columns that form the key for each group.
order_key: Vec<ColumnOrder>
Ordering that is used within each group.
Trait Implementations
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations
impl RefUnwindSafe for MonotonicTop1Plan
impl Send for MonotonicTop1Plan
impl Sync for MonotonicTop1Plan
impl Unpin for MonotonicTop1Plan
impl UnwindSafe for MonotonicTop1Plan
Blanket Implementations
Mutably borrows from an owned value. Read more
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more