Skip to content
obigstore: database with BigTable-like data model atop LevelDB
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

(Note clone this repository with git clone --recursive )

obigstore: multi-dimensional DB with BigTable-like data model atop LevelDB

Copyright (C) 2012-2014 Mauricio Fernandez

obigstore is a database server + client library and associated tools. It exposes a multidimensional BigTable-like data model built on top of the Google LevelDB library, inheriting its fundamental strengths, such as fast random writes or control over the physical data layout. It can be used in a client/server setting or as an embedded database. More information can be found at

obigstore's salient features include:

  • strong data durability guarantees:
    • fully fsync'ed writes with group commit
    • data integrity ensured with CRCs at the protocol level
    • synchronous and asynchronous replication
    • online backup
  • rich semi-structured data model:
    • atomic transactions (both read-committed and repeatable-read isolation levels)
    • optimistic and pessimistic concurrency control
    • asynchronous notifications
    • limited support for complex documents (BSON serialized)
    • support for composite keys (REPL and client lib)
  • performance:
    • fast random writes
    • efficient range queries thanks to spatial locality
    • cross-record redundancy reduction at the page level (snappy compression)
    • fast recovery (independent of dataset size)

obigstore currently includes:

  • the standalone database server
  • the embeddable database library
  • the client library
  • a friendly REPL for interactive data manipulation
  • DB dump/restore tools
  • a number of benchmarking tools


  • transactions must fit in memory
  • sharding on key ranges is not built-in at this point
  • no automatic failover yet


(Debian package names parenthesized)

  • OCaml >= 3.12.0 (ocaml-nox)
  • findlib (ocaml-findlib)
  • omake to build (omake)
  • GCC with C++ frontend (g++)
  • OCaml Batteries (libbatteries-ocaml-dev) (>= 2.0.0)
  • Cryptokit (libcryptokit-ocaml-dev)
  • Lwt (liblwt-ocaml-dev)
  • oUnit for the unit tests (libounit-ocaml-dev)
  • extprot
  • ocaml-leveldb
  • atdgen (libatdgen-ocaml-dev)
  • yojson (libyojson-ocaml-dev)



$ omake    # -j 4  for instance to parallelize the build

should do. This will build the server, client programs and libraries. You can run the tests with

$ omake test

You can then install at once the obigstore core, client, server and util libraries, as well as the executables with:

$ omake install

The generated executables are:

  • obigstore: the DB server
  • ob_repl: the REPL
  • ob_dump: tool to dump a DB to a file
  • ob_load: tool to load ob_dump's output into a DB

They are standalone (modulo the snappy and tcmalloc dependencies) and can be used simply by placing them somewhere in the PATH.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.