Tango: Distributed Data Structures over a Shared Log - Balakrishnan, Mahesh; Malkhi, Dahlia; Wobber, Ted; Wu, Ming; Prabhakaran, Vijayan; Wei, Michael; Davis, John D.; Rao, Sriram; Zou, Tao; Zuck, Aviad (SOSP, 2013)
Distributed systems are easier to build than ever with the emergence of new, data-centric abstractions for storing and computing over massive datasets. However, similar abstractions do not exist for storing and accessing metadata. To fill this gap, Tango provides developers with the abstraction of a replicated, in-memory data structure (such as a map or a tree) backed by a shared log. Tango objects are easy to build and use, replicating state via simple append and read operations on the shared log instead of complex distributed protocols; in the process, they obtain properties such as linearizability, persistence and high availability from the shared log. Tango also leverages the shared log to enable fast transactions across different objects, allowing applications to partition state across machines and scale to the limits of the underlying log without sacrificing consistency.