What Consistency Does Your Key-Value Store Actually Provide?

Many key-value stores have recently been proposed as platforms for always-on, globally-distributed, Internet-scale applications. To meet their needs, these stores often sacrifice consistency for availability. Yet, few tools exist that can verify the consistency actually provided by a key-value store, and quantify the violations if any. How can a user check if a storage system meets its promise of consistency? If a system only promises eventual consistency, how bad is it really? In this paper, we present efficient algorithms that help answer these questions. By analyzing the trace of interactions between the client machines and a key-value store, the algorithms can report whether the trace is safe, regular, or atomic, and if not, how many violations there are in the trace. We run these algorithms on traces of our eventually consistent key-value store called Pahoehoe and find few or no violations, thus showing that it often behaves like a strongly consistent system during our tests.

[1]  Jayadev Misra Axioms for Memory Access in Asynchronous Hardware Systems , 1984, Seminar on Concurrency.

[2]  Klaus Simon,et al.  An Improved Algorithm for Transitive Closure on Acyclic Digraphs , 1986, Theor. Comput. Sci..

[3]  Eric A. Brewer,et al.  Towards robust distributed systems (abstract) , 2000, PODC '00.

[4]  Nancy A. Lynch,et al.  Brewer's conjecture and the feasibility of consistent, available, partition-tolerant web services , 2002, SIGA.

[5]  Rida A. Bazzi,et al.  On the Availability of Non-strict Quorum Systems , 2005, DISC.

[6]  Leslie Lamport,et al.  On interprocess communication , 1986, Distributed Computing.

[7]  Werner Vogels,et al.  Dynamo: amazon's highly available key-value store , 2007, SOSP.

[8]  Evelyn Tumlin Pierce,et al.  A Recipe for Atomic Semantics for Byzantine Quorum Systems , 2007 .

[9]  Werner Vogels,et al.  Eventually consistent , 2008, CACM.

[10]  Xiaozhou Li,et al.  Consistability: Describing Usually Consistent Systems , 2008, HotDep.

[11]  Hans-Arno Jacobsen,et al.  PNUTS: Yahoo!'s hosted data serving platform , 2008, Proc. VLDB Endow..

[12]  Wilson C. Hsieh,et al.  Bigtable: A Distributed Storage System for Structured Data , 2006, TOCS.

[13]  Xiaozhou Li,et al.  Efficient tracing and performance analysis for large distributed systems , 2009, 2009 IEEE International Symposium on Modeling, Analysis & Simulation of Computer and Telecommunication Systems.

[14]  Xiaozhou Li,et al.  Efficient eventual consistency in Pahoehoe, an erasure-coded key-blob archive , 2010, 2010 IEEE/IFIP International Conference on Dependable Systems & Networks (DSN).

[15]  Adam Silberstein,et al.  Benchmarking cloud serving systems with YCSB , 2010, SoCC '10.