Lesson plan

Version vector

A version vector is a mechanism for tracking changes to data in a distributed system, where multiple agents might update the data at different times. The version vector allows the participants to determine if one update preceded another (happened-before), followed it, or if the two updates happened concurrently (and therefore might conflict with each other). In this way, version vectors enable causality tracking among data replicas and are a basic mechanism for optimistic replication. In mathematical terms, the version vector generates a preorder that tracks the events that precede, and may therefore influence, later updates. Version vectors maintain state identical to that in a vector clock, but the update rules differ slightly; in this example, replicas can either experience local updates (e.g., the user editing a file on the local node), or can synchronize with another replica: * Initially all vector counters are zero. * Each time a replica experiences a local update event, it increments its own counter in the vector by one. * Each time two replicas and synchronize, they both set the elements in their copy of the vector to the maximum of the element across both counters: V_a[x] = V_b[x] = \max(V_a[x], V_b[x]) . After synchronization, the two replicas have identical version vectors.…

Back to article

Article summary

A version vector is a mechanism for tracking changes to data in a distributed system, where multiple agents might update the data at different times. The version vector allows the participants to determine if one update preceded another (happened-before), followed it, or if the two updates happened concurrently (and therefore might conflict with each other). In this way, version vectors enable causality tracking among data replicas and are a basic mechanism for optimistic replication. In mathematical terms, the version vector generates a preorder that tracks the events that precede, and may therefore influence, later updates. Version vectors maintain state identical to that in a vector clock, but the update rules differ slightly; in this example, replicas can either experience local updates (e.g., the user editing a file on the local node), or can synchronize with another replica: * Initially all vector counters are zero. * Each time a replica experiences a local update event, it increments its own counter in the vector by one. * Each time two replicas and synchronize, they both set the elements in their copy of the vector to the maximum of the element across both counters: V_a[x] = V_b[x] = \max(V_a[x], V_b[x]) . After synchronization, the two replicas have identical version vectors.…

Key claims

No claims recorded.

Discussion questions

  1. Summarise the article in your own words. Which single claim would you verify first, and why?
  2. Which claim in this article is most likely to be revised as the sources update? How would you check its current status?
  3. If two sources disagreed about one of these facts, what would you need in order to trust one over the other?

Bibliography

No sources recorded.

Key claims and bibliography are generated from the same tracked claims and sources as the article page.