Right now there are 2 possible options we're choosing from for how the client-aggregate data will be queried. We will either use Druid (http://druid.io/) to store the data to be queried or GraphQL (https://graphql.org/) on top of our data in S3/parquet for example.
Both these technologies allow for a single endpoint to be queried with a json blob to define the query. The benefit of this is that we do not need to create a separate service with multiple endpoints (like we do in the current mdv: https://github.com/mozilla/python_mozaggregator/blob/master/mozaggregator/service.py), one for each query type. The queries can be created on the client-side as needed.
Right now there are 2 possible options we're choosing from for how the client-aggregate data will be queried. We will either use Druid (http://druid.io/) to store the data to be queried or GraphQL (https://graphql.org/) on top of our data in S3/parquet for example.
Both these technologies allow for a single endpoint to be queried with a json blob to define the query. The benefit of this is that we do not need to create a separate service with multiple endpoints (like we do in the current mdv: https://github.com/mozilla/python_mozaggregator/blob/master/mozaggregator/service.py), one for each query type. The queries can be created on the client-side as needed.
That said, we will still need to server-side caching of the responses (e.g. in mdv1 it's done here: https://github.com/mozilla/python_mozaggregator/blob/master/mozaggregator/service.py#L260)