CurryDB: Simple, Polymorphic, Persistent, Transactional, In-memory Key/Value Database
Pre requirement:
- recent (>=2012.2.0.0) Haskell Platform
Clone repository or unpack archive, then follow below instructions:
$ cabal update
$ cabal install
CurryDB is a Simple, Polymorphic, Persistent and Transactional in-memory key/value database.
Very simple implementation by using many modern abstraction techniques. For example, Conduit (a.k.a. Iteratee I/O) for efficient and highly abstract network programming, Lightweight threads and STM for robust concurrent programming. And following features also helping.
CurryDB is polymorphic DB. This means it can contain any data structure you want to store.
For demonstrating this feature, memcacned and redis protocol support are included.
CurryDB uses persistent data structures (a.k.a. purely functional data structures) such as hash array mapped tries (HAMT) and finger trees.
It enables simple concurrent implementation and get rid of any troublesome locks. The code is fully concurrent.
CurryDB supports full transactional features (ACID). It uses software transactional memory (STM) for this purpose. This permits to write very concise codes.