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.
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.
module Make_singleton
(S : ENCODABLE_VALUE) :
SINGLETON_STORE with type value := S.t
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
module Make_fixed_encodable
(V : ENCODABLE_VALUE) :
FIXED_ENCODABLE_VALUE with type t = V.t
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