Hi, I came to the understanding that for realtime ...
# general
n
Hi, I came to the understanding that for realtime tables, pinot servers keep a local copy of the completed segments which include the index. It also upload these segments (without index) to the controller that means controller have another copy of same data. What is the purpose of maintaining 2 copies the same data, can't the pinot server download the segments on demand or serve them directly from the deep store. The system for which we are evaluating Pinot is constrained on disk usage, and disk footprint of the Pinot is 2-3 times more than other databases e.g. HBase. If we can maintain a single copy of the each segment it would be great saving on disk usage.
r
Hi. To answer your question regarding what the deep store is and how to use it I would recommend reviewing: https://docs.pinot.apache.org/basics/components/table/segment/deep-store
Storing the completed segments in the Controller is only a default configuration suitable for non-production use cases.
n
I believe I have fair understanding of the deep store. However my question is regarding maintaining multiple copies of the same data. 1. In case of local store: Both servers and controllers keep their own copies of the same segments in local filesystem. 2. In case of deep store: Servers contain local copies, whereas controller keep a copy in the deep store. My question is why controllers and server need their own set of copies of the same data. In case of local filesystem, uploading to the controller can be avoided, since the queries are served by servers only. In case of deep store: Servers can download or stream the data directly from deep store, instead of maintaining a local copy.
Is there a configuration to change this behaviour
r
Servers can’t stream data directly from the deep store . The segments must be downloaded locally, decompressed, and loaded into memory for data to be queryable.
n
If servers have to maintain a local copy, can we avoid maintaining copy in the controller or deep store. Is there a configuration for that. Can this be considered a request for future enhancement?
r
Segments aren’t usually maintained on servers and in deep store indefinitely. Retention Manager will remove older segments from servers and will permanently delete segments from deep store eventually
n
My concern is about the data that is being retained, I'm interested in the bytes per row of the data being retained. Currently it is consuming 17 bytes per row on the server and 8 bytes per row (same data compressed). My question is whether there is way to avoid maintaining 2 copies of the same data.
My concern is well described here: • Cost: Pinot has to store all the relevant segments on the local disk for query execution. In addition, Pinot cluster already replicates these segments internally. Storing another copy of these segments in the deep storage adds to the total storage cost. Note: The deep storage itself will have its own internal replication, adding to the total cost. https://cwiki.apache.org/confluence/display/PINOT/By-passing+deep-store+requirement+for+Realtime+segment+completion