Abstract | An incremental computation updates its result based on a
change to its input, which is often an order of magnitude
faster than a recomputation from scratch. In particular, incrementalization can make expensive computations feasible
for settings that require short feedback cycles, such as interactive systems, IDEs, or (soft) real-time systems.
This paper presents i3QL, a general-purpose programming language for specifying incremental computations.
i3QL provides a declarative SQL-like syntax and is based
on incremental versions of operators from relational algebra,
enriched with support for general recursion. We integrated
i3QL into Scala as a library, which enables programmers to
use regular Scala code for non-incremental subcomputations
of an i3QL query and to easily integrate incremental computations into larger software projects. To improve performance, i3QL optimizes user-defined queries by applying algebraic laws and partial evaluation. We describe the design
and implementation of i3QL and its optimizations, demonstrate its applicability, and evaluate its performance. |
---|