pub trait Materializer {
    type PageFrag;
    type Recovery;

    fn new(config: Config, recovered_state: &Option<Self::Recovery>) -> Self
    where
        Self: Sized
; fn merge(&self, frags: &[&Self::PageFrag]) -> Self::PageFrag; fn recover(&self, frag: &Self::PageFrag) -> Option<Self::Recovery>; fn size_in_bytes(&self, frag: &Self::PageFrag) -> usize; }
Expand description

A user of a PageCache needs to provide a Materializer which handles the merging of page fragments.

Required Associated Types

The possibly fragmented page, written to log storage sequentially, and read in parallel from multiple locations on disk when serving a request to read the page. These will be merged to a single version at read time, and possibly cached.

The higher-level recovery state, as described by Materializer::recover

Required Methods

Create a new Materializer with the previously recovered state if any existed.

Used to merge chains of partial pages into a form that is useful for the PageCache owner.

Used to feed custom recovery information back to a higher-level abstraction during startup. For example, a B-Link tree must know what the current root node is before it can start serving requests.

Used to determine the size of the value for caching purposes.

Implementors