<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Elastic Query Processing on Function as a Service Platforms</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Thomas Bodner supervised by Hasso Plattner Enterprise Platform and Integration Concepts Group Hasso Plattner Institute Potsdam</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Modern analytics workloads are not predictable anymore and require database systems to be able to adapt to their performance demands and cost constraints in an instant. Existing database architectures, however, are incapable of meeting this degree of elastic scalability. For this reason, we propose a novel architecture based on function as a service platforms. This architecture and the concepts surrounding it are being implemented in our research prototype Skyrise.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. INTRODUCTION</title>
      <p>
        Enterprises are increasingly employing modern analytics
applications to gain insights from their data and to make
timely and well-informed decisions about their businesses.
These applications are often interactive in nature and they
involve exploratory analysis on data of di erent sizes and
shapes. The resulting query workloads for database systems
are hard, if not practically impossible, to predict. Vendors
of commonly used data warehouse systems report customers
running queries in infrequent bursts over data with sizes
varying as much as nine orders of magnitude [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. It is
di cult to provision infrastructure and to optimize query
execution for such workloads in order to achieve su cient
performance and cost e ciency.
      </p>
      <p>
        Traditional OLAP database systems are mostly based on a
distributed shared-nothing architecture [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. Persistent data
is partitioned across the database nodes and stored locally.
This enables scalable and e cient processing of static
workloads. When system load or data relevancy, however, change
over time, nodes need to be added or removed from the
system and data need to be (re)partitioned or (un)loaded.
All of this is costly and time consuming, rendering
sharednothing architectures in exible and thus un t for modern
analytics workloads, even when deployed on exible public
cloud infrastructures.
      </p>
      <p>
        Recent analytical database systems, sometimes referred to
as cloud-native, adopt a shared-disk architecture [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. This
Proceedings of the VLDB 2020 PhD Workshop, August 31st, 2020. Tokyo,
Japan. Copyright (C) 2020 for this paper by its authors. Copying permitted
for private and academic purposes.
accounts for two aspects of modern cloud infrastructures.
First, the storage is separated from the compute resources
and exposed as a shared medium. Second, the bandwidth
to remote storage is comparable to that of local disks [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
Query processing can be done in a shared-nothing fashion
and e ciency while all persisted data is read from remote
shared storage. This removes the need for expensive data
shu es and loads on workload changes, letting shared-disk
architectures scale more elastically and gracefully. They can
quickly shut down compute resources entirely when idle and
again ramp them up when there is load. While doing so
is signi cantly faster than in shared-nothing systems, it still
takes minutes at best [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. The time is spent con guring and
launching potentially large virtual machine instances and
is still too long for interactive applications, which demand
query latencies in seconds rather than minutes. So, these
systems are also prone to under- or over-provisioning.
      </p>
      <p>In our view, the inherent issue of the current approaches to
supporting interactive ad-hoc analytics lies in them relying
on coarse-grained compute resources for their workers. There
will always be a set of workloads, in which these approaches
will either be too slow or too expensive.</p>
      <p>
        Fortunately, public cloud providers today o er means to
allocate and bill ner-grained units of compute resources
via function as a service (FaaS) platforms, such as AWS
Lambda [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], Google Cloud Functions, [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], and Microsoft
Azure Functions [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. FaaS platforms let cloud consumers
write pieces of code, so-called cloud functions, and run them
on tiny, short-lived, and stateless workers. These platforms
transparently schedule, load balance, and scale consumers'
cloud functions across potentially tens of thousands of such
workers with considerable combined performance.
Furthermore, the small workers can be spawned in milliseconds [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]
and help handling stragglers in parallel data processing [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ].
FaaS platforms are economically viable for consumers, when
moderately utilized. In AWS, cloud functions are currently
priced at ~$0.06 per GB-hour of execution and billed per
100ms interval. This is two to eight times more expensive
than conventional VMs [
        <xref ref-type="bibr" rid="ref2 ref4">2, 4</xref>
        ].
      </p>
      <p>
        Prior work explored FaaS platforms as a foundation for
general large-scale data analysis [
        <xref ref-type="bibr" rid="ref15 ref16 ref19">15, 16, 19</xref>
        ]. In this work,
we study them in the context of relational query processing
for interactive ad-hoc analytics, which is required by many
enterprises. We are building the OLAP database system
Skyrise, which exploits the elasticity of FaaS platforms to
balance performance and cost e ciency, when
state-of-theart systems fail to do so.
      </p>
    </sec>
    <sec id="sec-2">
      <title>RESEARCH CHALLENGES</title>
      <p>
        Function service platforms are a promising foundation for
an elastic query processing system. They, however, do not
only present opportunities, but also a variety of challenges
that must be overcome in order to arrive at a system with
adequate performance, reliability, and cost e ciency [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ].
These platforms are subject to active research [
        <xref ref-type="bibr" rid="ref22 ref23">22, 23</xref>
        ], and
while we expect some of the outcomes to work in our favor,
others will not be sensible to the speci c requirements of a
database system.
      </p>
      <p>Skyrise uses FaaS-based compute resources and shared
disaggregated storage for its query execution. In its query
optimization, Skyrise aims to exploit the parallelism of FaaS
platforms. It further incorporates the pricing model of the
cloud provider as well as user constrains to trade o cost and
performance. As a result, we identify the following research
challenges, which we categorize into three areas.</p>
      <sec id="sec-2-1">
        <title>Cloud Functions</title>
        <p>
          1. Resource limits: Cloud functions have tight resource
constraints, e.g., 2 vCPUs, 3GB RAM, and a capped
15min runtime in AWS Lambda [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. These resources
must be utilized for e ciency, but are quickly exhausted.
        </p>
        <p>
          The consequences may be slow or failing executions.
2. Launch overheads: Before a cloud function is executed,
it needs to be invoked and initialized. The invocation
is a call to a web-based REST API. The latency of this
call depends on the geographical distance between the
caller and the function service. The initialization may
involve provisioning a host, placing a worker on this
host, and setting up the execution environment. This
depends on service con guration, prior and present
function concurrency, function language, instance size,
and binary package size. Launching many functions to
process a query in parallel may take 10s of seconds [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ],
thwarting interactive query latencies.
3. Indirect communication: FaaS providers disable
inbound network connections to cloud functions. This
requires functions to communicate via shared storage,
which in turn impedes performance, particularly for
data exchanging operations during query processing.
4. Observability: Function services are blackboxes to their
users, making it di cult to observe and, thus, control
function execution. This is problematic for distributed
query processing systems, as they need to cope with
operator instances straggling for various reasons, e.g.,
resource contention or data skew.
5. Fault tolerance: Function services guarantee to retry
failed function executions. Functions, however, may
have side e ects. Partial or multiple executions of
them may produce inadvertent results that need to
be dealt with or prevented in the rst place.
        </p>
        <p>
          Disaggregated Object Storage
6. E ciency: Current object storage services [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ] show
high request latencies and incur signi cant per-request
costs. As such, they require careful handling for query
processing on top of them to still be e cient [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ].
7. Data consistency: These services provide only weak
consistency guarantees. Individual keys may not be
readable immediately after they are written. Multiple
keys cannot be written together atomically. Both are
guarantees commonly relied upon by database systems
for query processing.
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>Query Optimization</title>
        <p>8. Cost-Awareness: Trading o cost and performance of
queries in a FaaS-based query processing system is
non-trivial. Cloud service pricing models are complex.
And, query price and performance correlate positively
in some processing aspects and negatively in others.
9. Parallel Performance: To bene t from the parallelism
o ered by FaaS platforms, a database system's query
optimizer needs to consider plans that lend themselves
to parallel execution. In order to better explore the
large search space of parallel plans, the optimizer itself
should be parallelized. Usually, the optimizer has to
compete for resources with the execution engine, and
as a result, has tight computation budgets. However,
in our setting, the optimizer can scale out to separate
resources via cloud functions.
3.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>RELATED WORK</title>
      <p>For our research, we identify two lines of related work.
First, there are systems for generic data analysis that build
upon FaaS platforms. They aim to provide the operational
simplicity, elastic scalability, and ne-grained billing model
of function services to users from a diverse set of domains.
Second, relational OLAP database systems with a
shareddisk architecture or extension serve our target user group
and aspire to be su ciently elastic for most workloads.</p>
      <sec id="sec-3-1">
        <title>Amazon Redshift</title>
      </sec>
      <sec id="sec-3-2">
        <title>Redshift Spectrum</title>
      </sec>
      <sec id="sec-3-3">
        <title>PyWren</title>
      </sec>
      <sec id="sec-3-4">
        <title>Flint</title>
      </sec>
      <sec id="sec-3-5">
        <title>Locus</title>
      </sec>
      <sec id="sec-3-6">
        <title>Snow ake</title>
        <p>Skyrise
d
e
t
a
g
e
ggr age
a r
s o
Di St
3
3
3
7
3
3
3
d
ase te
S-b pu
3
3
3
7
7*
7
3
l
a
n
o
ti P
la A
e L
R O
7
7
7
3
3
3
3</p>
        <p>
          Cost- mance
Query Perfor
7
7
3
7
7
7
3
To our knowledge, PyWren [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ] is the rst system to provide
the simple and generic data-parallel programming model
MapReduce on top of a FaaS platform. Flint [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ] extends on
this by exposing the richer set of data-parallel programming
primitives from Spark. And, nally, Locus [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ] builds on
PyWren and adds a distinct data exchange operator that
can work with di erent object stores. It can further reason
about the cost-performance trade-o between these stores.
Compared to Skyrise, none of these systems aims to provide
a complete set of relational execution operators.
        </p>
        <sec id="sec-3-6-1">
          <title>Cloud-based OLAP Database Systems</title>
          <p>
            Amazon Redshift [
            <xref ref-type="bibr" rid="ref13">13</xref>
            ] is a parallel data warehouse system
that is based a on distributed shared-nothing architecture.
It recently has been extended by an additional architectural
layer named Spectrum, which operates on disaggregated
storage [
            <xref ref-type="bibr" rid="ref9">9</xref>
            ]. This way, Redshift can scale elastically beyond
its set of shared-nothing nodes. Interestingly, the Spectrum
workers are tiny and stateless, and do not communicate.
They are not explicitly said to be cloud functions, but they
seem to present similar challenges. Snow ake [
            <xref ref-type="bibr" rid="ref10">10</xref>
            ] is built
on a shared-disk architecture and reads persistent data from
remote object storage. For intermediate data during query
processing, it adds a low-latency storage layer that is hosted
on its compute nodes. It can further maintain a pool of
prelaunched nodes to scale faster at additional expense [
            <xref ref-type="bibr" rid="ref21">21</xref>
            ].
Both systems aim to support elastic query processing, but
need to launch additional VM-based nodes at some point.
Also, neither Redshift nor Snow ake seem to o er an
automatic way to navigate the cost-performance space in query
processing.
          </p>
          <p>We see our FaaS-based OLAP database system Skyrise as
a unique mix of features from above systems (cf. Table 1).
As such, it presents interesting angles of research to pursue.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>RESEARCH STATUS</title>
      <p>In this section, we describe our research prototype Skyrise,
which we use to identify, study, and address the problems
on our research agenda. We start with a description of our
target architecture for Skyrise. We continue talking about
our currently conducted work on its query execution engine
and nish sketching our vision for its query optimizer.
4.1</p>
    </sec>
    <sec id="sec-5">
      <title>Skyrise Target Architecture</title>
      <p>Skyrise is a relational OLAP database system with a
FaaSbased, shared-disk architecture. Figure 1 shows the central
components in Skyrise's target architecture. We start with
a brief discussion of their interactions along the lifecycle of
a query. Then, we go on to highlight key design decisions
for them. Note that the depicted cloud services are the ones
from AWS that the current implementation is built against.</p>
      <p>
        Users send SQL queries to a coordinator that runs on a
regular VM [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], either embedded into an application or as
a dedicated server process. The coordinator compiles the
queries to optimized execution plans. For the optimization,
it takes both data statistics and service prices into account.
The latter are queried from the pricing and billing services of
the cloud provider [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Then, the coordinator schedules the
respective query operator functions on the function service.
Once running on the function service, the query operators
interact with the object storage services to consume their
input data and produce their output data. They report their
health and status to monitoring services as they progress.
Upon eventual completion of queries, the coordinator reads
their results and sends them back to the users.
4.2
      </p>
    </sec>
    <sec id="sec-6">
      <title>Skyrise Query Engine</title>
      <p>The Skyrise query execution engine is designed to cope
with the challenges incurred by the usage of cloud functions
and disaggregated object storage, as identi ed in Section 2.
Regular Compute Service
(EC2)</p>
      <p>Coordinator</p>
      <p>Query Compiler</p>
      <p>Plans
Scheduler</p>
      <p>R ▾
Function Service
(Lambda)</p>
      <p>Worker</p>
      <p>Query Operators</p>
      <p>R▸
R▸
R▸</p>
      <p>Pricing &amp; Billing Services
(Price List &amp; Cost Explorer)</p>
      <p>Prices
Monitoring Services
(CloudWatch &amp; X-Ray)</p>
      <p>Logs
Object Storage Services
(S3 &amp; ElastiCache)</p>
      <p>Tables
Intermediates</p>
      <p>R ▾</p>
      <sec id="sec-6-1">
        <title>Query Operators</title>
        <p>The query operators are implemented in C++ to allow for
e cient utilization of their limited resources. They manage
their memory and they employ multi-threading to utilize the
available intra-function CPU parallelism.</p>
        <p>To keep coldstart latency low, the operator binaries are
linked against the library versions of Lambda's execution
environment, such that custom versions do not need to be
provided in the deployment packages. Unneeded symbols
are stripped from the binaries. And, we further intend to
study the tradeo between per-operator and monolithic
alloperator functions on coldstart likelihood and duration.</p>
        <p>To guarantee correct behavior under failure and retried
execution, the operators are idempotent. They produce a
single deterministic result object that is written atomically
to object storage.</p>
      </sec>
      <sec id="sec-6-2">
        <title>Scheduler</title>
        <p>The scheduler employs a set of techniques to mitigate cloud
function invocation and initialization latencies.</p>
        <p>It invokes functions in parallel to hide the latencies of the
REST API calls. It is also able to instruct functions to
call themselves recursively, e ectively distributing the task
of function invocation.</p>
        <p>
          To avoid function initialization entirely, the scheduler can
speculatively invoke and reinvoke functions at additional
costs. We plan to inform this process with knowledge from
the query compiler. We also want to compare this to means
by cloud providers to keep functions warm automatically [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ].
        </p>
      </sec>
      <sec id="sec-6-3">
        <title>Operator Communication</title>
        <p>In FaaS-based query execution, the nave way for operators
to communicate is to materialize their outputs to shared
storage, and to start all instances of an individual operator
only when all instances of the preceding operator nished.
The Skyrise query engine improves on this. Along typically
pipelined plan fragments, a succeeding operator's instances
are started early upon partial availability of intermediate
results. We plan to explore, whether some materialization
points can be avoided via monolithic operator functions. We
also want to study late materialization in this context.</p>
      </sec>
      <sec id="sec-6-4">
        <title>Access to Persistent and Intermediate Data</title>
        <p>
          The execution engine supports columnar and compressed le
formats, such as Apache Parquet [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ], to e ciently process
persistent and intermediate data. We intend to improve in
this area in three ways. First, we will investigate auxiliary
data structures for pruning persistent data. Second, we will
look into recently added capabilities of object stores to
pushdown query logic, such as predicates. And third, we will
explore the usage of multiple storage tiers for intermediate
data storage as done by Locus.
        </p>
        <p>To prevent potential data consistency issues, when using
current object storage services, we devise a set of measures.
For the read-your-own-write issue, we let our operators only
nish after they have polled the storage service long enough
to verify the existence of their outputs. For the atomic
multi-key write issue, we are considering the introduction
of metadata les that reference multiple data les and can
themselves be written atomically.
4.3</p>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>Skyrise Query Optimizer</title>
      <p>In Skyrise, the query optimizer is the major component
for balancing performance and cost, down to the granularity
of individual queries. It is also key to exploiting the available
parallelism of the underlying FaaS platform. For this query
optimizer, we will investigate a distinguishing feature set.</p>
      <p>
        It should be aware of the fact that it is targeting a
FaaSbased execution environment. As such, it should know about
potential degrees of freedom (e.g., fusing vs. splitting cloud
functions [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], sizing function instances, or pre-allocating
them). It should further know about constraints (e.g., upper
function instance sizes [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]). Next to the typical
statisticsbased performance estimations, it also needs to conduct
pricing-based cost estimations and trade them o in a
meaningful way. Lastly, it should consider plans that are t to this
execution environment, e.g., ones that avoid data exchanges
or introduce additional opportunities for parallelism [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ].
      </p>
    </sec>
    <sec id="sec-8">
      <title>CONCLUSION</title>
      <p>We discussed our current work as well as future work plans
towards our vision for elastic query processing on function
as a service platforms. We presented our research prototype
Skyrise and the approaches that we are pursuing with it
to overcome the challenges for FaaS-based query execution.
These lie in the areas of current cloud function and object
storage services, and in optimizing queries for performance
and cost e ciency in modern cloud infrastructures.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>A.</given-names>
            <surname>Agache</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Brooker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Florescu</surname>
          </string-name>
          , et al.
          <article-title>Firecracker: Lightweight virtualization for serverless applications</article-title>
          .
          <source>In USENIX NSDI</source>
          , pages
          <volume>419</volume>
          {
          <fpage>434</fpage>
          ,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>Amazon</given-names>
            <surname>Inc</surname>
          </string-name>
          . Amazon EC2. https://aws.amazon.com/ec2/,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>Amazon</given-names>
            <surname>Inc</surname>
          </string-name>
          .
          <article-title>AWS Billing and Cost Management</article-title>
          . https://docs.aws.amazon.com/account-billing/,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>Amazon</given-names>
            <surname>Inc</surname>
          </string-name>
          . AWS Lambda. https://aws.amazon.com/lambda/,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>Amazon</given-names>
            <surname>Inc</surname>
          </string-name>
          . Cloud Storage on AWS. https://aws.amazon.com/products/storage/,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>Amazon</given-names>
            <surname>Inc</surname>
          </string-name>
          .
          <article-title>Managing concurrency for a Lambda function</article-title>
          . https://docs.aws.amazon.com/lambda/ latest/dg/configuration-concurrency.html,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>G.</given-names>
            <surname>Ananthanarayanan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Ghodsi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Shenker</surname>
          </string-name>
          , et al.
          <article-title>Disk-locality in datacenter computing considered irrelevant</article-title>
          .
          <source>In USENIX HotOS</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>Apache</given-names>
            <surname>Software Foundation</surname>
          </string-name>
          . Apache Parquet. https://parquet.apache.org/,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>M.</given-names>
            <surname>Cai</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Grund</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Gupta</surname>
          </string-name>
          , et al.
          <article-title>Integrated querying of SQL database data and S3 data in Amazon Redshift</article-title>
          .
          <source>IEEE Data Engineering Bulletin</source>
          ,
          <volume>41</volume>
          (
          <issue>2</issue>
          ):
          <volume>82</volume>
          {
          <fpage>90</fpage>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>B.</given-names>
            <surname>Dageville</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Cruanes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Zukowski</surname>
          </string-name>
          , et al.
          <article-title>The Snow ake elastic data warehouse</article-title>
          .
          <source>In ACM SIGMOD</source>
          , pages
          <volume>215</volume>
          {
          <fpage>226</fpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>T.</given-names>
            <surname>Elgamal</surname>
          </string-name>
          . Costless:
          <article-title>Optimizing cost of serverless computing through function fusion and placement</article-title>
          .
          <source>In IEEE/ACM SEC</source>
          , pages
          <volume>300</volume>
          {
          <fpage>312</fpage>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Google</surname>
            <given-names>LLC</given-names>
          </string-name>
          .
          <article-title>Google Cloud Functions</article-title>
          . https://cloud.google.com/functions/,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>A.</given-names>
            <surname>Gupta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Agarwal</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Tan</surname>
          </string-name>
          , et al.
          <article-title>Amazon Redshift and the case for simpler data warehouses</article-title>
          .
          <source>In ACM SIGMOD</source>
          , pages
          <year>1917</year>
          {
          <year>1923</year>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>J. M. Hellerstein</surname>
            ,
            <given-names>J. M.</given-names>
          </string-name>
          <string-name>
            <surname>Faleiro</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Gonzalez</surname>
          </string-name>
          , et al.
          <article-title>Serverless computing: One step forward, two steps back</article-title>
          .
          <source>In CIDR</source>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>E.</given-names>
            <surname>Jonas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Q.</given-names>
            <surname>Pu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Venkataraman</surname>
          </string-name>
          , et al.
          <article-title>Occupy the cloud: Distributed computing for the 99%</article-title>
          . In ACM SoCC, pages
          <volume>445</volume>
          {
          <fpage>451</fpage>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Kim</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.</given-names>
            <surname>Lin</surname>
          </string-name>
          .
          <article-title>Serverless data analytics with int</article-title>
          .
          <source>In IEEE CLOUD</source>
          , pages
          <volume>451</volume>
          {
          <fpage>455</fpage>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>Microsoft</given-names>
            <surname>Corp</surname>
          </string-name>
          . Azure Functions. https: //azure.microsoft.com/services/functions/,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>K.</given-names>
            <surname>Ousterhout</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Panda</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Rosen</surname>
          </string-name>
          , et al.
          <article-title>The case for tiny tasks in compute clusters</article-title>
          .
          <source>In USENIX HotOS</source>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>Q.</given-names>
            <surname>Pu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Venkataraman</surname>
          </string-name>
          ,
          <string-name>
            <surname>and I. Stoica.</surname>
          </string-name>
          <article-title>Shu ing, fast and slow: Scalable analytics on serverless infrastructure</article-title>
          .
          <source>In USENIX NSDI</source>
          , pages
          <volume>193</volume>
          {
          <fpage>206</fpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>J.</given-names>
            <surname>Tan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Ghanem</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Perron</surname>
          </string-name>
          , et al.
          <article-title>Choosing a cloud DBMS: architectures and tradeo s</article-title>
          .
          <source>PVLDB</source>
          ,
          <volume>12</volume>
          (
          <issue>12</issue>
          ):
          <volume>2170</volume>
          {
          <fpage>2182</fpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>M.</given-names>
            <surname>Vuppalapati</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Miron</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Agarwal</surname>
          </string-name>
          , et al.
          <article-title>Building an elastic query engine on disaggregated storage</article-title>
          .
          <source>In USENIX NSDI</source>
          , pages
          <volume>449</volume>
          {
          <fpage>462</fpage>
          ,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <surname>C. Wu</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          <string-name>
            <surname>Sreekanti</surname>
            , and
            <given-names>J. M.</given-names>
          </string-name>
          <string-name>
            <surname>Hellerstein</surname>
          </string-name>
          .
          <article-title>Autoscaling tiered cloud storage in anna</article-title>
          .
          <source>PVLDB</source>
          ,
          <volume>12</volume>
          (
          <issue>6</issue>
          ):
          <volume>624</volume>
          {
          <fpage>638</fpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>T.</given-names>
            <surname>Zhang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Xie</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Li</surname>
          </string-name>
          , et al.
          <article-title>Narrowing the gap between serverless and its state with storage functions</article-title>
          .
          <source>In ACM SoCC</source>
          , pages
          <volume>1</volume>
          {
          <fpage>12</fpage>
          ,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>J.</given-names>
            <surname>Zhou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Larson</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Chaiken</surname>
          </string-name>
          .
          <article-title>Incorporating partitioning and parallel plans into the SCOPE optimizer</article-title>
          .
          <source>In IEEE ICDE</source>
          , pages
          <volume>1060</volume>
          {
          <fpage>1071</fpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>