please use the 0.5 release
Build your own database
- automatic index
- multithread support
- ordered key/value store
- Language: GNU Guile
- Tested with wiredtiger 2.9.0
- License: GPL2+ (same as wiredtiger)
- Join us at irc.freenode.net#guile for support.
- Mailling list: guile-users
- Author: amirouche
/tmp/wt directory before running the following example:
(define connection (pk (connection-open "/tmp/wt" "create"))) (define session (pk (session-open connection))) ;; create a table (session-create session "table:nodes" "key_format=i,value_format=S") ;; open a cursor over that table (define cursor (pk (cursor-open session "table:nodes"))) ;; start a transaction and add a record (session-transaction-begin session "isolation=\"snapshot\"") (cursor-key-set cursor 42) (cursor-value-set cursor "The one true number!") (cursor-insert cursor) (session-transaction-commit session) (cursor-reset cursor) (cursor-next cursor) (pk (cursor-key-ref cursor)) (pk (cursor-value-ref cursor)) (cursor-close cursor) (session-close session) (connection-close connection)
At the very core, it's a configurable ordered key/value store, column aware, with global transactions.
wiredtiger does not work on 32 bits architectures.
It was tested with wiredtiger
You need to install
wiredtiger with the usual cli dance:
git clone https://github.com/wiredtiger/wiredtiger.git cd wiredtiger ./autogen.sh && ./configure && make && make install
And then clone
git clone email@example.com:a-guile-mind/guile-wiredtiger.git
There is two modules
wiredtigerz.scm each of
which has a documentation file.
You also need a recent version of GNU Guile (tested with 2.0.11). It's available in most GNU/Linux distributions.
How to contribute
Send me a mail.
- support raw column
- support custom collator (unstable)
- fix cursor-range (upstream bug)
with-contextform which set the
*context*fluid. The immediate consequence is that you don't need to spawn yourself sessions and pass them around.
(with-cursor cursor proc)procedure which unwrap the current context and retrieve the named
CURSOR. This is useful when you use
with-contextto avoid to manually retrieve the fluid etc.
- add graphitisay which provides graph primitives on top of wiredtiger
- uav: API change:
(uav-update! uid assoc)
- uav: API change:
uav-ref*doesn't include the uid in the returned assoc
- uav: add a simple database server
cursor-insert*return row record number when applicable