[SERVER-84854] Triage queries sourced from internal systems for evaluating SBE perf Created: 13/Apr/20  Updated: 12/Jan/24  Resolved: 13/Apr/20

Status: Closed
Project: Core Server
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Task Priority: Major - P3
Reporter: David Storch Assignee: Justin Seyster
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Sprint: Query 2020-04-20
Participants:

 Comments   
Comment by Justin Seyster [ 13/Apr/20 ]

Here are my notes for the queries linked from these sources:
https://wiki.corp.mongodb.com/display/PRODUCT/Product+Analytics
https://wiki.corp.mongodb.com/display/PRODUCT/Charts+as+samples+for+testing

The main conclusion is that there are few queries we could execute and benchmark from the compass-analytics-helpers.js file linked to in the "Product Analytics" wiki page.

Most of these queries require features that our current SBE prototype does not support, but almost all of them are good candidates for benchmarking real-world scenarios once we are closer to a complete SBE implementation.

In particular, many of these queries use the $group stage. If we wanted to extend the spike to get a more robust performance picture, we might consider implementing $group.

Other common unsupported stages are $lookup, $unwind, and $facet.

Driver stats (Natalya Furmanova)
This query includes a $unwind stage, which we do not support. Martin is working on how to implement unwinding, but I’m not sure if he intends to write an end-to-end implementation of the stage that could be used to execute this query.

Distributed system analytics (Sheeri Cabral)
Almost all of the pipelines in this repository use $group. The few that don’t use $unwind or $facet.

Compass analytics (Massimiliano Marcon)
There are a few queries in compass-analytics-helpers.js that we could execute with our current prototype: compassTotalUsers, compassTotalUsersCommunity, compassEventOccurrenciesWithFilter, compassEventOccurrenciesTotal, hasThisCompassUserEverUsedAtlas, and compassFollowUser. All these queries have a pipeline that begins with a $match stage and then has a $count or $sort, meaning they can easily be rewritten as a supported find command.

Charts analytics (Tom Hollander)
All of these pipelines use $group.

COVID-19 dashboard (by Thomas Rueckstiess)
All of these pipelines use $group and some use $lookup.

Generated at Thu Feb 08 06:56:10 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.