VLDB 2026 Research / reviewers in the wild / expert
David Zhao 0001
dblp:89/5719-1
· DBLP profile ↗
11ranked-venue papers
4as first author
7since 2021 · last 2025
0000-0002-3857-5016ORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 8 · 4 first-author · 6 since 2021Systems, architecture and hardware · 3 · 1 since 2021Theory of computation · 2 · 1 first-author · 2 since 2021
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2025 | Provenance Guided Rollback SuggestionsabstractAbstract Advances in incremental Datalog evaluation strategies have made Datalog popular among use cases with constantly evolving inputs such as static analysis in continuous integration and deployment pipelines. As a result, new logic programming debugging techniques are needed to support these emerging use cases. This paper introduces an incremental debugging technique for Datalog, which determines the failing changes for a rollback in an incremental setup. Our debugging technique leverages a novel incremental provenance method. We have implemented our technique using an incremental version of the Soufflé Datalog engine and evaluated its effectiveness on the DaCapo Java program benchmarks analyzed by the Doop static analysis library. Compared to state-of-the-art techniques, we can localize faults and suggest rollbacks with an overall speedup of over 26.9 $\times$ while providing higher quality results. David Zhao 0001, Pavle Subotic, Mukund Raghothaman, Bernhard Scholz |
Theory Pract. Log. Program. | 1 |
| 2023 | Automatic Rollback Suggestions for Incremental Datalog Evaluation
David Zhao 0001, Pavle Subotic, Mukund Raghothaman, Bernhard Scholz |
PADL | 1 |
| 2022 | Building a Join Optimizer for Soufflé
Samuel Arch, David Zhao 0001, Pavle Subotic, Bernhard Scholz |
LOPSTR | 3 |
| 2022 | Specializing parallel data structures for DatalogabstractSummary We see a resurgence of Datalog in a variety of applications, including program analysis, networking, data integration, cloud computing, and security. The large‐scale and complexity of these applications need the efficient management of data in relations. Hence, Datalog implementations require new data structures for managing relations that (1) are parallel, (2) are highly specialized for Datalog evaluation, and (3) can accommodate different workloads depending on the applications concerning memory consumption and computational efficiency. In this article, we present a data structure framework for relations that is specialized for shared‐memory parallel Datalog implementations such as the soufflé Datalog compiler. The data structure framework permits a portfolio of different data structures depending on the workload. We also introduce two concrete parallel data structures for relations, designed for various workloads. Our benchmarks demonstrate a speed‐up of up to 6× by using a portfolio of data structures compared with using a B‐tree alone, showing the advantage of our data structure framework. Herbert Jordan, Pavle Subotic, David Zhao 0001, Bernhard Scholz |
Concurr. Comput. Pract. Exp. | 3 |
| 2021 | The Choice Construct in the Soufflé Language
Joshua Karp, David Zhao 0001, Abdul Zreika, Xi Wu 0005, Bernhard Scholz |
APLAS | 3 |
| 2021 | An efficient interpreter for Datalog by de-specializing relationsabstractDatalog is becoming increasingly popular as a standard tool for a variety of use cases. Modern Datalog engines can achieve high performance by specializing data structures for relational operations. For example, the Datalog engine Soufflé achieves high performance with a synthesizer that specializes data structures for relations. However, the synthesizer cannot always be deployed, and a fast interpreter is required. David Zhao 0001, Herbert Jordan, Bernhard Scholz |
PLDI | 2 |
| 2021 | Towards Elastic Incrementalization for DatalogabstractVarious incremental evaluation strategies for Datalog have been developed that reuse computations for small input changes. These methods assume that incrementalization is always a better strategy than recomputation. However, in real-world applications such as static program analysis, recomputation can be cheaper than incrementalization for large updates. David Zhao 0001, Pavle Subotic, Mukund Raghothaman, Bernhard Scholz |
PPDP | 1 |
| 2020 | Provenance-guided synthesis of Datalog programsabstractWe propose a new approach to synthesize Datalog programs from input-output specifications. Our approach leverages query provenance to scale the counterexample-guided inductive synthesis (CEGIS) procedure for program synthesis. In each iteration of the procedure, a SAT solver proposes a candidate Datalog program, and a Datalog solver evaluates the proposed program to determine whether it meets the desired specification. Failure to satisfy the specification results in additional constraints to the SAT solver. We propose efficient algorithms to learn these constraints based on “ why ” and “ why not ” provenance information obtained from the Datalog solver. We have implemented our approach in a tool called ProSynth and present experimental results that demonstrate significant improvements over the state-of-the-art, including in synthesizing invented predicates, reducing running times, and in decreasing variances in synthesis performance. On a suite of 40 synthesis tasks from three different domains, ProSynth is able to synthesize the desired program in 10 seconds on average per task—an order of magnitude faster than baseline approaches—and takes only under a second each for 28 of them. Mukund Raghothaman, Jonathan Mendelson, David Zhao 0001, Mayur Naik, Bernhard Scholz |
Proc. ACM Program. Lang. | 3 |
| 2020 | Debugging Large-scale Datalog: A Scalable Provenance Evaluation StrategyabstractLogic programming languages such as Datalog have become popular as Domain Specific Languages (DSLs) for solving large-scale, real-world problems, in particular, static program analysis and network analysis. The logic specifications that model analysis problems process millions of tuples of data and contain hundreds of highly recursive rules. As a result, they are notoriously difficult to debug. While the database community has proposed several data provenance techniques that address the Declarative Debugging Challenge for Databases, in the cases of analysis problems, these state-of-the-art techniques do not scale. In this article, we introduce a novel bottom-up Datalog evaluation strategy for debugging: Our provenance evaluation strategy relies on a new provenance lattice that includes proof annotations and a new fixed-point semantics for semi-naïve evaluation. A debugging query mechanism allows arbitrary provenance queries, constructing partial proof trees of tuples with minimal height. We integrate our technique into Soufflé, a Datalog engine that synthesizes C++ code, and achieve high performance by using specialized parallel data structures. Experiments are conducted with D OOP /DaCapo, producing proof annotations for tens of millions of output tuples. We show that our method has a runtime overhead of 1.31× on average while being more flexible than existing state-of-the-art techniques. David Zhao 0001, Pavle Subotic, Bernhard Scholz |
ACM Trans. Program. Lang. Syst. | 1 |
| 2019 | Fast Parallel Equivalence Relations in a Datalog CompilerabstractModern parallelizing Datalog compilers are employed in industrial applications such as networking and static program analysis. These applications regularly reason about equivalences, e.g., computing bitcoin user groups, fast points-to analyses, and optimal network routes. State-of-the-art Datalog engines represent equivalence relations verbatim by enumerating all possible pairs in an equivalence class. This approach inhibits scalability for large datasets. In this paper, we introduce EQREL, a specialized parallel union-find data structure for scalable equivalence relations, and its integration into a Datalog compiler. Our data structure provides a quadratic worst-case speed-up and space improvement. We demonstrate the efficacy of our data structure in SOUFFLÉ, which is a Datalog compiler that synthesizes parallel C ++ code. We use real-world benchmarks and show that the new data structure scales on shared-memory multi-core architectures storing up to a half-billion pairs for a static program analysis scenario. Patrick Nappa, David Zhao 0001, Pavle Subotic, Bernhard Scholz |
PACT | 2 |
| 2019 | A specialized B-tree for concurrent datalog evaluationabstractModern Datalog engines are employed in industrial applications such as graph-databases, networks, and static program analysis. To cope with vast amount of data, Datalog engines must employ parallel execution strategies, for which specialized concurrent data structures are of paramount importance. Herbert Jordan, Pavle Subotic, David Zhao 0001, Bernhard Scholz |
PPoPP | 3 |