Applications such as Google Docs, Office 365, and Dropbox show a growing trend towards incorporating multi-user live collaboration functionality into web applications. These collaborative applications share a need to efficiently express shared state, and a common strategy for doing so is a shared log abstraction. Extensive research efforts on log abstractions by the database, programming languages, and distributed systems communities have identified a variety of optimization techniques based on the algebraic properties of updates (i.e., pairwise commutativity, subsumption, and idempotence). Although these techniques have been applied to specific applications and use-cases, to the best of our knowledge, no attempt has been made to create a general framework for such optimizations in the context of a non-trivial update language. In this paper, we introduce mutation languages, a low-level framework for reasoning about the algebraic properties of state updates, or mutations. We define BarQL, a general purpose state-update language, and show how mutation languages allow us to reason about the algebraic properties of updates expressed in BarQ L .
翻译:Google Docs、Office 365和Droppox等应用显示将多用户现场协作功能纳入网络应用程序的趋势日益增长。这些协作应用共同需要高效率地表达共享状态,而这样做的共同战略是共享日志抽象。数据库、编程语言和分布式系统社区对日志抽象进行广泛研究,根据更新的代数属性(即双向通信性、分流性和一时冲动性),确定了各种优化技术。尽管这些技术已经应用到具体应用和使用案例中,就我们所知的最好而言,但没有试图在非三重更新语言的背景下为这种优化建立一个总体框架。在本文中,我们引入突变语言,即关于国家更新或突变的代数属性的低层次推理框架。我们定义了用于一般目的的状态更新语言BarQL,并展示了各种变异语言如何让我们理解在BarQ L中表达的更新的代谢性能。