UniStore addresses this problem by ensuring that, before a strong transaction
commits, all its causal dependencies are uniform, i.e., will eventually
become visible at all correct data centers. This adapts the classical notion of
uniformity in distributed computing to causal
consistency [1]}. UniStore does so without defeating the benefits
of causal consistency. Causal transactions remain
highly available at the cost of increasing the latency of strong
transactions: a strong transaction may have to wait for some of its
dependencies to become uniform before committing. To minimize this cost,
UniStore executes causal transactions on a snapshot that is slightly in the
past, such that a strong transaction will mostly depend on causal
transactions that are already uniform before committing.
Furthermore, UniStore reuses the mechanism for
tracking uniformity to let clients make causal transaction durable on
demand and to enable consistent client migration.
