Incremental Stream Processing of Nested Relational Queries
Current work on stream processing is focused on approximation techniques that calculate approximate answers to simple queries by focusing on a fixed or sliding window that contains the most recent tuples from an input stream and by using condensed synopses to summarize the state. It is widely believed that without using approximation techniques, most interesting queries would be blocking i.e. they would have to wait for the end of stream to release their results or unbounded i.e. their memory requirements would grow proportionally to the stream size, which may be infinite. The goal of this paper is to convert nested relational queries to incremental stream processing programs automatically. In contrast to most current stream processing systems that calculate approximate answers, our system derives incremental programs that return accurate results. This is accomplished by retaining a state during the query evaluation lifetime and by using incremental evaluation techniques to return an accurate snapshot answer at each time interval that depends on the current state and the data in the current fixed window. Our methods can handle most forms of declarative queries on nested data collections, including arbitrarily nested queries, group by with aggregation, and equi joins. We report on a prototype system implementation and we show some preliminary results on evaluating queries on a small computer cluster running Spark.
DEXA