IceDust

Incremental and eventual computation of derived values in persistent object graphs

Conference Paper (2016)
Author(s)

Daco C. Harkes (TU Delft - Programming Languages)

Danny M. Groenewegen (TU Delft - Programming Languages)

Eelco Visser (TU Delft - Programming Languages)

DOI related publication
https://doi.org/10.4230/LIPIcs.ECOOP.2016.11 Final published version
More Info
expand_more
Publication Year
2016
Language
English
Article number
11
Pages (from-to)
1-26
ISBN (electronic)
978-3-95977-014-9
Event
Downloads counter
258
Collections
Institutional Repository
Reuse Rights

Other than for strictly personal use, it is not permitted to download, forward or distribute the text or part of it, without the consent of the author(s) and/or copyright holder(s), unless the work is under an open content license such as Creative Commons.

Abstract

Derived values are values calculated from base values. They can be expressed in object-oriented languages by means of getters calculating the derived value, and in relational or logic databases by means of (materialized) views. However, switching to a different calculation strategy (for example caching) in object-oriented programming requires invasive code changes, and the databases limit expressiveness by disallowing recursive aggregation. In this paper, we present IceDust, a data modeling language for expressing derived attribute values without committing to a calculation strategy. IceDust provides three strategies for calculating derived values in persistent object graphs: Calculate-on-Read, Calculate-on-Write, and Calculate-Eventually. We have developed a path-based abstract interpretation that provides static dependency analysis to generate code for these strategies. Benchmarks show that different strategies perform better in different scenarios. In addition we have conducted a case study that suggests that derived value calculations of systems used in practice can be expressed in IceDust.