package index

  1. Overview
  2. Docs

Index

Index is a scalable implementation of persistent indices in OCaml.

Index provides the standard key-value interface: find, mem and replace. It requires three IO instances:

  • A `log` IO containing all of the recently-added bindings; this is also kept in memory.
  • When the `log` IO is full, it is merged into the `index` IO. Search is done first in `log` then in `index`, which makes recently added bindings search faster.
  • A `lock` IO to ensure safe concurrent access.
module type Key = sig ... end

The input of Make for keys.

module Stats : sig ... end
module type Value = sig ... end

The input of Make for values. The same requirements as for Key apply.

module type IO = sig ... end
module type MUTEX = sig ... end

Locks for mutual exclusion

module type THREAD = sig ... end

Cooperative threads.

exception RO_not_allowed

The exception raised when a write operation is attempted on a read_only index.

exception Closed

The exception raised when any operation is attempted on a closed index, except for close, which is idempotent.

module type S = sig ... end

Index module signature.

module Make (K : Key) (V : Value) (IO : IO) (M : MUTEX) (T : THREAD) : S with type key = K.t and type value = V.t
module Private : sig ... end

These modules should not be used. They are exposed purely for testing purposes.