Hi Gian,
I'll be working on this soon. Would be awesome to share ideas.
I know that primitive realizations are possible by handling the rollups and the delegation to the best datasource on client-side but I would like to see support in Druid itself. I would need Druid to be conscious about which intervals of an aggregated view are up-to-date relative to the master-datasource. The broker would then chunk incoming queries up such that as much of the query-interval as possible can be served from the fastest peer datasource. If the peer is not in-sync with the master-datasource for some intervals, then those are served up by the next-best peer and so on, using the master as a safe fallback. Under the hood, this could be handled by a query runner similar to the union-query runner in a first approach.
Later on, I'd love to see a change in the historicals such that each segment in the segment list of a historical query contains an individual reference to a datasource. At the moment all segment references rely on the unique datasource section which I believe is unnecessary.
With this change, cube queries could be sped up even further. I cannot wait to have this feature in Druid even though it will be hard/heavyweight, especially when thinking about multiple rollups in combination with union queries etc.