<!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>MELOGRAPH: Multi-Engine WorkfLOw Graph Processing</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Camelia Elena Ciolac</string-name>
          <email>camelia@chalmers.se</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Big Data @ Chalmers, ICT Area of Advance</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Chalmers University of Technology Gothenburg</institution>
          ,
          <country country="SE">Sweden</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>This paper introduces MELOGRAPH, a new system that exposes in the front-end a domain speci c language(DSL) for graph processing tasks and in the back-end identi es, ranks and generates source code for the top-N ranked engines. This approach lets the specialized MELOGRAPH be part of a more general multi-engine work ow optimizer. The candidate execution engines are chosen from the contemporaneous Big Data ecosystem: graph databases (e.g. Neo4j, TitanDB, OrientDB, Sparksee/DEX) and robust graph processing frameworks with Java API or packaged libraries of algorithms (e.g. Giraph, Okapi, Flink Gelly, Hama, Gremlin). As MELOGRAPH is work in progress, our current paper stresses upon the state of the art in this eld, provides a general architecture and some early implementation insights. Big Data ecosystem; multi-engine work ow; graph processing tasks</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>STATE OF THE ART</title>
      <p>The multitude of frameworks and datastores in the Big
Data ecosystem, with their di erent data models, libraries
of implemented algorithms, available connectors and
performance pro les, make it challenging to select the right tools
when building a Big Data storage and processing
architecture. Instead, one can bene t from the open-source licenses
and community editions to set up a polyvalent architecture,
with polyglot persistence and multiple processing engines.</p>
      <p>
        On the data management side, with the emergence of
NoSQL datastores that usually complement relational
databases in the enterprise data architecture, there has been a
continuous interest for polyglot persistence (also referred to
as "multiparadigm data storage" [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]). Besides explaining
this data strategy as a specialization in data representation
to better re ect the application data types, [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] highlighted
the necessity of multiparadigm programming with Big data.
At that time, in 2010, this collocation de ned the lack of an
uni ed query language among NoSQL datastores and the
need develop an integration layer using the programming
languages (e.g. Java, Python) in which these datastores
provided query APIs.
      </p>
      <p>
        This research topic remained an open challenge and few
robust solutions have been provided to this date. From
the industry, we cite Oracle Big Data SQL [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] with its
"Query Franchising" strategy of unifying queries over
Oracle databases, Hadoop and NoSQL datastores. From the
open source community, we highlight the e orts of the
Cascading Lingual project [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] which uses Apache Calcite
(formerly named Optiq) to support SQL over a variety of data
providers, by pushing as much as possible of the query
processing to the datastores that manage the data. In the
scienti c community, the most recent and remarkable
development in this eld is the BigDAWG polystore[
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ],
promoting the "islands of information", each with its query language
that nally maps to the underlying storage engines' native
language through "shims" acting as translators.
      </p>
      <p>
        Perhaps even more challenging than with storing and
querying Big Data, developing complex analytics work ows needs
choosing among the plethora of candidate frameworks.
Several Big Data architecture patterns were promoted (e.g. [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]),
in which scripting or a work ow manager orchestrates tasks
on pre-established engines. Apache Oozie, Azkaban, Luigi
are the most popular work ow managers in Hadoop, yet
after inspecting their set of supported engines we conclude
that they were rather designed for ETL pipelines, not
complex analytics work ows. Let us underline that
out-of-thebox they don't support scheduling on specialized graph
processing frameworks.
      </p>
      <p>
        A more mature approach to tackle the complexity of the
