<!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>Information Discovery in Polystores: the Augmented Way (Discussion Paper)</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Antonio Maccioni</string-name>
          <email>amaccioni@collectivei.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Riccardo Torlone</string-name>
          <email>riccardo.torlone@uniroma3.it</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Collective[i]</institution>
          ,
          <addr-line>New York City</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Roma Tre University</institution>
          ,
          <addr-line>Rome</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Polystores provide a loosely coupled integration of heterogeneous data sources based on the direct access, with the local language, to each storage engine for exploiting its distinctive features. In this framework, given the absence of a middleware exposing a global schema, it is hard to know if a query to one system can be satis ed by data stored elsewhere in the polystore. We address this problem by illustrating query augmentation, a data manipulation operator for polystores based on the automatic enrichment of the answer to a local query with related data in the rest of the polystore. Augmentation can be used to implement augmented search and augmented exploration: two e ective methods for information discovery in polystores that avoid middleware layers, abstract query languages, and shared data models.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        The concept of polyglot persistence, which consists of using di erent database
technologies to handle di erent data storage needs [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], is spreading within
enterprises. Recent research has shown that, on average, each enterprise application
relies on at least two or three di erent types of database engines.
Example 1. Let us consider a company called Polyphony selling music online. As
shown in Fig. 1, each department uses a storage system that best ts its speci c
business objectives: (i) the sales department guarantees ACID properties for its
transactions database with a relational system, (ii) the warehouse department
supports its activities with a document store catalogue, where each item is
represented by a JSON document, and (iii) the marketing department uses a graph
database of similar-items supporting recommendations. In addition, a key-value
store containing discounts on products is shared among the above departments.
      </p>
      <p>Copyright c 2019 for the individual papers by the papers' authors. Copying
permitted for private and academic purposes. This volume is published and copyrighted
by its editors. SEBD 2019, June 16-19, 2019, Castiglione della Pescaia, Italy.</p>
      <p>
        This approach, however, makes even harder the problem of data integration
