Differential Datalog

Many real-world applications based on deductive databases require incrementally updating output relations (tables) in response to changes to input relations. To make such applications easier to implement we have created Differential Datalog (DDlog), a dialect of Datalog that automates incremental computation. A DDlog programmer writes traditional, non-incremental Datalog programs. However, the execution model of DDlog is fully incremental : at runtime DDlog programs receive streams of changes to the input relations (insertions or deletions) and produce streams of corresponding changes to derived relations. The DDlog compiler translates DDlog programs to Differential Dataflow (DD) [17] programs; DD provides an incremental execution engine supporting all the relational operators, including fixed-point. The DDlog language is targeted for system builders. In consequence, the language emphasizes usability, by providing a rich type system, a powerful expression language, a module system, including string manipulation, arithmetic, and integration with C, Rust, and Java. The code is open-source, available using an MIT permissive license [1].

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

[2]  M. Abadi,et al.  Naiad: a timely dataflow system , 2013, SOSP.

[3]  Jianwen Su,et al.  First-Order Incremental Evaluation of Datalog Queries , 1993, DBPL.

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

[5]  Yavor Nenov,et al.  Incremental Update of Datalog Materialisation: the Backward/Forward Algorithm , 2015, AAAI.

[6]  Boon Thau Loo,et al.  Recursive Computation of Regions and Connectivity in Networks , 2009, 2009 IEEE 25th International Conference on Data Engineering.

[7]  Wolfram Schulte,et al.  Unifying Tables, Objects and Documents , 2003 .

[8]  Michael Isard,et al.  Differential Dataflow , 2013, CIDR.

[9]  David Maier,et al.  Datalog: concepts, history, and outlook , 2018, Declarative Logic Programming.

[10]  Emir Pasalic,et al.  Design and Implementation of the LogicBlox System , 2015, SIGMOD Conference.

[11]  David Maier,et al.  Towards an effective calculus for object query languages , 1995, SIGMOD '95.

[12]  Sebastian Erdweg,et al.  IncA: A DSL for the definition of incremental program analyses , 2016, 2016 31st IEEE/ACM International Conference on Automated Software Engineering (ASE).

[13]  C. R. Ramakrishnan,et al.  Incremental Evaluation of Tabled Logic Programs , 2003, ICLP.

[14]  Kesheng Wu,et al.  Incremental View Maintenance over Array Data , 2017, SIGMOD Conference.

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

[16]  Yannis Smaragdakis,et al.  Strictly declarative specification of sophisticated points-to analyses , 2009, OOPSLA '09.

[17]  Amir Shaikhha,et al.  DBToaster: higher-order delta processing for dynamic, frequently fresh views , 2012, The VLDB Journal.

[18]  Sebastian Erdweg,et al.  Incrementalizing lattice-based program analyses in Datalog , 2018, Proc. ACM Program. Lang..

[19]  Scott Boag,et al.  XQuery 1.0 : An XML Query Language , 2007 .