Live data from Hacker News

Irmin: Git-like distributed DB

mirage.io

11–20 of 26 posts

Re: Irmin: Git-like distributed DB

#11
post #7

The Github repo[1] says "This repository is currently offline". I've never seen this message on github before, I'm not really sure what it means. Github then refers me to the "working when Github goes down" article, but Github hasn't really gone down .. I can access every other repo I try to access. Just not this one. [1] https://github.com/mirage/irmin

If github went down I would seek the nearest bomb shelter.

Re: Irmin: Git-like distributed DB

#13
post #7

The Github repo[1] says "This repository is currently offline". I've never seen this message on github before, I'm not really sure what it means. Github then refers me to the "working when Github goes down" article, but Github hasn't really gone down .. I can access every other repo I try to access. Just not this one. [1] https://github.com/mirage/irmin

If github went down I would seek the nearest bomb shelter.

It's down pretty often.

Re: Irmin: Git-like distributed DB

#14
post #12

I'd like to see more information about transactions. Is it possible to update a several keys atomicly?

Yes, you can easily add thing into a "staging area" of your database (which is hold in-memory), and then "commit" your changes to update multiple keys in one go. You can also use this mechanism to keep track of reads (what Git doesn't do) to detect read/write conflicts.

Re: Irmin: Git-like distributed DB

#16

From your description I'm not quite sure where in the stack Irmin belongs? Is this to be used by web application developers? I assume note, as this looks like it is targeting more OS level development work? Pretty cool stuff. I am also working on a distributed database, https://github.com/amark/gun , that operates at the high level (web/javascript) rather than the low level. Although it looks like Irmin can be used i…

As for the rest of MirageOS, Irmin is a "library" database, means that you have a bunch of components than you can re-use in different contexts. Two interesting contexts are:

- the browser, where some components of Irmin are transpiled to JavaScript using js_of_ocaml (http://ocsigen.org/js_of_ocaml/). Cuekeeper (http://roscidus.com/blog/blog/2015/04/28/cuekeeper-gitting-t...) is an interesting use-case for that.

- the kernel, where some components of Irmin can be compiled into a unikernel and be run on top of Xen/baremetal, bypassing the OS completely. Irmin-ARP (http://somerandomidiot.com/blog/2015/04/24/what-a-distribute...) is an interesting step is the direction of exposing kernel data and do interesting stuff with it.

Re: Irmin: Git-like distributed DB

#18
post #12

I'd like to see more information about transactions. Is it possible to update a several keys atomicly?

Yes, you can easily add thing into a "staging area" of your database (which is hold in-memory), and then "commit" your changes to update multiple keys in one go. You can also use this mechanism to keep track of reads (what Git doesn't do) to detect read/write conflicts.

See also an early paper on "mergeable persistent data structures" that shows how to do this for Irmin-based Rope and Queue data structures. http://anil.recoil.org/papers/2015-jfla-irmin.pdf

Re: Irmin: Git-like distributed DB

#20
post #19

Nice, but there is a fundamental problem with the three-way merge: the guarantees about the result are very weak, and it may require special attention to resolve merge conflicts.

Can you expand on the weak guarantees?

Sure, conflicts need to be handled. That's a fundamental problem with reality!

Post reply on HN