IceDust: Incremental and Eventual Computation of Derived Values in Persistent Object Graphs

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.

[1]  Kathi Fisler,et al.  Towards an Operational Semantics for Alloy , 2009, FM.

[2]  Mira Mezini,et al.  QL : Language-Integrated Live Data Views , 2014 .

[3]  Conal Elliott,et al.  Push-pull functional reactive programming , 2009, Haskell.

[4]  Henrik Nilsson,et al.  Functional reactive programming, continued , 2002, Haskell '02.

[5]  James Noble,et al.  Caching and incrementalisation in the java query language , 2008, OOPSLA.

[6]  Norman W. Paton,et al.  MOVIE: An incremental maintenance system for materialized object views , 2003, Data Knowl. Eng..

[7]  Shan Shan Huang,et al.  Datalog and Recursive Query Processing , 2013, Found. Trends Databases.

[8]  Terry Halpin,et al.  Object-Role Modeling (ORM/NIAM) , 2006, Handbook on Architectures of Information Systems.

[9]  V. S. Subrahmanian,et al.  Maintaining views incrementally , 1993, SIGMOD Conference.

[10]  Adrian Walker,et al.  Towards a Theory of Declarative Knowledge , 1988, Foundations of Deductive Databases and Logic Programming..

[11]  Stephanie Balzer,et al.  Rumer: A programming language and modular verification technique based on relationships , 2011 .

[12]  Kenneth A. Ross,et al.  Monotonic aggregation in deductive databases , 1992, J. Comput. Syst. Sci..

[13]  Kenneth A. Ross,et al.  Efficient Incremental Evaluation of Queries with Aggregation , 1994, ILPS.

[14]  Mira Mezini,et al.  REScala: bridging between object-oriented and functional style in reactive applications , 2014, MODULARITY.

[15]  Peter Bernus,et al.  Handbook on Architectures of Information Systems , 1999 .

[16]  Todd J. Green LogiQL: A Declarative Language for Enterprise Applications , 2015, PODS.

[17]  Görel Hedin,et al.  Incremental Evaluation of Reference Attribute Grammars using Dynamic Dependency Tracking , 2012 .

[18]  Shan Shan Huang,et al.  Expressive and safe static reflection with MorphJ , 2008, PLDI '08.

[19]  Dániel Varró,et al.  IncQuery-D: A Distributed Incremental Model Query Framework in the Cloud , 2014, MoDELS.

[20]  Torsten Grust,et al.  Incremental Updates for Materialized OQL Views , 1997, DOOD.

[21]  Eelco Visser,et al.  Unifying and Generalizing Relations in Role-Based Data Modeling and Navigation , 2014, SLE.

[22]  Martin Odersky,et al.  Higher-Order Reactive Programming with Incremental Lists , 2013, ECOOP.

[23]  William R. Cook,et al.  Extracting queries by static analysis of transparent persistence , 2007, POPL '07.

[24]  Eelco Visser,et al.  WebDSL: A Case Study in Domain-Specific Language Engineering , 2007, GTTSE.

[25]  Yanhong A. Liu,et al.  Demand-driven incremental object queries , 2015, PPDP.

[26]  Umut A. Acar Self-adjusting computation: (an overview) , 2009, PEPM '09.

[27]  Gavin M. Bierman,et al.  First-Class Relationships in an Object-Oriented Language , 2005, ECOOP.

[28]  Hamid Pirahesh,et al.  The Magic of Duplicates and Aggregates , 1990, VLDB.

[29]  Daniel Jackson,et al.  Alloy: a lightweight object modelling notation , 2002, TSEM.

[30]  Thomas W. Reps,et al.  Incremental evaluation for attribute grammars with application to syntax-directed editors , 1981, POPL '81.

[31]  Robert E. Tarjan,et al.  Depth-First Search and Linear Graph Algorithms , 1972, SIAM J. Comput..

[32]  James Noble,et al.  Efficient Object Querying for Java , 2006, ECOOP.

[33]  Martin Glinz,et al.  Rethinking the Notion of Non-Functional Requirements , 2005 .

[34]  Inderpal Singh Mumick,et al.  The Stanford Data Warehousing Project , 1995 .

[35]  Erik Meijer Reactive extensions (Rx): curing your asynchronous programming blues , 2010, CUFP '10.

[36]  Sebastian Burckhardt,et al.  Principles of Eventual Consistency , 2014, Found. Trends Program. Lang..

[37]  Friedrich Steimann,et al.  Content over container: object-oriented programming with multiplicities , 2013, Onward!.

[38]  Mira Mezini,et al.  i3QL: language-integrated live data views , 2014, OOPSLA.

[39]  Friedrich Steimann,et al.  None, One, Many - What's the Difference, Anyhow? , 2015, SNAPL.

[40]  Arie van Deursen,et al.  Automatically Extracting Class Diagrams from Spreadsheets , 2010, ECOOP.