Skip to content

Proposal for distributed query execution #6789

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

harry671003
Copy link
Contributor

What this PR does:
Submits a proposal for distributed query execution in Cortex using Thanos PromQL engine.

Which issue(s) this PR fixes:
Fixes #

Checklist

  • Tests updated
  • Documentation added
  • CHANGELOG.md updated - the order of entries should be [CHANGE], [FEATURE], [ENHANCEMENT], [BUGFIX]

Signed-off-by: 🌲 Harry 🌊 John 🏔 <[email protected]>
Copy link
Contributor

@yeya24 yeya24 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the great work. I like this proposal.

@alanprot
Copy link
Member

alanprot commented Jun 4, 2025

This looks great! I cannot wait to see it working! :D:D:D

Signed-off-by: 🌲 Harry 🌊 John 🏔 <[email protected]>
@harry671003 harry671003 force-pushed the proposal_distributed_query branch from ea50781 to 37692c4 Compare June 5, 2025 02:47

```
service QueryServer {
rpc Series(SeriesRequest) returns (stream OneSeries);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should stream a batch of series, not just one?


#### Co-ordinated Execution

The querier assigned the **root fragment** also plays the role of **coordinator**. The co-ordinator will
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The root querier will call Series and Next to the child querier. Those requests will also specify the logical plan ID or some sort of request ID so the child querier finds out the actual plan?

```
service QueryServer {
rpc Series(SeriesRequest) returns (stream OneSeries);
rpc Next(NextRequest) returns (stream StepVectorBatch);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we need some marker a mark finish for both series and next. Do we just use EOF?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants