Affiliation:
1. University of Pennsylvania, USA
Abstract
Real-time decision making in emerging IoT applications typically relies on computing quantitative summaries of large data streams in an efficient and incremental manner. To simplify the task of programming the desired logic, we propose StreamQRE, which provides natural and high-level constructs for processing streaming data. Our language has a novel integration of linguistic constructs from two distinct programming paradigms: streaming extensions of relational query languages and quantitative extensions of regular expressions. The former allows the programmer to employ relational constructs to partition the input data by keys and to integrate data streams from different sources, while the latter can be used to exploit the logical hierarchy in the input stream for modular specifications.
We first present the core language with a small set of combinators, formal semantics, and a decidable type system. We then show how to express a number of common patterns with illustrative examples. Our compilation algorithm translates the high-level query into a streaming algorithm with precise complexity bounds on per-item processing time and total memory footprint. We also show how to integrate approximation algorithms into our framework. We report on an implementation in Java, and evaluate it with respect to existing high-performance engines for processing streaming data. Our experimental evaluation shows that (1) StreamQRE allows more natural and succinct specification of queries compared to existing frameworks, (2) the throughput of our implementation is higher than comparable systems (for example, two-to-four times greater than RxJava), and (3) the approximation algorithms supported by our implementation can lead to substantial memory savings.
Funder
National Science Foundation
National Institutes of Health
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Reference47 articles.
1. Apache Flink: Scalable batch and stream data processing. https://flink.apache.org/. Apache Flink: Scalable batch and stream data processing. https://flink.apache.org/.
2. Esper for Java. http://www.espertech.com/esper/. Esper for Java. http://www.espertech.com/esper/.
3. ReactiveX: An API for asynchronous programming with observable streams. http://reactivex.io/. ReactiveX: An API for asynchronous programming with observable streams. http://reactivex.io/.
4. Aurora: a new model and architecture for data stream management
Cited by
8 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Randomized First-Order Monitoring with Hashing;Runtime Verification;2022
2. An order-aware dataflow model for parallel Unix pipelines;Proceedings of the ACM on Programming Languages;2021-08-22
3. Specifying and detecting temporal patterns with shape expressions;International Journal on Software Tools for Technology Transfer;2021-06-29
4. Synchronization Schemas;Proceedings of the 40th ACM SIGMOD-SIGACT-SIGAI Symposium on Principles of Database Systems;2021-06-20
5. A Verified Online Monitor for Metric Temporal Logic with Quantitative Semantics;Runtime Verification;2020