problem is to enhance a work ow manager with some
"intelligence", with the ability to decide between several
frameworks and to generate all necessary ETLs between the
chosen execution engines. Therefore nowadays an increasing
focus is put on designing multi-engine work ows [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ],
addressing the various facets of this problem: process
modelling and detail abstracting of execution, data formats, data
sources [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]; execution engine selection modelled as a global
optimization problem [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]; dynamic scheduling and resource
management [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>
        A couple of publications present prototypes of systems
that address all these dimensions: QoX [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], IReS [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ],
Musketeer [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Common to all of them is the decoupling of
the front-end from the back-end engine, yet each one has
its speci c approach; for example QoX exposes an
XMLbased "proprietary ow metadata language" (xLM) at the
front-end and in the back-end uses a library of operations
[
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], while Musketeer exposes a SQL-like query language
and a "Gather-Apply-Scatter style" domain speci c language
(DSL) for graph processing in the front-end and generates
code based on code templates in the back-end [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Also,
all three aforementioned systems use cost-based
optimization, with speci c search space and search algorithms for
single- or multi- engine optimal scheduling of the work ow.
Case studies and demonstrations of some of the
aforementioned systems are anchored in the contemporaneous Big
Data ecosystem: IReS with a practical demonstration over
f Hadoop, Hama, Spark, PostgreSQL with HDFS, HBase,
Elasticsearchg [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], Musketeer with an evaluation over fSpark,
Hadoop MapReduce, GraphChi, PowerGraph, GraphLINQg
[
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. These proofs of concept did address graph processing
tasks to a limited extent, without the intention to include
a larger inventory of options currently available in the Big
Data ecosystem.
      </p>
      <p>
        Except from these studies, few practical results of
integrating graph analytics in larger work ows are reported (e.g.
graph processing and NLP [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]). In an extensive review of
the current state of the art of graph processing on Big Data
[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], the conclusion is that nowadays "most of the large scale
graph processing platforms have the limitation that they are
not able to connect their graph processing capabilities with
the vast ecosystem of other analytics systems".They cite the
industrial pioneering work of Teradata Aster 6.0 that "have
started to tackle this challenge by extending its analytics
capabilities with a multi-engine processing architecture"[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. A
deeper investigation into this system [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] reveals that graphs
" can be derived, or projected, from many sources and types
of business data" and that a "graph analytics program, or
graph function, is modeled as a polymorphic table operator
like Aster's existing SQL-MR analytics functions", making
it possible to be invoked even from SQL queries.
      </p>
      <p>Finally, let us highlight some di erences between
MELOGRAPH and the aforementioned systems. Compared to
Aster's SQL-GR, MELOGRAPH not only aims to support a
variety of data sources as input, but also to support various
execution engines for each task; however MELOGRAPH's
DSL doesn't make it embeddable in SQL queries. Compared
to the other systems we innovate in the following aspects:
1) MELOGRAPH addresses speci c graph processing tasks,
the suitability of storing data in a graph database prior to
processing, possible optimizations in cascaded graph tasks;
2) MELOGRAPH generates Java source code on-the- y and
does not treat operators as black boxes; 3) MELOGRAPH
does not need any syntax validation since this is already
enforced by the MPS editor (based on the DSL structure).</p>
    </sec>
    <sec id="sec-2">
      <title>2. SOME MOTIVATING EXAMPLES</title>
      <p>Before diving in the discussion about MELOGRAPH, let
us rst depict some examples of work ows containing graph
processing tasks. In a rst example, from the citations
network in Computer Science we rstly retain a subgraph
having in nodes only publications cited at least k times, then
among them nd communities based on papers' co-citation
and lastly evaluate how close is each community to a clique
structure. In this case we have a sequence of three graph
processing tasks in the work ow: a k-core graph processing
task, a label propagation (or other epidemics-based
identi cation of network structure) and nally aggregations to
compute local clustering coe cients.</p>
      <p>Secondly, a use case from the entertainment industry, where
one can use YouTube Data API to extract the network of
videos (retaining video's unique identi er, metadata about
its channel/user, video title, description) and their
relatedto relationships (a search for relatedToVideoId). Once the
graph is obtained, two processing tasks are launched
sequentially: a pattern matching query over the graph and a
text semantic analysis over the resulting subgraphs video's
description in order to extract entities (entity recognition
task).</p>
      <p>
        We end by presenting an example from [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]: a work ow
from the marketing domain, where a PageRank graph
analysis task identi es the most in uential customers, a di erent
task performs sentiment analysis of customers' reviews to
discover the satis ed ones, and nally a join of the two
resultsets is performed.
3.
      </p>
    </sec>
    <sec id="sec-3">
      <title>AN OVERVIEW OF MELOGRAPH</title>
      <p>The main components that build up the MELOGRAPH
internals are: the DSL kneaded in a language workbench,
the Candidate Solutions Assembler, the Ranker and the
Solution Packager. Now let us present some details for each
component.</p>
      <p>Our domain speci c language, MELOGRAPHy, is designed
and built to facilitate the de nition of graph processing tasks
in a manner agnostic to the execution engine. In a rst
stage, MELOGRAPHy supports functionality only based on
the inventory of algorithms and queries available in the
engines. However, in a second stage we want to extend the
language to allow custom vertex-centric iterations using the
Bulk Synchronous Parallel Model. We give some insights
into our DSL in section 4 of the paper.</p>
      <p>Based on the inventory of engines and on a set of patterns,
the Candidate Solutions Assembler (CSA) builds the
possible pipelines for solving the graph processing task. The CSA
is concerned with the feasibility of the solution, not with its
optimality, therefore some of the candidate solutions it
produces may exhibit weak performance at runtime.</p>
      <p>
        It is the role of the Ranker component to reward or to
penalize candidate solutions based on a set of heuristics.
Ideally, a cost-based model should be employed by the Ranker
to build its nal ranking of the candidate solutions; we'll
address this aspect in a future study. From the cost
perspective, for the moment we can anticipate adopting the
approach to treat execution engines as black boxes; this idea
already won consensus among both Big data management
researchers (e.g. " A 'black box' approach makes a lot more
sense when coping with disparate underlying engines" [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ])
and multi-engine work ows researchers ( e.g. [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] present an
optimization of the work ow scheduling which is
"orthogonal to (and in fact enhanced by) any optimization e ort
within a single engine").
      </p>
      <p>Finally, the Solution Packager prepares all the necessary
shell scripts to launch in execution the various tools found
in each of the top-N ranked candidate solutions. Therefore,
the nal result of MELOGRAPH consists in a number of N
folders in the local le system, each folder storing:
the le containing the code source generated by the
language workbench at compilation time;
additional ETL scripts/programs to convert inputs to
required format or to load data in a graph database;
a driver script that orchestrates all the tools in that
solution.</p>
      <p>The next section presents how MELOGRAPH works, from
receiving the input task to packaging a set of alternative
solutions.</p>
    </sec>
    <sec id="sec-4">
      <title>MELOGRAPH IN ACTION</title>
      <p>Before presenting the processing work ow of MELOGRAPH,
in current version, let us rst provide some insights into
basic MELOGRAPHy domain speci c language.</p>
      <p>
        Regarding the DSL development environment we opted
for the JetBrains MPS metaprogramming system[
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] and
made use of its model-to-model transformation approach to
code generation. JetBrains MPS separates language
development concerns into:
structure (types of nodes in the Abstract Syntax Tree
and their relationships), made of concepts organized
in hierarchies;
editor in charge of visualization of syntax from the
user's perspective, optionally exhibiting some customized
behaviour;
generator which "de nes the denotational semantics for
the concepts in the language"[
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
      </p>
      <p>The root concept in MELOGRAPHy's structure is the T ask.
For this concept, Figure 1 presents the three aforementioned
concerns. Let us brie y make some comments.</p>
      <p>Firstly, we highlight our choice to use the GraphAlgorithm
concept to abstract both queries (e.g. pattern matching) and
graph analytics (e.g. PageRank).</p>
      <p>Secondly, in terms of data sources, the minimal
information needed to build and to analyze the graph is its
structure, which is given by the edges together with their
incident vertices identi ers. This is why dataSourceEdgeInf o
is mandatory, whereas dataSourceV ertexInf o is optional.
We realize that this approach misses out the isolated nodes,
but the user still has the option to load both the edges and
the vertices data sets and hence include isolated vertices too.
Besides eliminating unnecessary data loads, our approach
has a more subtle bene t: it easily accommodates polyglot
persistence, where vertex information is stored in a separate
datastore than the information from which we build edges.
One nal comment is that we take into consideration adding
one more child to the T ask's aforementioned structure, with
the scope of empowering the user to suggest his/her
preferred execution engine.</p>
      <p>Figure 2 depicts the structure of concepts that extend
EdgeDataSourceT ype and V ertexDataSourceT ype for the
speci c case of table data source (e.g. in Hive; but also in a
relational database in Oracle or MySQL). In a brief
parenthesis we comment that given a relational database table
as data source, MELOGRAPH will automatically include
Sqoop in all candidate solutions pipelines and thus the
actual input to the graph algorithm will be the HDFS le
obtained after loading the data. Thus, in the source code
generation templates we use le input directly in such cases.</p>
      <p>Let us also remark that except from the case of graph
databases (where this information is native), for the rest of
the data sources it is mandatory to specify the means of
accessing edges' endpoints. In the illustrated case of a table
data source locators are column names, similarly in the case
of a CSV le locators are eld indices and in the case of
HBase locators are fully quali ed columns names from some
column family.</p>
      <p>We advance now to the MELOGRAPH work ow. As
shown in Figure 1, the use of mapping con gurations makes
it possible to generate code for multiple engines at the same
time according to a set of Java code templates developed by
us. Details of this architecture are given in Figure 3.</p>
      <p>Along with engines-speci c code, we generate the class
M ELOGRAP Hclass that uses the functionality of all
MELOGRAPH components discussed in the overview section of
this paper. However, the ranking of the solutions can be
obtained only when this Java program is run, consequently
some of the heuristics need to be implemented in the
modelto-model transformers, too.</p>
      <p>With the data sources and the algorithm speci ed,
MELOGRAPH's Candidate Solutions Assembler will emit all
feasible pipelines to accomplish the task. This involves
assembling tools based on prede ned patterns. Except from the
data movement scripts that MELOGRAPH will eventually
generate, we need to embed these patterns in the
modelto-model transformer for each individual engine too. This
approach is required by the fact that all source les are
generated at once and need to be consistent among them.
MELOGRAPH's Ranker will then rank the solutions and output
a list of the top-N solutions.</p>
    </sec>
    <sec id="sec-5">
      <title>CONCLUSIONS</title>
      <p>The current state of the art in multi-engine processing
work ows on Big Data displays increasing interest in
tackling the practical challenges raised by the contemporaneous
Big Data ecosystem. We join this emerging research
movement and present in this paper the rst bricks that we've
put in developing MELOGRAPH.</p>
      <p>MELOGRAPH is specialized in graph processing tasks
which are generally part of ampler work ows; however, the
whole work ow needs to be developed in JetBrains MPS,
too. In the design of MELOGRAPH we address
heterogeneity at all levels, from the data sources, execution engines
and runtime computing environment (through the heuristics
used in ranking candidate solutions).</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Cascading</surname>
            <given-names>lingual</given-names>
          </string-name>
          , http://www.cascading.org/projects/lingual/.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>F.</given-names>
            <surname>Bajaber</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Sakr</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Batar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Altalhi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Elshawi</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Barnawi</surname>
          </string-name>
          .
          <article-title>Big data processing systems: State-of-the-art and open challenges</article-title>
          .
          <source>In Proceedings of the ICCC</source>
          <year>2015</year>
          , pages
          <issue>1{8</issue>
          ,
          <string-name>
            <surname>April</surname>
          </string-name>
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>K.</given-names>
            <surname>Doka</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Papailiou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Tsoumakos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Mantas</surname>
          </string-name>
          , and
          <string-name>
            <given-names>N.</given-names>
            <surname>Koziris</surname>
          </string-name>
          .
          <article-title>Ires: Intelligent, multi-engine resource scheduler for big data analytics work ows</article-title>
          .
          <source>In Proceedings of the 2015 ACM SIGMOD, SIGMOD '15</source>
          , pages
          <fpage>1451</fpage>
          {
          <fpage>1456</fpage>
          , New York, NY, USA,
          <year>2015</year>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>J.</given-names>
            <surname>Duggan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. J.</given-names>
            <surname>Elmore</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Stonebraker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Balazinska</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Howe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Kepner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Madden</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Maier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Mattson</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Zdonik</surname>
          </string-name>
          .
          <article-title>The bigdawg polystore system</article-title>
          .
          <source>SIGMOD Rec</source>
          .,
          <volume>44</volume>
          (
          <issue>2</issue>
          ):
          <volume>11</volume>
          {
          <fpage>16</fpage>
          ,
          <string-name>
            <surname>Aug</surname>
          </string-name>
          .
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>D.</given-names>
            <surname>Ediger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Appling</surname>
          </string-name>
          , E. Briscoe,
          <string-name>
            <given-names>R.</given-names>
            <surname>McColl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>and J.</given-names>
            <surname>Poovey</surname>
          </string-name>
          .
          <article-title>Real-time streaming intelligence: Integrating graph and nlp analytics</article-title>
          .
          <source>In Proceedings of IEEE HPEC</source>
          ,
          <year>2014</year>
          , pages
          <issue>1{6</issue>
          ,
          <string-name>
            <surname>Sept</surname>
          </string-name>
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>A.</given-names>
            <surname>Elmore</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Duggan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Stonebraker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Balazinska</surname>
          </string-name>
          ,
          <string-name>
            <given-names>U.</given-names>
            <surname>Cetintemel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Gadepally</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Heer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Howe</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Kepner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Kraska</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Madden</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Maier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Mattson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Papadopoulos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Parkhurst</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Tatbul</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Vartak</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Zdonik</surname>
          </string-name>
          .
          <article-title>A demonstration of the bigdawg polystore system</article-title>
          .
          <source>Proceedings of the PVLDB Endow.</source>
          ,
          <volume>8</volume>
          (
          <issue>12</issue>
          ),
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>D.</given-names>
            <surname>Ghosh</surname>
          </string-name>
          .
          <article-title>Multiparadigm data storage for enterprise applications</article-title>
          . IEEE Softw.,
          <volume>27</volume>
          (
          <issue>5</issue>
          ):
          <volume>57</volume>
          {
          <fpage>60</fpage>
          ,
          <string-name>
            <surname>Sept</surname>
          </string-name>
          .
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>I.</given-names>
            <surname>Gog</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Schwarzkopf</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Crooks</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. P.</given-names>
            <surname>Grosvenor</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Clement</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Hand</surname>
          </string-name>
          . Musketeer:
          <article-title>All for one, one for all in data processing systems</article-title>
          .
          <source>In Proceedings of the EuroSys '15</source>
          , pages
          <issue>2:1</issue>
          {2:
          <fpage>16</fpage>
          , New York, NY, USA,
          <year>2015</year>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>M.</given-names>
            <surname>Grover</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Malaska</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Seidman</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G.</given-names>
            <surname>Shapira. Hadoop Application Architectures. O'Reilly</surname>
          </string-name>
          , Beijing,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>JetBrains</surname>
          </string-name>
          .
          <article-title>Mps user's guide</article-title>
          , https://con uence.jetbrains.com/display/mpsd32/mps+user
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>V.</given-names>
            <surname>Kantere</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Filatov</surname>
          </string-name>
          .
          <article-title>Modelling processes of big data analytics</article-title>
          .
          <source>In J. e. a. Wang</source>
          , editor,
          <source>WISE (1)</source>
          , volume
          <volume>9418</volume>
          of Lecture Notes in Computer Science, pages
          <volume>309</volume>
          {
          <fpage>322</fpage>
          . Springer,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>G.</given-names>
            <surname>Kougka</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Gounaris</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Tsichlas</surname>
          </string-name>
          .
          <article-title>Practical algorithms for execution engine selection in data ows</article-title>
          .
          <source>Future Generation Computer Systems</source>
          ,
          <volume>45</volume>
          (Complete):
          <volume>133</volume>
          {
          <fpage>148</fpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>ORACLE</surname>
          </string-name>
          .
          <article-title>Uni ed query for big data management systems integrating big data systems with enterprise data warehouses</article-title>
          .
          <source>Technical report</source>
          , ORACLE,
          <string-name>
            <surname>ORACLE</surname>
          </string-name>
          , Jan.
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>A.</given-names>
            <surname>Simitsis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Wilkinson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Castellanos</surname>
          </string-name>
          , and
          <string-name>
            <given-names>U.</given-names>
            <surname>Dayal</surname>
          </string-name>
          .
          <article-title>Optimizing analytic data ows for multiple execution engines</article-title>
          .
          <source>In Proceedings of the 2012 ACM SIGMOD</source>
          , pages
          <volume>829</volume>
          {
          <fpage>840</fpage>
          , New York, NY, USA,
          <year>2012</year>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>D.</given-names>
            <surname>Simmen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Schnaitter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Davis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>He</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Lohariwala</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Mysore</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Shenoi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Tan</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Y.</given-names>
            <surname>Xiao</surname>
          </string-name>
          .
          <article-title>Large-scale graph analytics in aster 6: Bringing context to big data discovery</article-title>
          .
          <source>Proc. VLDB Endow</source>
          .,
          <volume>7</volume>
          (
          <issue>13</issue>
          ):
          <volume>1405</volume>
          {
          <fpage>1416</fpage>
          ,
          <string-name>
            <surname>Aug</surname>
          </string-name>
          .
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>M.</given-names>
            <surname>Stonebraker</surname>
          </string-name>
          .
          <article-title>The case for polystores</article-title>
          , http://wp.sigmod.org/?p=
          <fpage>1629</fpage>
          ,
          <year>July 2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>D.</given-names>
            <surname>Tsoumakos</surname>
          </string-name>
          and
          <string-name>
            <given-names>C.</given-names>
            <surname>Mantas</surname>
          </string-name>
          .
          <article-title>The case for multi-engine data analytics</article-title>
          .
          <source>In D. e. a. an Mey</source>
          , editor,
          <source>Euro-Par 2013: Parallel Processing Workshops</source>
          , volume
          <volume>8374</volume>
          of Lecture Notes in Computer Science, pages
          <volume>406</volume>
          {
          <fpage>415</fpage>
          . Springer Berlin Heidelberg,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>