Consistify: preserving correctness and SLA under weak consistency

While executing a client application, comprising a sequence of one or more storage operations (read, write, etc.), replicated datastores provide the option of tuning per-operation client-centric consistency settings, Weaker consistency settings allow client applications to execute with lower observed latency due to less coordination among the replica, improving throughput. To enable a client application running on a geo-replicated datastore to meet stringent SLA (Service Level Agreement) deadlines, i.e., latency thresholds provided in the SLA, users apply weak client-centric consistency settings. Strong consistency settings may result in higher latency due to coordination among greater number of replicas. However, since a weak consistency setting requires only a partial quorum of replicas to coordinate, some of the replicas may be overwritten by conflicting updates from concurrent clients, which, in turn, may result in violation of correctness conditions specified by the developer. Such correctness conditions are provided as postconditions that impose restrictions on the values observed by the clients. Enforcing correctness conditions under weak consistency settings on geo-replicated datastores from the client application code is a tedious and challenging task. The task is even more complicated when considering application-level SLA deadlines. Deadline (latency) is one of the most important SLA parameters for optimizing client-centric performance. To this end, we present Consistify, a novel framework, that acts as an interface layer between client applications and underlying data-stores, and enables client applications to execute with weak per-operation consistency settings, while simultaneously respecting: 1) the correctness conditions, specified using logical predicates, and 2) the SLA deadline. Using benchmark workloads, we experimentally demonstrate that Consistify outperforms the state-of-the-art systems, namely QUELA. For several other systems that provide flexible consistency settings, namely Bolt-on causal system, SIEVE, and Cure, we provide a comparison of the throughput and latency observed with Consistify against the numbers reported with those systems in prior papers.

[1]  Ali Ghodsi,et al.  Scalable atomic visibility with RAMP transactions , 2014, SIGMOD Conference.

[2]  Subhajit Sidhanta,et al.  OptCon: An Adaptable SLA-Aware Consistency Tuning Framework for Quorum-Based Stores , 2016, 2016 16th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing (CCGrid).

[3]  R. Weisberg A-N-D , 2011 .

[4]  Ali Ghodsi,et al.  Feral Concurrency Control: An Empirical Investigation of Modern Application Integrity , 2015, SIGMOD Conference.

[5]  Prashant Malik,et al.  Cassandra: a decentralized structured storage system , 2010, OPSR.

[6]  Ju Wang,et al.  Windows Azure Storage: a highly available cloud storage service with strong consistency , 2011, SOSP.

[7]  Ion Stoica,et al.  Probabilistically Bounded Staleness for Practical Partial Quorums , 2012, Proc. VLDB Endow..

[8]  Leslie Lamport,et al.  How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs , 2016, IEEE Transactions on Computers.

[9]  Suresh Jagannathan,et al.  Representation without Taxation: A Uniform, Low-Overhead, and High-Level Interface to Eventually Consistent Key-Value Stores , 2016, IEEE Data Eng. Bull..

[10]  Christopher Meiklejohn Riak PG: distributed process groups on dynamo-style distributed storage , 2013, Erlang '13.

[11]  Ali Ghodsi,et al.  Coordination Avoidance in Database Systems , 2014, Proc. VLDB Endow..

[12]  Annette Bieniusa,et al.  Cure: Strong Semantics Meets High Availability and Low Latency , 2016, 2016 IEEE 36th International Conference on Distributed Computing Systems (ICDCS).

[13]  Michael Stonebraker,et al.  Reordering Query Execution in Tertiary Memory Databases , 1996, VLDB.

[14]  Suresh Jagannathan,et al.  Declarative programming over eventually consistent data stores , 2015, PLDI.

[15]  Ali Ghodsi,et al.  Bolt-on causal consistency , 2013, SIGMOD '13.

[16]  Marc Shapiro,et al.  Conflict-Free Replicated Data Types , 2011, SSS.

[17]  Nicolas Halbwachs,et al.  LUSTRE: a declarative language for real-time programming , 1987, POPL '87.

[18]  Roy Friedman,et al.  Trading Consistency for Availability in Distributed Systems , 1996 .

[19]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[20]  Michael J. Freedman,et al.  Don't settle for eventual: scalable causal consistency for wide-area storage with COPS , 2011, SOSP.

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

[22]  Nicolas Halbwachs,et al.  LUSTRE: A declarative language for programming synchronous systems* , 1987 .

[23]  Peter Bailis,et al.  The Case for Invariant-Based Concurrency Control , 2015, CIDR.

[24]  Sanjeev Kumar,et al.  Existential consistency: measuring and understanding consistency at Facebook , 2015, SOSP.

[25]  João Leitão,et al.  Automating the Choice of Consistency Levels in Replicated Systems , 2014, USENIX Annual Technical Conference.

[26]  Christopher Frost,et al.  Spanner: Google's Globally-Distributed Database , 2012, OSDI.

[27]  Hongseok Yang,et al.  The CISE tool: proving weakly-consistent applications correct , 2016, PaPoC@EuroSys.

[28]  Christos H. Papadimitriou,et al.  The serializability of concurrent database updates , 1979, JACM.