<div dir="ltr">Originally, the Basho/Riak community referred to version vectors as vector clocks and some of this naming is still evident, like in the examples you mention. As you stated, how you use the data structure conveys whether or not it is a version vector or a vector clock. The dotted version vector is now considered the more correct data structure to use on the server because it removes the potential for concurrency anomalies (as discussed in the repo you linked) but some projects either a) do not have a use case that would trigger that anomaly so they choose to use version vectors (perhaps accidentally called vector clocks) or b) have not run into/proven the anomaly to themselves and have not invested time to fix it as a result (this was the case for Riak pre-2.0).<div><br></div><div>Hope that helps,</div><div>Jordan<br><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Mar 22, 2016 at 8:51 PM, LiuZhen <span dir="ltr"><<a href="mailto:liuz@outlook.com" target="_blank">liuz@outlook.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;color:rgb(0,0,0);font-size:14px;font-family:Calibri,sans-serif"><div>Hi All,</div><div><br></div><div>Recently I was trying to set up a prototype app with riak-core. It all went smooth until ran into CRDT.</div><div><br></div><div>I have read:</div><div><br></div><ol><li>papers about CRDT from HAL</li><ol><li>`Conflict-free Replicated Data Types’ at <a href="https://hal.inria.fr/file/index/docid/609399/filename/RR-7687.pdf" target="_blank">https://hal.inria.fr/file/index/docid/609399/filename/RR-7687.pdf</a></li><li>`A Comprehensive Study of Convergent and Commutative Replicated Data Types’ at <a href="https://hal.archives-ouvertes.fr/inria-00555588/" target="_blank">https://hal.archives-ouvertes.fr/inria-00555588/</a></li></ol><li>`Version Vectors are not Vector Clocks’ at <a href="https://haslab.wordpress.com/2011/07/08/version-vectors-are-not-vector-clocks/" target="_blank">https://haslab.wordpress.com/2011/07/08/version-vectors-are-not-vector-clocks/</a></li><li>`Dotted Version Vector Sets' at <a href="https://github.com/ricardobcl/Dotted-Version-Vectors" target="_blank">https://github.com/ricardobcl/Dotted-Version-Vectors</a> which by the way is used in riak-core for meta</li><li>Project-FiFo’s fifo_dt at <a href="https://github.com/project-fifo/fifo_dt" target="_blank">https://github.com/project-fifo/fifo_dt</a></li></ol><div><br></div><div>Then which following understandings are wrong?</div><ol><li>Version vector is for state-based crdt; vector clock is for op-based crdt</li><li>From #1, riak and similars use state-based CRDT, then it should use version vector rather than vector clocks</li><li>Dotted version vector is more compact than plain version vector</li><li>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?</li><li>To explain #4, the object combining value & vclocks can be thought as a way of state-based crdt without using version vector</li></ol><div>What is the *most updated & correct* way of doing this?</div><div><div></div></div></div>
<br>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br></blockquote></div><br></div>