  Database systems use query processing subsystems for enabling efficient
query-based data retrieval. An essential aspect of designing any
query-intensive application is tuning the query system to fit the application's
requirements and workload characteristics. However, the configuration
parameters provided by traditional database systems do not cover the design
decisions and trade-offs that arise from the geo-distribution of users and
data. In this paper, we present a vision towards a new type of query system
architecture that addresses this challenge by enabling query systems to be
designed and deployed in a per use case basis. We propose a distributed
abstraction called Query Processing Unit that encapsulates primitive query
processing tasks, and show how it can be used as a building block for
assembling query systems. Using this approach, application architects can
construct query systems specialized to their use cases, by controlling the
query system's architecture and the placement of its state. We demonstrate the
expressiveness of this approach by applying it to the design of a query system
that can flexibly place its state in the data center or at the edge, and show
that state placement decisions affect the trade-off between query response time
and query result freshness.
