Hi,

I stumbled upon the CRDT concept [0,1] of data types offering strong
eventual consistency.
I am thinking such data structures could be really useful for apps wanting
to manage huge collections (Set, Map, etc.) but can't afford to linearise
writes.

At Adobe we have such use cases for cross region login infrastructure or
group management applications.

AFAIK, the idea of CRDT is to offer data types that ultimately converge to
the the same value from all observers.
The data structure is structured in such a way that changes to its state
can be done in any order which avoid mineralization yet guarantee
consistency (ultimately).

Looking at Oak, it seems it offers the bases for implementing such CRDTs.
AFAIK, Oak could be tweaked in such a way that conflicts are automatically
resolved according to specific merging rules.

I have read the presentation in [2] and I was wondering if one of those
mode of conflict handling would help to implement CRDTs.
Knowing more about configuration of conflict handling was the intend of my
question in [4].

I have seen Riak [3] is supporting them and we could do the same for Oak
(release a library of CRDTs that leverages Oak).

The added value of this library would be to offer general structures that
are easy to reason about consistency wise and would be bug-free.

Since Oak is a tree, we could likely implement a CRDT Set nicely. From the
CRDT Set we could implement a Map, a graph, and so on.

Would it make sense to investigate CRDTs for Oak ? It may make a really
interesting student project (Google Summer of Code or such).

wdyt ?


Regards,

Timothee


[0] http://hal.upmc.fr/file/index/docid/555588/filename/techreport.pdf
[1] http://arxiv.org/pdf/1201.1784v1.pdf
[2] http://www.slideshare.net/MichaelDrig/oak-39377061?related=1
[3] http://docs.basho.com/riak/2.0.2/dev/using/data-types/
[4]
https://mail-archives.apache.org/mod_mbox/jackrabbit-oak-dev/201505.mbox/browser

Reply via email to