  To achieve high availability and low latency, distributed data stores often
geographically replicate data at multiple sites called replicas. However, this
introduces the data consistency problem. Due to the fundamental tradeoffs among
consistency, availability, and latency in the presence of network partition, no
a one-size-fits-all consistency model exists. To meet the needs of different
applications, many popular data stores provide tunable consistency, allowing
clients to specify the consistency level per individual operation. In this
paper, we propose tunable causal consistency (TCC). It allows clients to choose
the desired session guarantee for each operation, from the well-known four
session guarantees, i.e., read your writes, monotonic reads, monotonic writes,
and writes follow reads. Specifically, we first propose a formal specification
of TCC in an extended (vis,ar) framework originally proposed by Burckhardt et
al. Then we design a TCC protocol and develop a prototype distributed key-value
store called TCCSTORE. We evaluate TCCSTORE on Aliyun. The latency is less than
38ms for all workloads and the throughput is up to about 2800 operations per
second. We also show that TCC achieves better performance than causal
consistency and requires a negligible overhead when compared with eventual
consistency.
