package ocsipersist
Polymorphic frontent. Relies on Marshal
for (de)serialisation, which means that data will be stored in the backend in a fashion that is not necessarily easily readable by non-OCaml-based life forms. If this is an issue for you, you can rely on the functorial frontend instead.
find table key
gives the value associated to key
. Fails with Not_found
if not found.
add table key value
associates value
to key
. If the database already contains data associated with key
, that data is discarded and silently replaced by the new data.
replace_if_exists table key value
associates value
to key
only if key
is already bound. If the database does not contain any data associated with key
, fails with Not_found
.
remove table key
removes the entry in the table if it exists
Important warning: this iterator may not iter on all data of the table if another thread is modifying it in the same time. Nonetheless, it should not miss more than a very few data from time to time, except if the table is very old (at least 9 223 372 036 854 775 807 insertions).
Important warning: this iterator may not iter on all data of the table if another thread is modifying it in the same time. Nonetheless, it should not miss more than a very few data from time to time, except if the table is very old (at least 9 223 372 036 854 775 807 insertions).
MAJOR WARNING: Unlike iter_step, this iterator won't miss any entry and will run in one shot. It is therefore more efficient, BUT: it will lock the WHOLE database during its execution, thus preventing ANYBODY from accessing it (including the function f which is iterated). As a consequence: you MUST NOT use any function from ocsipersist in f, otherwise you would lock yourself and everybody else! Be VERY cautious.