mtbl - immutable sorted string library
gcc [flags] files -lmtbl
The mtbl library provides interfaces for creating, searching, and merging Sorted
String Table (SSTable) files in the MTBL
format, which provide an
immutable mapping of keys to values. Sorted String Tables are compact and
provide fast random access to keys and key ranges. Keys and values are
arbitrary byte arrays, and MTBL SSTables may not contain duplicate keys.
The six main interfaces provided by the mtbl library are:
Iterator objects provide a consistent
interface for iterating over the key-value entries returned by other
Source objects provide functions for obtaining
iterators from an underlying data source. The mtbl_reader and
mtbl_merger interfaces provide functions for obtaining references to a
source object. The source methods return an mtbl_iter object.
Reader objects provide read-only access to
Writer objects initialize a new MTBL
file from a sequence of key-value entries provided by the caller. Keys must be
in sorted order based on lexicographical byte value, and keys may not be
Merger objects receive multiple sequences of
key-value entries from one or more mtbl_source objects and combine them
into a single, sorted sequence. The combined, merged output sequence is
provided via the mtbl_source interface.
Sorter objects receive a sequence of key-value
entries provided by the caller and return them in sorted order. The caller
must provide a callback function to merge values in the case of entries with
duplicate keys. The sorted output sequence may be retrieved via the
mtbl_iter interface or be dumped to an mtbl_writer object.
Fileset objects automatically maintain an
mtbl_source built on top of the mtbl_merger and
mtbl_reader interfaces. The set of underlying mtbl_reader
objects is kept synchronized with a "setfile" on disk listing
Additionally, several utility interfaces are provided:
Calculates the CRC32C checksum of a byte
Functions for fixed-width encoding and
decoding of 32 and 64 bit integers.
Functions for varint encoding and decoding of
32 and 64 bit integers.