Hi Devs - previously I’d discussed w/<@U031K0TCB6D...
# pinot-dev
k
Hi Devs - previously I’d discussed w/@Tim Berglund the idea of leveraging AnyBlob to maintain all Pinot storage in the cloud, versus our current approach of local plus deep. See FLIP-423 and more specifically FLINK-34975 for something similar that’s started over in Flink-land, re storing all state in the cloud, versus using RocksDB for local and then S3 (or DFS) for persistence.
🤯 1
👀 1
t
Would this be a configurable option in addition to the present system?
k
Hi Tim - yes, but you might be able to implicitly change behavior by using a filesystem protocol for the destination directory of “local files”. Plus you’d add the (e.g.) “ab://” filesystem protocol for AnyBlob. I guess you’d also want some kind of support for “direct push”, where you’re just telling Pinot there’s a new or updated file at
<ab://blah>
, which triggers the controller to tell various brokers about the file(s).
r
The AnyBlob research paper looks very interesting.
k
Yes, I thought that was a really good deep dive, and useful for anyone working with cloud storage.
In particular, the summary:
Our DBMS Umbra, equipped with our download manager and caching disabled, achieves similar performance on a single instance as large configurations of state-of-the-art cloud database systems that cache data on local SSDs. Our fast and low overhead networking integration facilitates switching instances without performance clis, improving elasticity. As switching comes without performance clis, our approach is able to better utilize spot instances, available at huge discounts.
Leveraging spot instances is always appealing, when trying to lower costs.
👍 1
If you read their paper, leaving aside low-level network tweaks, the interesting bits to me were: 1. How they use io_uring to manage multiple connections per thread asynchronously. 2. Dynamic, adaptive allocation of threads between downloading and processing tasks. 3. Zero user-space copies, by including space for HTTP headers etc in the receive buffer.