Caching and incrementalisation in the java query language

Many contemporary object-oriented programming languages support first-class queries or comprehensions. These language extensions make it easier for programmers to write queries, but are generally implemented no more efficiently than the code using collections, iterators, and loops that they replace. Crucially, whenever a query is re-executed, it is recomputed from scratch. We describe a general approach to optimising queries over mutable objects: query results are cached, and those caches are incrementally maintained whenever the collections and objects underlying those queries are updated. We hope that the performance benefits of our optimisations may encourage more general adoption of first-class queries by object-oriented programmers.

[1]  Yanhong A. Liu,et al.  Efficient type inference for secure information flow , 2006, PLAS '06.

[2]  Ambuj K. Singh,et al.  Dynamic Query-Based Debugging , 1999, ECOOP.

[3]  Guido Moerkotte,et al.  Heuristic and randomized optimization for the join ordering problem , 1997, The VLDB Journal.

[4]  Brian Beckman,et al.  LINQ: reconciling object, relations and XML in the .NET framework , 2006, SIGMOD Conference.

[5]  J. Paul Gibson,et al.  RoboCode & problem-based learning: a non-prescriptive approach to teaching programming , 2006, ITICSE '06.

[6]  Balakrishna R. Iyer,et al.  A polynomial time algorithm for optimizing join queries , 1993, Proceedings of IEEE 9th International Conference on Data Engineering.

[7]  Yanhong A. Liu,et al.  Static caching for incremental computation , 1998, TOPL.

[8]  Marc Eisenstadt,et al.  My hairiest bug war stories , 1997, CACM.

[9]  Shigeru Chiba,et al.  A metaobject protocol for C++ , 1995, OOPSLA.

[10]  Brian A. Malloy,et al.  Using OCL-Queries for debugging C++ , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

[11]  Ambuj K. Singh,et al.  Query-based debugging of object-oriented programs , 1997, OOPSLA '97.

[12]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[13]  Gavin M. Bierman,et al.  The Essence of Data Access in Comega , 2005, European Conference on Object-Oriented Programming.

[14]  Benjamin Livshits,et al.  Finding application errors and security flaws using PQL: a program query language , 2005, OOPSLA '05.

[15]  Alexander Aiken,et al.  Relational queries over program traces , 2005, OOPSLA '05.

[16]  Yanhong A. Liu,et al.  Incrementalization across object abstraction , 2005, OOPSLA '05.

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

[18]  Kevin Barraclough,et al.  I and i , 2001, BMJ : British Medical Journal.

[19]  Thomas W. Reps,et al.  A categorized bibliography on incremental computation , 1993, POPL '93.

[20]  Hiroaki Nakamura Incremental computation of complex object queries , 2001, OOPSLA '01.

[21]  Brian A. Malloy,et al.  The design of an OCL query-based debugger for C++ , 2001, SAC.

[22]  Myoung-Ho Kim,et al.  Efficient incremental view maintenance in data warehouses , 2001, CIKM '01.

[23]  Yanhong A. Liu,et al.  From datalog rules to efficient programs with time and space guarantees , 2003, PPDP '03.

[24]  Surajit Chaudhuri,et al.  Maintenance of Materialized Views: Problems, Techniques, and Applications. , 1995 .

[25]  James Noble,et al.  Snapshot query-based debugging , 2004, 2004 Australian Software Engineering Conference. Proceedings..

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

[27]  Raimondas Lencevicius,et al.  On-the-fly query-based debugging with examples , 2000, AADEBUG.

[28]  Inderpal Singh Mumick,et al.  Incremental Maintenance Of Views With Duplicates , 1999 .

[29]  Edmond Schonberg,et al.  Programming with Sets: An Introduction to SETL , 1986 .

[30]  Sung-Bae Cho,et al.  Evolution of emergent behaviors for shooting game characters in Robocode , 2004, Proceedings of the 2004 Congress on Evolutionary Computation (IEEE Cat. No.04TH8753).

[31]  Jeffrey F. Naughton,et al.  On the relative cost of sampling for join selectivity estimation , 1994, PODS '94.

[32]  James Noble,et al.  Checking ownership and confinement , 2004, Concurr. Pract. Exp..

[33]  Ken Hartness Robocode: using games to teach artificial intelligence , 2004 .

[34]  Umut A. Acar,et al.  Imperative self-adjusting computation , 2008, POPL '08.

[35]  Margaret H. Dunham,et al.  Join processing in relational databases , 1992, CSUR.

[36]  Sheng Liang,et al.  Java Virtual Machine Profiler Interface , 2000, IBM Syst. J..

[37]  Ambuj K. Singh,et al.  Query-Based Debugging , 1999 .

[38]  Anneke Kleppe,et al.  The object constraint language: precise modeling with UML , 1998 .

[39]  Yanhong A. Liu,et al.  Optimizing aggregate array computations in loops , 2005, TOPL.

[40]  Inderpal Singh Mumick,et al.  Deriving Production Rules For Incremental View Maintenance , 1999 .