
Why Vector Clocks Are Easy (2010) - ninjakeyboard
http://basho.com/why-vector-clocks-are-easy/
======
rkapsoro
Also to be taken with its sister post: [http://basho.com/why-vector-clocks-
are-hard/](http://basho.com/why-vector-clocks-are-hard/)

~~~
caipre
If anyone from basho is here, the link[0] at the end of this article leads to
a 404. I guess it might've been moved to this[1].

[0]: [http://basho.com/technology/why-use-
riak/](http://basho.com/technology/why-use-riak/) [1]:
[http://docs.basho.com/riak/latest/theory/why-
riak/](http://docs.basho.com/riak/latest/theory/why-riak/)

------
saurik
OK, in that case we are ready for the next level: Interval Tree Clocks ;P.

[https://code.google.com/p/itclocks/](https://code.google.com/p/itclocks/)

------
jchrisa
Hash histories are more light when you have an unbounded number of replicas.

[https://oceanstore.cs.berkeley.edu/publications/papers/pdf/h...](https://oceanstore.cs.berkeley.edu/publications/papers/pdf/hh_icdcs03_kang.pdf)

------
gleenn
Interesting but vector clocks are still kind of unwieldy.

The example from the article is people trying to figure out when the group
should all go to dinner; no one actually cares the end result, the only that
is needed is agreement. This isn't free in many real-world problems. Knowing
that you have correctly stored the final value is sometimes required. Vector
clocks only lets you fix the problem after it has occurred.

------
Phemist
Dave has to sort out the conflict, but wasn't that the exact same person who
couldn't be reached to sort out the initial conflict?

~~~
Dylan16807
Dave was available at times 1, 2, and 3

Dave is not available to resolve the conflict at time 4

Dave sorted out a conflict at time 3 in all versions of the the story. The
problem is that nobody else knew which message was from time 2, and which was
from time 3. Vector clocks fix that problem.

Now in this particular case you could use a normal clock, but in more
complicated scenarios that can lead to mistakes where vector clocks still
work.

------
man007
+1 Good read, and explained clearly. Helped me for my distributed systems
class last semester.

------
Animats
That sort of mechanism is useful for database systems which have to decide in
what order to write out blocks to keep the database consistent. That requires
partial ordering, but not total ordering.

