sliding-window-aggregators
arroyo
sliding-window-aggregators | arroyo | |
---|---|---|
2 | 13 | |
41 | 3,293 | |
- | 2.3% | |
4.2 | 9.6 | |
8 months ago | 4 days ago | |
C++ | Rust | |
Apache License 2.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
sliding-window-aggregators
- Query Engines: Push vs. Pull
-
Why isn't differential dataflow more popular?
Myself and a few others have done a lot of research on performing sliding window aggregations updates without recomputing everything. Our code is on github, and the README has links to the papers: https://github.com/IBM/sliding-window-aggregators
arroyo
- FLaNK AI Weekly 18 March 2024
- Arryo 0.8 released โ streaming SQL engine
-
Query Engines: Push vs. Pull
Interesting - I looked into your code a bit. I found your window aggregation library [1]. You may be interested in looking into the Rust implementation of some of the research work I've been a part of [2].
In Flink, I believe the reason they need to implement their own backpressure system is that they multiplex TCP connections. That is, they have multiple logical streams flowing through a single TCP connection. If that's the case, you need to do some work to 1) detect which logical stream is the one that's blocking, and 2) don't block because other logical streams may be able to use the active TCP connection.
Thinking it through, I think what Flink's approach buys is not necessarily better performance, but better just a manageable number of connections. That is, imagine you have a process P1 with operators A, B and C. And then P2 has D, E, F. Now imagine that this is a shuffle, where A, B and C are fully connected to D, E and F. In my old system, you would have 9 TCP connections. In Flink, you will have 1.
[1] https://github.com/ArroyoSystems/arroyo/blob/master/arroyo-w...
- Arroyo
- Show HN: Arroyo โ Write SQL on streaming data
- Release v0.3.0 ยท ArroyoSystems/arroyo - Stream Processing Engine
- Arroyo 0.2 released - Rust stream processing engine, now on Kubernetes
- Distributed stream processing engine written in Rust
- ArroyoSystems/arroyo: Arroyo is a distributed stream processing engine written in Rust
- Arroyo, a new open-source SQL stream processing engine written in Rust
What are some alternatives?
timely-dataflow - A modular implementation of timely dataflow in Rust
bytewax - Python Stream Processing
lambdo - Feature engineering and machine learning: together at last!
risingwave - SQL stream processing, analytics, and management. PostgreSQL simplicity, unrivaled performance, and seamless elasticity. ๐ 10x more productive. ๐ 10x more cost-efficient.
rslint - A (WIP) Extremely fast JavaScript and TypeScript linter and Rust crate
Benthos - Fancy stream processing made operationally mundane
diagnostics - Diagnostic tools for timely dataflow computations
cli - Railway CLI
blog - Some notes on things I find interesting and important.
feldera - Feldera Continuous Analytics Platform
differential-dataflow - An implementation of differential dataflow using timely dataflow on Rust.