Distributed Transactions for Google App Engine: Optimistic Distributed Transactions built upon Local Multi-Version Concurrency Control

Daniel Shawcross Wilkerson,Simon Fredrick Vicente Goldsmith,Ryan Barrett,Erick Armbrust,Robert Johnson,Alfred Fuller
DOI: https://doi.org/10.48550/arXiv.1106.3325
2011-06-15
Abstract:Massively scalable web applications encounter a fundamental tension in computing between "performance" and "correctness": performance is often addressed by using a large and therefore distributed machine where programs are multi-threaded and interruptible, whereas correctness requires data invariants to be maintained with certainty. A solution to this problem is "transactions" [Gray-Reuter]. Some distributed systems such as Google App Engine [<a class="link-external link-http" href="http://code.google.com/appengine/docs/" rel="external noopener nofollow">this http URL</a>] provide transaction semantics but only for functions that access one of a set of predefined local regions of the database: a "Local Transaction" (LT) [<a class="link-external link-http" href="http://code.google.com/appengine/docs/python/datastore/transactions.html" rel="external noopener nofollow">this http URL</a>]. To address this problem we give a "Distributed Transaction" (DT) algorithm which provides transaction semantics for functions that operate on any set of objects distributed across the machine. Our algorithm is in an "optimistic" [<a class="link-external link-http" href="http://en.wikipedia.org/wiki/Optimistic_concurrency_control" rel="external noopener nofollow">this http URL</a>] style. We assume Sequential [Time-]Consistency [<a class="link-external link-http" href="http://en.wikipedia.org/wiki/Sequential_consistency" rel="external noopener nofollow">this http URL</a>] for Local Transactions.
Distributed, Parallel, and Cluster Computing,Databases,Data Structures and Algorithms,Software Engineering
What problem does this paper attempt to address?