Module Mavryk_layer2_store.Indexed_store

This library provides functors to build various kinds of stores using mirage's index and Mavkit data-encoding libraries.

It is tailored to build stores for the Layer 2 nodes of Mavryk (Tx-rollups and Smart rollups).

The stores built with this library support concurrent accesses thanks to the use of the light scheduler provided by Lwt_idle_waiter for exclusive write access.

Signatures

module type SINGLETON_STORE = sig ... end

A store for single updatable values. Values are stored in a file on disk and are kept in memory in a cache.

module type INDEXABLE_STORE = sig ... end

An index store mapping keys to values. It uses an index file internally.

module type INDEXABLE_REMOVABLE_STORE = sig ... end

An index store mapping keys to values. Keys are associated to optional values in the index which allows them to be removed.

module type INDEXED_FILE = sig ... end

An indexed file (i.e. a file and an index) mapping keys to values. Contrary to INDEXABLE_STORE, the values can vary in size. Internally, values are stored, concatenated, in a append only file. The index file associates keys to offsets in this file (and a header to retrieve information more efficiently).

module type SIMPLE_INDEXED_FILE = sig ... end

Same as INDEXED_FILE but where headers are extracted from values.

module type NAME = sig ... end

Names for stores.

module type INDEX_KEY = sig ... end

Values that can be used as keys for indices.

module type ENCODABLE_VALUE = sig ... end

Values that can be encoded.

module type FIXED_ENCODABLE_VALUE = sig ... end

Values that can be encoded and whose encoding is a fixed size.

module type ENCODABLE_VALUE_HEADER = sig ... end

Values with a given fixed size header.

Functors

module Make_indexable (_ : NAME) (K : INDEX_KEY) (V : Index.Value.S) : INDEXABLE_STORE with type key := K.t and type value := V.t
module Make_indexable_removable (_ : NAME) (K : INDEX_KEY) (V : Index.Value.S) : INDEXABLE_REMOVABLE_STORE with type key := K.t and type value := V.t
module Make_indexed_file (_ : NAME) (K : INDEX_KEY) (V : ENCODABLE_VALUE_HEADER) : INDEXED_FILE with type key := K.t and type value := V.t and type header := V.Header.t
module Make_simple_indexed_file (_ : NAME) (K : INDEX_KEY) (V : sig ... end) : SIMPLE_INDEXED_FILE with type key := K.t and type value := V.t and type header := V.Header.t

Helper functors

module Make_index_value (E : FIXED_ENCODABLE_VALUE) : Index.Value.S with type t = E.t
module Make_index_key (E : sig ... end) : INDEX_KEY with type t = E.t