misc(clickhouse): Rewrite aggregation queries using Arel #3858
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Context
After some investigation in our quest to improve performances with Clickhouse database, it was found that in some condition, when computing events aggregation, many requests where sent to the Clickhouse cluster only to retrieve the tables structures.
This is happening specifically when calling
to_sql
on some queries built usingActiveRecord
.These queries are not long to process but they uses some processor time on the cluster and as such cost money to Lago and slow down the aggregation processing especially when the cluster is under heavy load.
Description
As these queries can be easily avoided as they are not required for the aggregation, since the result relies only on a aggregated values rather than on a list of record, the decision was made to refactor the
Events::Stores::ClickhouseStore
to avoid usingto_sql
when writing queries and to rely as much as possible on pure SQL.To keep the ability to combine conditions and select, the rework was made using
Arel
to rewrite the queries.