<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.formulasearchengine.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=163.1.70.21</id>
	<title>formulasearchengine - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://en.formulasearchengine.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=163.1.70.21"/>
	<link rel="alternate" type="text/html" href="https://en.formulasearchengine.com/wiki/Special:Contributions/163.1.70.21"/>
	<updated>2026-08-01T13:26:07Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.47.0-wmf.7</generator>
	<entry>
		<id>https://en.formulasearchengine.com/w/index.php?title=Transposable_integer&amp;diff=24672</id>
		<title>Transposable integer</title>
		<link rel="alternate" type="text/html" href="https://en.formulasearchengine.com/w/index.php?title=Transposable_integer&amp;diff=24672"/>
		<updated>2013-06-24T12:02:27Z</updated>

		<summary type="html">&lt;p&gt;163.1.70.21: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &#039;&#039;&#039;version vector&#039;&#039;&#039; 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.&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&lt;br /&gt;
* Initially all vector counters are zero.&lt;br /&gt;
* Each time a replica experiences a local update event, it increments its own counter in the vector by one.&lt;br /&gt;
* Each time two replicas &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; synchronize, they both set the elements in their copy of the vector to the maximum of the element across both counters:  &amp;lt;math&amp;gt;V_a[x] = V_b[x] = max(V_a[x], V_b[x])&amp;lt;/math&amp;gt;.  After synchronization, the two replicas have identical version vectors.&lt;br /&gt;
&lt;br /&gt;
Pairs of replicas, &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;, can be compared by inspecting their version vectors and determined to be either: identical (&amp;lt;math&amp;gt;a=b&amp;lt;/math&amp;gt;), concurrent (&amp;lt;math&amp;gt;a \parallel b&amp;lt;/math&amp;gt;), or ordered (&amp;lt;math&amp;gt;a &amp;lt; b&amp;lt;/math&amp;gt; or &amp;lt;math&amp;gt;b &amp;lt; a&amp;lt;/math&amp;gt;).  The ordered relation is defined as:  Vector &amp;lt;math&amp;gt;a &amp;lt; b&amp;lt;/math&amp;gt; if and only if every element of &amp;lt;math&amp;gt;V_a&amp;lt;/math&amp;gt; is less than or equal to its corresponding element in &amp;lt;math&amp;gt;V_b&amp;lt;/math&amp;gt;, and at least one of the elements is strictly less than.  If neither &amp;lt;math&amp;gt;a &amp;lt; b&amp;lt;/math&amp;gt; or &amp;lt;math&amp;gt;b &amp;lt; a&amp;lt;/math&amp;gt;, but the vectors are not identical, then the two vectors must be concurrent.&lt;br /&gt;
&lt;br /&gt;
Version vectors&amp;lt;ref&amp;gt;Douglas Parker, Gerald Popek, Gerard Rudisin, Allen Stoughton, Bruce Walker, Evelyn Walton,  Johanna Chow, David Edwards, Stephen Kiser, and [[Charles S. Kline|Charles Kline]]. Detection of mutual inconsistency in distributed systems. Transactions on Software Engineering. 1983&amp;lt;/ref&amp;gt; or variants are used to track updates in many distributed file systems, such as  [[Coda (file system)]] and Ficus, and are the main data structure behind optimistic replication.&amp;lt;ref&amp;gt;David Ratner, Peter Reiher, and Gerald Popek. Dynamic version vector maintenance. Technical Report CSD-970022, Department of Computer Science, University of California, Los Angeles, 1997&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Other Mechanisms==&lt;br /&gt;
&lt;br /&gt;
* Hash Histories &amp;lt;ref&amp;gt;ByungHoon Kang, Robert Wilensky, and John Kubiatowicz.&lt;br /&gt;
The Hash History Approach for Reconciling Mutual Inconsistency. &lt;br /&gt;
ICDCS, pp. 670-677, IEEE Computer Society, 2003.&amp;lt;/ref&amp;gt; avoid the use of counters by keeping a set of hashes of each updated version and comparing those sets by set inclusion. However this mechanism can only give probabilistic guarantees.&lt;br /&gt;
* Concise Version Vectors &amp;lt;ref&amp;gt;Dalia Malkhi and Doug Terry. Concise Version Vectors in WinFS.Distributed Computing, Vol. 20, 2007.&amp;lt;/ref&amp;gt; allow significant space savings when handling multiple replicated items, such as in directory structures in filesystems.&lt;br /&gt;
* Version Stamps &amp;lt;ref&amp;gt;Paulo Almeida, Carlos Baquero and Victor Fonte. Version Stamps: Decentralized Version Vectors. ICDCS, pp. 544-551, 2002.&amp;lt;/ref&amp;gt; allow tracking of a variable number of replicas and do not resort to counters. This mechanism can depict scalability problems in some settings, but can be replaced by Interval Tree Clocks.&lt;br /&gt;
* Interval Tree Clocks&amp;lt;ref&amp;gt;Paulo Almeida, Carlos Baquero and Victor Fonte. Interval Tree Clocks. OPODIS, Lecture Notes in Computer Science, Vol. 5401, pp. 259-274, Springer, 2008.&amp;lt;/ref&amp;gt; generalize version vectors and vector clocks and allows dynamic numbers of replicas/processes.&lt;br /&gt;
* Bounded Version Vectors  &amp;lt;ref&amp;gt;José Almeida, Paulo Almeida and Carlos Baquero. Bounded Version Vectors. DISC: International Symposium on Distributed Computing, LNCS, 2004.&amp;lt;/ref&amp;gt; allow a bounded implementation, with bounded size counters, as long as replica pairs can be atomically synchronized.&lt;br /&gt;
* Dotted Version Vectors &amp;lt;ref&amp;gt;Nuno Preguiça, Carlos Baquero, Paulo Almeida, Victor Fonte and Ricardo Gonçalves. Brief Announcement: Efficient Causality Tracking in Distributed Storage Systems With Dotted Version Vectors. ACM PODC, pp. 335-336, 2012.&amp;lt;/ref&amp;gt; address scalability with a small set of servers mediating replica access by a large number of concurrent clients.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Data synchronization]]&lt;br /&gt;
[[Category:Distributed computing problems]]&lt;br /&gt;
[[Category:Causality]]&lt;/div&gt;</summary>
		<author><name>163.1.70.21</name></author>
	</entry>
</feed>