Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages 2016
DOI: 10.1145/2837614.2837625
|View full text |Cite
|
Sign up to set email alerts
|

'Cause I'm strong enough: Reasoning about consistency choices in distributed systems

Abstract: Large-scale distributed systems often rely on replicated databases that allow a programmer to request different data consistency guarantees for different operations, and thereby control their performance. Using such databases is far from trivial: requesting stronger consistency in too many places may hurt performance, and requesting it in too few places may violate correctness. To help programmers in this task, we propose the first proof rule for establishing that a particular choice of consistency guarantees … Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1

Citation Types

0
82
0
2

Year Published

2016
2016
2019
2019

Publication Types

Select...
6
2
1

Relationship

4
5

Authors

Journals

citations
Cited by 95 publications
(86 citation statements)
references
References 40 publications
0
82
0
2
Order By: Relevance
“…A number of other works have proposed techniques to verify the correctness of distributed systems that run under weak consistency, identifying when coordination is necessary [46,10,62,33,73,6]. Some of these works focused on systems that use CRDTs.…”
Section: Verificationmentioning
confidence: 99%
See 1 more Smart Citation
“…A number of other works have proposed techniques to verify the correctness of distributed systems that run under weak consistency, identifying when coordination is necessary [46,10,62,33,73,6]. Some of these works focused on systems that use CRDTs.…”
Section: Verificationmentioning
confidence: 99%
“…In runtime, depending on the operation parameters, the system runs an operation under weak or strong consistency. Some works [10,33,73] require the developer to specify the properties that the distributed system must maintain, and a specification of the operations in the system (that is often independent of the actual code of the system). As a result, they state which operations cannot execute concurrently.…”
Section: Verificationmentioning
confidence: 99%
“…This is good news because checking if an object is invariant closed is more straightforward than checking if it is invariant confluent. Existing systems typically use an SMT solver like Z3 to check if an object is invariant closed [16,9,20]. If it is, then by Theorem 1, it is invariant confluent.…”
Section: Invariant Closurementioning
confidence: 99%
“…The effector must have the same effect at every replica, and therefore may not depend on testing shared state. We assume an operation's preconditions are stable, i.e., evaluating the precondition to true does not change under any concurrent operation [6]. 1 We assume causal consistency, i.e., one operation's effector is delivered (to some replica) only after the effectors of operations that are visible to it.…”
Section: System Model and Pseudocodementioning
confidence: 99%