The CrossStitch Project
In this project, we build an efficient transaction processing framework for geo-distributed datastores. Nowadays, data is found in many geographically diverse locations as a result of being generated at these locations or replicated for the purposes of providing client locality and availability. Many geo-distributed storage systems aim to provide applications that access this geographically diverse set of data with high responsiveness and availability; however, this comes at a cost of forgoing richer functionality such as transactional support.
Nonetheless, efficient transactional support remains critical for applications that require ACID semantics and access geographically diverse data. For example, consider a banking client that wishes to transfer a fraction of the total funds between accounts that are based in various countries. In this case, the transaction can span multiple continents as data is retrieved.
In order to provide efficient support for transactions, we introduce CrossStitch. CrossStitch uses its pipelined atomic commit protocol to concurrently perform transaction execution and the commit protocol. Consequently, commit latency is masked by the execution latency, and CrossStitch is able to complete transactions while incurring less latency than traditional systems which perform transaction execution and the commit protocol separately.