given the strong heterogeneity of the systems in play [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. The traditional solution
to this issue is based on a middleware layer involving a uni ed language, a
common interface, or a universal data model [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. However, the addition of this
layer to the software stack adds computational overhead at runtime and, more
importantly, hides the speci city and functionality for which these systems were
adopted. In addition, it is hard to maintain, having an inherent complexity that
increases signi cantly as new database systems take part to the environment.
      </p>
      <p>
        Polystore systems (or simply, polystores) have been proposed recently as
an alternative solution for this approach [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. The basic idea is to provide a
loosely coupled integration of data sources and allow the direct access, with the
local language, to each speci c storage engine to exploit its distinctive features.
This solution meets the requirements of scenarios in which users are often aware
of a single (or a few) database only but does not know anything about other
databases (neither the content, nor the way to query them and, sometimes, not
even their existence). On the other hand, it poses new challenges for accessing
and combining all the available data. To recall a discussion about this approach,
the issue is that \if I knew what query to ask, I would ask it, but I don't" [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
      </p>
      <p>
        In this paper, we present (query ) augmentation, a new construct for data
manipulation in polystores that, based on a simple notion of probabilistic
relationship between objects in di erent data stores, allows the automatic enrichment
of a dataset stored in a local database with data outside the database but
available in the polystore. The implementation of this operator does not require the
addition of an abstraction layer involving query translation and therefore has a
minimal impact on the applications running on top of the data layer. The goal is
to provide a soft mechanism for data integration in polystores that complements
other approaches, such as those based on cross-db joins [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>Two e ective methods for data access in polystore can be de ned with the
augmentation construct: augmented search and augmented exploration.</p>
      <p>
        Augmented search is a form of query relaxation [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] and consists of the
automatic expansion of the result of a query over a local database with data that
is relevant to the query but is stored elsewhere in the polystore. This is useful
in scenarios where information is shared across the organization and the various
databases complement or overlap each other. Assume for instance that Lucy, an
employee of Polyphony working in the sales department, only knows SQL but
needs all the information available on the album \Wish". Then, she just needs
to submit, in augmented mode, an SQL query over the database transactions in
Fig. 1. By exploiting augmentation, the result of the query is the augmented
object reported below, revealing details on the product that are not in the database
of the sales department, including the fact that it is currently on a 40% discount.
&lt; a32, Cure, Wish &gt;
      </p>
      <p>)
+
(discounts: 40%)
(catalogue:f title: Wish,</p>
      <p>artist id: a1,
artist: The Cure,
year: 1992,
... g )
In an augumented search, each retrieved element e is associated with the
probability that e is related to the result of the query. Such probability is derived
o -line from integrity constraints and data mining techniques. Colors (as in the
example above) and rankings can be used in practice to represent, in a more
intuitive way, external data and the degree of relevance.</p>
      <p>
        Augmented exploration makes use of the augmentation operator to provide
a more interactive and exible way to access data, which consists of a guided
expansion of the result of a local query. For example, if Lucy submits in
exploratory mode another SQL query to the database transactions for retrieving all
the sales whose total income is greater than 15, she obtains the tuple that
follows, in which the links suggest that further information, related to the returned
tuple, is available elsewhere and allows her to decide with a click (e.g., on the
user name) how to deepen the result. As above, the result is probabilistic.
This process is iterative and provides a method for database exploration [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ],
where the user can freely nd her way through the polystore, by just clicking on
the links as soon as they are made available.
      </p>
      <p>
        We have implemented our approach in QUEPA3, a polystore system
equipped with the augmentation operator that provides the access methods
discussed above and is compatible with most modern database engines. QUEPA
operates in a plug-and-play mode and does not a ect the access modalities of
the various storage systems, thus reducing the need for ad-hoc con gurations
and for a middleware involving uni ed query languages or shared data models.
3 A demo of QUEPA has been shown in [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
      </p>
      <p>In addition, we have developed an optimization technique that relies on machine
learning methods to tune the execution of the augmentation operator.</p>
      <p>
        In the rest of the paper we brie y describe the underlying data model
(Section 2), the augmentation mechanism (Section 3), and its implementation
(Section 4). Details and experimental results are in the full version of the paper [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
2
      </p>
    </sec>
    <sec id="sec-2">
      <title>A data model for polystores</title>
      <p>In PDM (Polystore Data Model) a polystore P is made of a set of databases
P = fD1; : : : ; Dng stored in a variety of data management systems S1; : : : ; Sn
respectively (relational, key-value, graph, etc.). A database D 2 P consists of a
set of data collections each of which is a set of (data) objects. An object o 2 C
is just a key-value pair: o = hk; vi where k identi es uniquely o in C and v is an
atomic piece of data. A tuple and a JSON document are examples of data objects
in a relational database and in a document store of a polystore, respectively.</p>
      <p>By de nition, given a database D of a polystore P, a data collection C in D
and a data object o = hk; vi in C, we can uniquely identify o in P by means of
k, C and D. We call k^ = D:C:k the global-key of o in P.</p>
      <p>Example 2. In the polystore in Figure 1 hd1; f id : d1; title : Wish; : : :gi is
an object of the albums collection in the catalogue database whereas
hs8; (s8; John Doe; 20:0)i is an object of the sales collection in the transactions
database. The global-key of the latter is transactions:sales:s8.</p>
      <p>
        This model captures polystores involving any database system satisfying the
minimum requirement that every stored data object can be identi ed and
accessed by means of a key. Note that the granularity of objects inevitably depends
on the designer's choice [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>The other main ingredient of PDM is the ability to correlate data objects
of possibly di erent databases of the polystore by means of the following basic
notion, which we call p-relation (for relation in a polystore).</p>
      <p>De nition 1 (p-relation). A p-relation on two objects o1 and o2, denoted by
o1Rpo2, represents the existence of a relation R between o1 and o2 with probability
p (0 &lt; p 1), where R can be one of the following types:
{ the identity, denoted by : a re exive, symmetric and transitive relation
(i.e., an equivalence relation), representing the fact that o1 and o2 refer to
the same real-world entity;
{ the matching, denoted by : a re exive and symmetric relation (not
necessarily transitive), representing the fact that o1 and o2 share some common
information.</p>
      <p>We assume that in a polystore p-relations are \consistent" in the sense that they
satisfy the following condition: for each triple of objects o1, o2 and o3 such that
o1 o2 and o2 o3 it is the case that o1 o3. While this is a natural condition
(two equivalent objects should match the same objects), it guarantees that the
augmentation construct behaves consistently with equivalent objects.
Example 3. Consider the polystore in Fig. 1. By denoting the objects with
their global keys we have for instance that: catalogue.albums.d1 0:8
discount.drop.k1:cure:wish, and transactions.inventory.a32 1transactions.sales-details.i4.</p>
      <p>
        Basically, while the identity relation serves to represent multiple occurrences
of the same entity in the polystore, the matching relation models general
relationships between data di erent from the identity (e.g., those typically captured by
foreign keys in relational databases or by links in graph databases). On the
practical side, p-relations are derived from the metadata associated with databases
in the polystore (e.g., from integrity constraints) or are discovered using
probabilistic mining techniques. For the latter task, we rely on the state-of-the-art
techniques for probabilistic record linkage [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], that is, algorithms able to score
the likelihood that a pair of objects in di erent databases match.
3
      </p>
    </sec>
    <sec id="sec-3">
      <title>Augmentation in polystores</title>
      <p>The augmentation construct. The basic operator of our approach takes as
input an object o of a polystore and returns the augmented set n(o), which
iteratively returns data objects in the polystore that are related to o with a
certain probability. This probability is computed by combining the probabilities
of the relationships that connect o with the retrieved objects.</p>
      <p>De nition 2. Let o be a set of objects in a polystore P. The augmentation n
of level n 0 of o is a set o0 of objects op, where o 2 P and p is the probability
of membership of o to o0, de ned as follows (m &gt; 0):
{
{
0(o) = o [ fop j o p o0 ^ o0 2 og
m(o) = m 1(o) [ fop^ j (o p0 o0) ^ (o0p 2
m 1(o)) ^ (p^ = p p0)g
Example 4. Let us consider the polystore in Fig. 2 in which nodes represents
objects, ovals represent di erent databases, solid lines represent identity
prelations, and dashed lines represent matching p-relations. Labels associated
with p-relations denote their probability. Then, we have 0(fo4g) = fo4; o01:9g,
1(fo4g) = fo4; o10:9; o70:8; o08:7g, and 3(fo4g) = fo4; o01:9; o07:8; o80:7; o01:07g.
Note that, by construction, for every k 0, if o 2 k(o) then o0 2 k(o) for each
o0 o. Indeed, if o belongs to k(o) because of an object o00 2 k 1(o) such
that o00 o, the consistency condition above implies that if o o0, we have also
that o00 o0 and so, by De nition 2, o0 2 k(o).</p>
      <p>The augmented construct can be at the basis of two alternative ways to access
a polystore, as described in the following.</p>
      <p>Augmented Search. An augmented search consists of the expansion of the
result of a query over a local database with data that are relevant to the query
but are stored elsewhere in the polystore. Consider again a polystore P composed
of a set of databases stored in di erent data management systems each equipped
with a speci c query language. Now, let QS denote a query expressed in the
query language of the storage system S and let QS (D) be the set of objects in
the result of QS over a database D stored in S.
De nition 3. The augmentation of level n 0 of a query QS over a database
D stored in S, denoted by QS (n)(D), consists in the augmentation of level n 0
of the result of QS over D ordered according to the probability of its elements.
Example 5. Let Q be a query over the database D1 in Fig. 2 that returns the
objects o1 and o2. Then we have Q(0)(D1) = fo1; o2; o04:9g and Q(1)(D1) =
(o1; o2; o40:9; o07:7; o80:6; o30:6).</p>
      <p>
        Augmented Exploration Exploratory computing is a new trend in big data
access that aims at helping users to make sense of very big data sets by means of
step-by-step interaction with the system oriented to the progressive re nement
of the data retrieval process [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. The augmentation construct can provide e
ective support for exploratory computing in a polystore through a process that
we call augmented exploration. Intuitively, augmented exploration consists of a
guided expansion of the result of a query over a local database with related data
stored elsewhere in the polystore. It works as follows: we start with a query QS
expressed in the query language of the storage system S in the polystore and
execute QS over a database D stored in S. We then select, from the answer of the
query an object o and apply to o the augmentation construct of level 0 (step 1)
and order the result according to the probability of each element. Again, we
select, from the result we obtain, an object o1 and apply to it the augmentation
construct of level 1 (step 2) and order the result. We then proceed similarly, by
selecting an object oi from the result of the previous step and apply the
augmentation construct of level 1 to oi, until the user is satis ed with her search.
This can be formalized as follows.
      </p>
      <p>De nition 4. An augmented exploration of a polystore P starting from a query
QS over a database D stored in S consists of a sequence of k steps: [(o0 !
o0); (o1 ! o1); : : : ; (ok ! ok)] where:
{ o0 2 QS (D) and o0 =
{ oi 2 oi 1 and oi =</p>
      <p>0(fo0g),
1(foig) (i &gt; 0).</p>
      <p>Example 6. Consider the query in Example 5 wich returns the set of objects
fo1; o2g. Then, a possible augmented exploration involves the steps:
(o1 ! fo40:9g); (o2 ! fo30:6g); (o4 ! f 7</p>
      <p>o0:8; o80:7g)</p>
    </sec>
    <sec id="sec-4">
      <title>A tool supporting augmentation</title>
      <p>
        We have fully implemented our approach in a system called QUEPA [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Its
architecture is illustrated in Fig. 3 and includes the main following components:
{ Augmenter: it implements the augmentation operator and orchestrates
augmented query answering. Various smart strategies have been adopted for its
optimization aimed at being: (i) network-e cient, by retrieving all the
objects from one database with a single query and thus reducing the number of
queries to local databases and the communication between them, (ii)
CPUe cient, by assigning independent queries to parallel threads and leveraging
the multi-core nature of modern CPU, and (iii) memory-e cient, by
suitably caching the last accessed objects and thus reducing the I/O requests. In
addition, since traditional cost-based optimizers are di cult to implement
in a polystore, given the limited knowledge of each database in play, we have
developed an adaptive, rule-based optimizer to dynamically predict the best
combination of the above strategies for the the query under consideration.
{ A+ index: it is a global, graph-based index in which each global-key is
represented in one node and there are two types of edges connecting nodes that
represent identity and matching p-relations, respectively.
{ Collector: it is in charge of discovering, gathering and storing p-relations
in the A+index. This is done by collecting fresh metadata, as soon as new
datasets are added, and by leveraging existing techniques for record
linkage [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Speci cally, we used BLAST [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] for a non-supervised step of object
blocking and DuKe4 for the following step of pairwise matching. On the basis
of the nal matching score provided by DuKe, we decide whether a p-relation
is an identity or a matching. In addition to the creation of the A+index from
scratch, we have developed a simple, yet e ective, learning mechanism that
4 https://github.com/larsga/Duke
adds matching p-relations depending on the navigation history of users when
they operate in exploratory mode.
{ Connectors: they are used to interact with the polystore. Each connector is
able to communicate with a speci c database system by sending queries in
the local language and returning the result. Data objects are parsed into an
internal representation.
{ Validator: it is used to pre-evaluate a query and to assess rapidly whether
it can be augmented or not.
      </p>
      <p>The validator rst checks if the query is correct (step Á) and possibly rewrites
it (step Â) before its execution over the target database (step Ã). The local
answer a is returned to the augmenter which is now ready to compute the
augmentation (step Ä). It gets from the A+index the global keys of data objects
reachable from those in a with n applications of the augmentation primitive
(step Å). These global keys are used to retrieve data objects from the polystore
with local queries Qi (step Æ). Finally, the augmented answer is returned to
the user (step Ç). The interaction in the augmented exploration is similar but
simpli ed since, at each step, only a single data object is augmented.</p>
      <p>
        A comprehensive campaign of experiments done with QUEPA has shown
that our approach is feasible, e ective, and, unlike other approaches, scales nicely
as the polystore grows in the number of stores and size of databases [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>P.</given-names>
            <surname>Atzeni</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Bugiotti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Cabibbo</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Torlone</surname>
          </string-name>
          .
          <article-title>Data modeling in the NoSQL world</article-title>
          .
          <source>Computer Standards and Interfaces</source>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>M.</given-names>
            <surname>Buoncristiano</surname>
          </string-name>
          et al.
          <article-title>Database challenges for exploratory computing</article-title>
          .
          <source>SIGMOD Record</source>
          ,
          <volume>44</volume>
          (
          <issue>2</issue>
          ):
          <volume>17</volume>
          {
          <fpage>22</fpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>J.</given-names>
            <surname>Duggan</surname>
          </string-name>
          et al.
          <article-title>The BigDAWG polystore system</article-title>
          .
          <source>SIGMOD Record</source>
          ,
          <volume>44</volume>
          (
          <issue>2</issue>
          ):
          <volume>11</volume>
          {
          <fpage>16</fpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>L. M.</given-names>
            <surname>Haas</surname>
          </string-name>
          .
          <article-title>The power behind the throne: Information integration in the age of data-driven discovery</article-title>
          .
          <source>In SIGMOD, page 661</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>A.</given-names>
            <surname>Maccioni</surname>
          </string-name>
          , E. Basili, and
          <string-name>
            <given-names>R.</given-names>
            <surname>Torlone</surname>
          </string-name>
          . QUEPA:
          <article-title>QUerying and exploring a polystore by augmentation</article-title>
          .
          <source>In SIGMOD</source>
          , pages
          <volume>2133</volume>
          {
          <fpage>2136</fpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>A.</given-names>
            <surname>Maccioni</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Torlone</surname>
          </string-name>
          .
          <article-title>Augmented access for querying and exploring a polystore</article-title>
          .
          <source>In ICDE</source>
          , pages
          <volume>77</volume>
          {
          <fpage>88</fpage>
          ,
          <year>2018</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>D.</given-names>
            <surname>Martinenghi</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Torlone</surname>
          </string-name>
          .
          <article-title>Taxonomy-based relaxation of query answering in relational databases</article-title>
          .
          <source>VLDB J</source>
          .,
          <volume>23</volume>
          (
          <issue>5</issue>
          ):
          <volume>747</volume>
          {
          <fpage>769</fpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>I. P.</given-names>
            <surname>Fellegi</surname>
          </string-name>
          and
          <string-name>
            <given-names>A. B.</given-names>
            <surname>Sunter</surname>
          </string-name>
          .
          <article-title>A theory for record linkage</article-title>
          .
          <source>Journal of the American Statistical Association</source>
          ,
          <volume>64</volume>
          :
          <fpage>1183</fpage>
          {
          <fpage>1210</fpage>
          , 12
          <year>1969</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>P. J.</given-names>
            <surname>Sadalage</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Fowler. NoSQL Distilled</surname>
          </string-name>
          :
          <article-title>A Brief Guide to the Emerging World of Polyglot Persistence</article-title>
          .
          <string-name>
            <surname>Addison-Wesley</surname>
            <given-names>Professional</given-names>
          </string-name>
          ,
          <source>1st edition</source>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>A. P.</given-names>
            <surname>Sheth</surname>
          </string-name>
          and
          <string-name>
            <given-names>J. A.</given-names>
            <surname>Larson</surname>
          </string-name>
          .
          <article-title>Federated database systems for managing distributed, heterogeneous, and autonomous databases</article-title>
          .
          <source>ACM Computing Surveys</source>
          ,
          <volume>22</volume>
          (
          <issue>3</issue>
          ):
          <volume>183</volume>
          {
          <fpage>236</fpage>
          ,
          <string-name>
            <surname>Sep</surname>
          </string-name>
          <year>1990</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11. G. Simonini,
          <string-name>
            <given-names>S.</given-names>
            <surname>Bergamaschi</surname>
          </string-name>
          , and
          <string-name>
            <given-names>H. V.</given-names>
            <surname>Jagadish</surname>
          </string-name>
          .
          <article-title>BLAST: a loosely schema-aware meta-blocking approach for entity resolution</article-title>
          .
          <source>PVLDB</source>
          ,
          <volume>9</volume>
          (
          <issue>12</issue>
          ):
          <volume>1173</volume>
          {
          <fpage>1184</fpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>M.</given-names>
            <surname>Stonebraker</surname>
          </string-name>
          .
          <article-title>The case for polystores</article-title>
          .
          <source>ACM SIGMOD Blog</source>
          . http://wp.sigmod. org/?p=
          <fpage>1629</fpage>
          ,
          <string-name>
            <surname>July</surname>
          </string-name>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>