obigstore

LicenseLGPL + static linking exception
Homepagehttps://github.com/mfp/obigstore
Maintainermfp@acm.org
Dependencies
&batteries
cryptokit
extprot
leveldb
lwt2.4.7
ocamlfind
omake
PublishedJan 8, 2014
Source [http] https://github.com/mfp/obigstore/archive/obigstore-0.9.1.tar.gz
6a044a490d820271f0bae1da5a1ea7e5
StatisticsInstalled oncein last month.
Edithttps://github.com/ocaml/opam-repository/tree/master/packages/obigstore/obigstore.0.9.1/opam

Client/server + embeddable semi-structured database.

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.forge.ocamlcore.org.

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

Limitations

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