Title: Programming Interfaces for Distributed Data Management
Advisors: Arvind Krishnamurthy and Hank Levy
Abstract: Modern distributed applications, from Google Docs to Words with Friends, have the fundamental goal of enabling users to interact with shared data. Client apps display shared data to users and accept user input, and a hierarchy of servers and other backend components takes care of executing operations on shared data and notifying clients of updates. Increasingly, the backend functionality of these applications is provided not by a traditional three-tier architecture but by a Backend-as-a-Service (BaaS), a black-box service extending from the clients to cloud storage. When a distributed application uses a BaaS, clients (rather than servers) are responsible for executing the application code that reads and writes shared data, presenting several challenges in designing the programming interfaces and underlying protocols of such a service. Existing services provide only weak guarantees for accessing shared data, failing to meet the needs of modern distributed applications. To address these challenges, we created Diamond, a data management system that provides end-to-end data management for distributed applications with strong guarantees. This talk focuses on programming interfaces, showing why the programming interfaces of existing systems are inadequate and how Diamond’s interface enables it to provide strong guarantees.