btree-concurrent: A backend agnostic, concurrent BTree

[ data-structures, library ] [ Propose Tags ]

A backend agnostic, concurrent BTree

[Skip to Readme]
Versions [RSS] [faq] 0.1.0, 0.1.1, 0.1.3, 0.1.4, 0.1.5
Dependencies array (==0.4.*), base (==4.*), base64-bytestring (==1.*), bytestring (>=0.9), cereal (>=0.3), containers (>=0.5), directory (==1.*), filepath (==1.*), hashable (==1.*), mtl (==2.*), random (==1.*), snappy (==0.2.*), stm (==2.2.*), time (==1.*) [details]
License LicenseRef-LGPL
Author Morten Brøns, Johan Brinch
Category Data Structures
Home page
Source repo head: git clone
Uploaded by JohanBrinch at 2012-10-31T13:09:44Z
Distributions NixOS:0.1.5
Downloads 3862 total (14 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs uploaded by user
Build status unknown [no reports yet]




Maintainer's Corner

For package maintainers and hackage trustees


Readme for btree-concurrent-0.1.5

[back to package description]


A backend agnostic, concurrent BTree with relaxed balance[1] written in Haskell using a mix of IO operations and pure STM.

Although the code does work, it is neither production-ready nor complete.

Features include:

  • Caching: While nodes are periodically saved on persistent storage (e.g. disk) they are cached in-memory during operations.

  • Live flushing: It is possible to save the current version of the tree to disk and run modifying operations at the same time. The nodes are updated buttom-up to ensure a valid tree in the case of a crash.

  • Backend agnosticism: A simple API is used as an abstraction for the persistent storage.

  • Verification: The test-suite uses QuickCheck to compare the trees behaviour to that of Data.Map.

Deficients include:

  • Too much memory usage. Nodes are not stored in a compact fashion and are constantly being serialized/deserialized.

  • findMin and findMax are incomplete and may fail (see TODO for details).

  • The implementation does not parallelize well.

[1] B-trees with relaxed balance, K. S. Larsen & R. Fagerberg, Parallel Processing Symposium, 1995. Proceedings., 9th International