StreamQL: A Query Language for Processing Streaming Time Series

StreamQL: A Query Language for Processing Streaming Time Series
复制标题

DOI:
10.1145/3428251
复制
发表时间:
2020-11-01
影响因子:
1.8
通讯作者:
Mamouras, Konstantinos
Mamouras, Konstantinos
中科院分区:
其他
文献类型:
--
作者:
Kong, Lingkun;Mamouras, Konstantinos

文献摘要

被引文献

相似文献

实时数据分析应用程序越来越依赖于时间序列数据的复杂流计算。我们提出了StreamQL,该语言促进了流式分析时间序列的复杂分析的高级规范。 StreamQL被设计为流变换的代数,并提供了组成它们的组合集合。它集成了三种基于语言的方法进行数据流处理:关系查询,数据流组成和时间形式主义。关系结构可用于指定简单的转换,聚合以及将数据分配到基于密钥的组或窗口中。数据流摘要可以使计算作为阶段管道的模块化描述,或者更普遍地作为独立任务的有向图。最后,时间构造可用于指定复杂的时间模式和时变计算。这些构造可以自由组成以描述复杂的流计算。我们使用流上的一类单调函数为StreamQL提供了形式的含义语义。我们已经将StreamQl作为轻量级Java库实施,我们用来实验评估我们的方法。实验表明,与最新的流媒体发动机(如RXJAVA和反应堆)相比,我们实施的吞吐量具有竞争力。
Real-time data analysis applications increasingly rely on complex streaming computations over time-series data. We propose StreamQL, a language that facilitates the high-level specification of complex analyses over streaming time series. StreamQL is designed as an algebra of stream transformations and provides a collection of combinators for composing them. It integrates three language-based approaches for data stream processing: relational queries, dataflow composition, and temporal formalisms. The relational constructs are useful for specifying simple transformations, aggregations, and the partitioning of data into key-based groups or windows. The dataflow abstractions enable the modular description of a computation as a pipeline of stages or, more generally, as a directed graph of independent tasks. Finally, temporal constructs can be used to specify complex temporal patterns and time-varying computations. These constructs can be composed freely to describe complex streaming computations. We provide a formal denotational semantics for StreamQL using a class of monotone functions over streams. We have implemented StreamQL as a lightweight Java library, which we use to experimentally evaluate our approach. The experiments show that the throughput of our implementation is competitive compared to state-of-the-art streaming engines such as RxJava and Reactor.