[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[MirageOS-devel] irminsule 0.4.0 is released

I am very happy to cut the first 'early-alpha' release of irminsule[1], which
should be available in OPAM quite soon.

Irminsule is a distributed database with built-in snapshot, branch and
revert mechanisms. It is designed to use a large variety of backends,
although it is optimized for append-only store. Currently, there are 4
backends implemented: in-memory, custom binary format on disk, 
CRUD interface (using JSON over HTTP) and Git.

Irminsule is written in pure OCaml. It can thus be compiled to Javascript
-- and run in the browsers; or into a Mirage microkernel -- and run directly
on top of Xen. Currently, though, the package is split into a pure library
('irminsule'), a bunch of backends (called `irmsule.backend`) and a unix HTTP
server ('irminsule.server'). The HTTP server and some of the backends works
only in unix, but they should be easy to mirage.

The package also comes with a command-line tool to experiment with the
various backends.

$ irmin init -m -d             # start a daemon to read and store data in memory
$ irmin init -l /path/ -d     # start a daemon to read and store data on disk
$ irmin init -r <uri> -d     # start a daemon to read and store data using a 
JSON protocol to reach the given uri
                                      # (another irminsule instance should 
listen on the given uri)
$ irmin init -g -d             # start a daemon to read and store data using 
the Git format

You can store the default backend in the IRMIN shell variable. Running 'irmin' 
will automatically look in that variable to select the right backend.
$ export IRMIN=m            # memory backend
$ export IRMIN=g             # Git backend
$ export IRMIN=l:<path>  # local backend
$ export IRMIN=r:<uri>     # remote backend

Use `irmin read` and `irmin write` to read a write keys in the dabase.
Use `irmin tree` and `irmin ls` to inspect the database state
Use `irmin dump` to dump the database state in a .dot file
Use `irmin snapshot` to get the current HEAD
Use `irmin revert` to rollback to a previous HEAD
Use `irmin clone` and `irmin fetch` to create/update the local disk store from 
the given backend.

For whose interested to write new backends, I suggest to have a look at [3]. If 
you can provide something which satisfies the `AO_BINARY` signature, it's then 
easy to build a backend for irminsule (the simplest one being the in-memory 

The command are (poorly) documented using `irmin <cmd> --help`. Feel free to 
ask questions on that list, report bugs and request feature on the bugtracker 


[1] https://github.com/samoht/irminsule
[2] https://github.com/samoht/irminsule/issues
[3] https://github.com/samoht/irminsule/blob/master/lib/core/irminStore.mli
[4] https://github.com/samoht/irminsule/blob/master/lib/backend/irminMemory.ml

MirageOS-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.