[erlang-questions] Way of using CRDT?

LiuZhen liuz@REDACTED
Wed Mar 23 04:51:48 CET 2016


Hi All,

Recently I was trying to set up a prototype app with riak-core. It all went smooth until ran into CRDT.

I have read:

papers about CRDT from HAL
`Conflict-free Replicated Data Types’ at https://hal.inria.fr/file/index/docid/609399/filename/RR-7687.pdf
`A Comprehensive Study of Convergent and Commutative Replicated Data Types’ at https://hal.archives-ouvertes.fr/inria-00555588/
`Version Vectors are not Vector Clocks’ at https://haslab.wordpress.com/2011/07/08/version-vectors-are-not-vector-clocks/
`Dotted Version Vector Sets' at https://github.com/ricardobcl/Dotted-Version-Vectors which by the way is used in riak-core for meta
Project-FiFo’s fifo_dt at https://github.com/project-fifo/fifo_dt
Then which following understandings are wrong?
Version vector is for state-based crdt; vector clock is for op-based crdt
>From #1, riak and similars use state-based CRDT, then it should use version vector rather than vector clocks
Dotted version vector is more compact than plain version vector
The reason fifo_dt and similars are using vclocks is because basicly vclock’s static structure is the same as version vector, but since the update rule is not the same, why it is used in fifo_dt?
To explain #4, the object combining value & vclocks can be thought as a way of state-based crdt without using version vector
What is the *most updated & correct* way of doing this?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20160323/6211c012/attachment.htm>


More information about the erlang-questions mailing list