On 09.09.2016 01:39, dgrnbrg wrote:
> This sort of thing is also the goal of Datacrypt & Hitchhiker trees
> (https://github.com/datacrypt-project/hitchhiker-tree), which are
> designed to be highly optimized for I/O.

Sorry for the late reply, I was a bit busy. I have also implemented a
redis backend for our async kv-store protocol:
https://github.com/replikativ/konserve/blob/master/src/konserve/carmine.clj

Thanks for pointing out, this is very nice! I have just read
https://github.com/datacrypt-project/hitchhiker-tree/blob/master/doc/hitchhiker.adoc
Using a B+ tree approach would also have been my next take, but the
hitchhiker combination with an append log is really cool. I am
interested in having these sorted datastructures as building blocks for
CRDT metadata in the longer run.

> 
> We've been making progress on the GC and adding new backends--it would
> be awesome to be able add a CLJS port too :)

Cool :) I have only thought about GC so far. To support cljs one needs
to be aware that all blocking IO calls won't work. That is why I have
started with a core.async kv-protocol. Can you imagine using something
like it?

To support Datascript in cljs, one would then also need to use something
along the lines of async operations to fetch index fragments during the
query. But for the current hitchhiker tree it should not be too invasive
and the performance should not be affected. I think IResolve, IBackend
(and maybe some more), need to return go channels, the rest can be added
gradually. I haven't looked into it in detail yet.

Have you had a look at replikativ? I would be interested in feedback and
critique :).

I don't know what your current take on CRDTs is (I have found the nice
OR-SWOT in libdistsys :) ), I will be doing my master thesis with
Annette Bieniusa soon, one of the authors of the paper about it. I
haven't done as much Clojure backend integration as you yet, since I
wanted to have cljs support for an open replication system and couldn't
wire any JVM technology in (including the implementation of synchronous
standard datatype protocols for asynchronous operations). But I think it
is definitely a good way to start in the Clojure backend as you have
done. As far as I can see the CRDTs in libdistsys are supposed to be
used with a network (the simulator is a good idea). Have you plans for a
complete middleware?

Best,
Christian

P.S.: I have played around with piplin two years ago, do you still work
with FPGAs?


-- 
Note that posts from new members are moderated - please be patient with your 
first post.
--- 
You received this message because you are subscribed to the Google Groups 
"ClojureScript" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojurescript+unsubscr...@googlegroups.com.
To post to this group, send email to clojurescript@googlegroups.com.
Visit this group at https://groups.google.com/group/clojurescript.

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to