pub struct Dictionary<TSSTable: SSTable> {
pub sstable_slice: FileSlice,
pub sstable_index: SSTableIndex,
/* private fields */
}Expand description
An SSTable is a sorted map that associates sorted &[u8] keys
to any kind of typed values.
The SSTable is organized in blocks. In each block, keys and values are encoded separately.
The keys are encoded using incremental encoding. The values on the other hand, are encoded according to a value-specific codec defined in the TSSTable generic argument.
Finally, an index is joined to the Dictionary to make it possible, given a key to identify which block contains this key.
The codec was designed in such a way that the sstable reader is not aware of block, and yet can read any sequence of blocks, as long as the slice of bytes it is given starts and stops at block boundary.
(See also README.md)
Fields§
§sstable_slice: FileSlice§sstable_index: SSTableIndexImplementations§
Source§impl<TSSTable: SSTable> Dictionary<TSSTable>
impl<TSSTable: SSTable> Dictionary<TSSTable>
pub fn builder<W: Write>(wrt: W) -> Result<Writer<W, TSSTable::ValueWriter>>
Sourcepub fn from_bytes(owned_bytes: OwnedBytes) -> Result<Self>
pub fn from_bytes(owned_bytes: OwnedBytes) -> Result<Self>
Creates a term dictionary from the supplied bytes.
Sourcepub fn num_terms(&self) -> usize
pub fn num_terms(&self) -> usize
Returns the number of terms in the dictionary.
Term ordinals range from 0 to num_terms() - 1.
Sourcepub fn term_ord<K: AsRef<[u8]>>(&self, key: K) -> Result<Option<TermOrdinal>>
pub fn term_ord<K: AsRef<[u8]>>(&self, key: K) -> Result<Option<TermOrdinal>>
Returns the ordinal associated with a given term.
Sourcepub fn ord_to_term(&self, ord: TermOrdinal, bytes: &mut Vec<u8>) -> Result<bool>
pub fn ord_to_term(&self, ord: TermOrdinal, bytes: &mut Vec<u8>) -> Result<bool>
Returns the term associated with a given term ordinal.
Term ordinals are defined as the position of the term in the sorted list of terms.
Returns true if and only if the term has been found.
Regardless of whether the term is found or not, the buffer may be modified.
Sourcepub fn term_info_from_ord(
&self,
term_ord: TermOrdinal,
) -> Result<Option<TSSTable::Value>>
pub fn term_info_from_ord( &self, term_ord: TermOrdinal, ) -> Result<Option<TSSTable::Value>>
Returns the number of terms in the dictionary.
Sourcepub fn get<K: AsRef<[u8]>>(&self, key: K) -> Result<Option<TSSTable::Value>>
pub fn get<K: AsRef<[u8]>>(&self, key: K) -> Result<Option<TSSTable::Value>>
Lookups the value corresponding to the key.
Sourcepub async fn get_async<K: AsRef<[u8]>>(
&self,
key: K,
) -> Result<Option<TSSTable::Value>>
pub async fn get_async<K: AsRef<[u8]>>( &self, key: K, ) -> Result<Option<TSSTable::Value>>
Lookups the value corresponding to the key.
Sourcepub fn range(&self) -> StreamerBuilder<'_, TSSTable>
pub fn range(&self) -> StreamerBuilder<'_, TSSTable>
Returns a range builder, to stream all of the terms within an interval.