Struct pancake_engine_common::sstable::SSTable
source · pub struct SSTable<K, V> {
sparse_file_offsets: SparseFileOffsets<K>,
kv_file_path: PathBuf,
_phant: PhantomData<V>,
}Expand description
An SSTable is an abstraction of a sorted dictionary. An SSTable has these components:
- A file which stores
(key, val_or_tombstone)pairs, sorted by key, containing distinct keys. - An in-memory sorted structure that maps
{key: file_offset}on sparsely captured keys. The offsets point to locations within the above file.
Fields§
§sparse_file_offsets: SparseFileOffsets<K>§kv_file_path: PathBuf§_phant: PhantomData<V>Implementations§
source§impl<K, V> SSTable<K, V>where
K: Deser + Ord,
V: Deser,
impl<K, V> SSTable<K, V>where
K: Deser + Ord,
V: Deser,
pub fn load<P: AsRef<Path>>(kv_file_path: P) -> Result<Self>
pub fn get_one<Q>(&self, k: &Q) -> Option<Result<(K, V)>>where
K: PartialOrd<Q>,
sourcepub fn get_range<'a, Q>(
&'a self,
k_lo: Option<&'a Q>,
k_hi: Option<&'a Q>
) -> impl 'a + Iterator<Item = Result<(K, V)>>where
K: PartialOrd<Q>,
pub fn get_range<'a, Q>(
&'a self,
k_lo: Option<&'a Q>,
k_hi: Option<&'a Q>
) -> impl 'a + Iterator<Item = Result<(K, V)>>where
K: PartialOrd<Q>,
- Bisect in the in-memory sparse index, to find the lower-bound file offset.
- Seek the offset in the file. Then read linearlly in file until either EOF or the last-read key is greater than the sought key.
pub fn get_all_keys(&self) -> impl Iterator<Item = Result<K>>
pub fn remove_file(&self) -> Result<()>
Auto Trait Implementations§
impl<K, V> RefUnwindSafe for SSTable<K, V>where
K: RefUnwindSafe,
V: RefUnwindSafe,
impl<K, V> Send for SSTable<K, V>
impl<K, V> Sync for SSTable<K, V>
impl<K, V> Unpin for SSTable<K, V>
impl<K, V> UnwindSafe for SSTable<K, V>where
K: UnwindSafe,
V: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more