CurryDB
CurryDB: Simple, Polymorphic, Persistent, Transactional, In-memory Key/Value Database
Install
Pre requirement:
- recent (>=2012.2.0.0) Haskell Platform
Clone repository or unpack archive, then follow below instructions:
$ cabal update
$ cabal install
Features
CurryDB is a Simple, Polymorphic, Persistent and Transactional in-memory key/value database.
Simple and modern
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.
Polymorphic
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.
Persistent
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.
Transactional
CurryDB supports full transactional features (ACID). It uses software transactional memory (STM) for this purpose. This permits to write very concise codes.