MixT: a Language for Mixing Consistency in Geodistributed Transactions
June 2018, Philadelphia, Pennsylvania, USA
Programming concurrent, distributed systems that mutate shared, persistent, geo-replicated state is hard. To enable high availability and scalability, a new class of weakly consistent data stores has become popular. However, some data needs strong consistency. We introduce mixed-consistency transactions, embodied in a new embedded language, MixT. Programmers explicitly associate consistency models with remote storage sites; within each atomic, isolated transaction, data can be accessed with a mixture of different consistency models. Compile-time information-flow checking, applied to consistency models, ensures that these models are mixed safely and enables the compiler to automatically partition transactions into a single sub-transaction per consistency model. New run-time mechanisms ensure that consistency models can also be mixed safely, even when the data used by a transaction resides on separate, mutually unaware stores. Performance measurements show that despite offering strong guarantees, mixed-consistency transactions can significantly outperform traditional serializable transactions.