Module Kv_hash

Kv-hash, a key-value store

Bucket

module Bucket_intf : sig ... end

Main interface types for bucket

module Bucket : sig ... end
module Bucket0 = Bucket.Bucket0

Bucket store

module Bucket_store_intf : sig ... end

A store of buckets, backed by a file/mmap

module Bucket_store : sig ... end

A store of buckets, backed by a file/mmap

module Bucket_store0 = Bucket_store.Bucket_store0

Partition

module Partition_intf : sig ... end
module Partition : sig ... end

Top-level bucket partition, implemented using Jane St. Map

module Partition_ii = Partition.Partition_ii

Non-volatile map (int -> int)

module Freelist : sig ... end

Bucket freelist

module Nv_map_ii_intf : sig ... end

Persistent hashtable interface (for int->int map)

module Nv_map_ii : sig ... end

NOTE this doesn't have a values file... it just combines partition and bucket

module Nv_map_ii0 = Nv_map_ii.Nv_map_ii0

Non-volatile map (string -> string)

module Values_file : sig ... end

A file containing a collection of "values" (the values stored in the int->int map are the offsets of the real values within the values file).

module Nv_map_ss_intf : sig ... end

General non-volatile map from string to string

module Nv_map_ss_private : sig ... end

The core implementation is for a map int->int; here we add some additional support to enable a map string->string.

module Nv_map_ss0 = Nv_map_ss_private.Nv_map_ss0

Frontend and merge process

module Frontend : sig ... end

The frontend: record updates in two logs (rotating between them).

module Merge_process : sig ... end

A process that is responsible for merging data into the main KV store.

module Frontend_ro : sig ... end

Read-only frontend

module Private : sig ... end