<!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>Challenges of Index Recommendation for Databases</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>General Terms</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Parinaz Ameri Karlsruhe Institute of Technology (KIT) Hermann-von-Helmholtz-Platz 1</institution>
          ,
          <addr-line>Bldg. 449 76344 Eggenstein-Leopoldshafen</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2016</year>
      </pub-date>
      <fpage>10</fpage>
      <lpage>14</lpage>
      <abstract>
        <p>One important aspect of physical database design is the selection of a proper set of indexes for a workload. Creation of indexes in a database system is subject to storage constraints. It is also affected by the ratio of update operations in the workload. Therefore, the cost and benefit of each set of indexes should be evaluated by a proper optimization method. The large number of index sets that must be assessed and the iterative nature of such optimization methods impose an additional load on the database system. Therefore, an efficient algorithm is needed to develop a practical framework for automating index recommendation. Furthermore, due to the fundamental differences between data models and query languages of NoSQL databases to each other and the relational databases, evaluation of such index recommendation system for NoSQL databases faces many challenges. This paper reviews the challenges and my proposed solutions for developing a self-tuning index recommendation system, especially for a document-based NoSQL database instance. Index Recommendation</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. INTRODUCTION</title>
      <p>The performance of a database is dependent on its
physical design. A crucial part of the physical design is the
selection of the proper set of indexes concerning a particular
workload. Given the large size of conventional in-production
databases and the heavy workload of queries on them,
automating the process of choosing proper indexes for them is
necessary.</p>
      <p>The index recommendation problem is defined as the course
of determining a subset of indexes so that the benefit of
creating them for a particular workload is maximized
concerning the storage capacity.</p>
      <p>Each database normally has a query optimizer that
executes the cost of running a query with different scenarios
based on available indexes in the database. Each query
optimizer itself has a cost function to evaluate different
scenarios. The recent trend in developing index
recommendation solution is to benefit from this cost function. This
approach eliminates the risk of developing an entirely
separated cost function for the index recommendation system
that would recommend indexes which might not even be
considered by the optimizer. The estimated cost by the
optimizer can directly be used in benefit function of the
optimization method.</p>
      <p>On the other hand, utilizing the estimated cost of the
query optimizer requires provoking it by the index
recommendation system for all of the candidate indexes. A large
number of calls to the optimizer can affect the performance
of the database itself in response to its applications.
Therefore, a good framework design is needed to avoid putting lots
of overhead on the in-production database and having
better performance for the index recommendation system. To
prevent this problem, we introduce a virtual environment
consisting of a sample of the targeted database. The
candidate indexes can be estimated in this environment rather
than in the in-production system itself.</p>
      <p>The number of candidate indexes can grow drastically in
proportion to the size of the database. Consecutively, a
method is needed to eliminate candidate indexes considered
by the recommendation system without removing the most
relevant indexes. Our proposed solution is discussed more
in Section 3.</p>
      <p>Furthermore, the performance of the index
recommendation system needs to be tested by a series of workloads.
This evaluation on NoSQL databases runs to a lack of
welldefined benchmarks. The reason is the various data model
of NoSQL databases and the vast variety of their query
languages. These differences result in the ineffectiveness of
well-known benchmarking models of traditional relational
database models for NoSQL databases. This issue and our
developed solution for this challenge is discussed more in
Section 5.</p>
      <p>The rest of this paper is organized as following: some
related work are surveyed in Section 2. In Section 3, some of
the practical challenges in developing a framework for a
selftuning index recommendation system are explained.
Additionally, some of our solutions for these difficulties and the
proposed architecture for such a framework are presented.
The Section 4 provides a mathematical definition of index
recommendation problem followed by a discussion about
possible optimization methods to solve the problem. The
Section 5 provides a brief discussion on difficulties of
evaluating such database related systems for NoSQL databases
and a solution that we developed for this problem. At the
end, Section 6 concludes the work.</p>
    </sec>
    <sec id="sec-2">
      <title>RELATED WORK</title>
      <p>
        There are several optimization methods to solve this issue.
Some recent approaches [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] neglect storage limitations and
instead calculate a lower bound for the cost of a workload
based on each query’s individual optimal index. Despite
being advantageous, the derived bounds are not pragmatic
in a context of the real storage limitations.
      </p>
      <p>
        In the literature, many different optimization methods are
used to find the optimal solution for this problem such as
Knapsack problem usage [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ], genetic algorithm [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] or even
linear programming optimization techniques [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] and
branchand-bound [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. However, this problem is often solved by
using a greedy algorithm [
        <xref ref-type="bibr" rid="ref2 ref6 ref9">6, 9, 2</xref>
        ]. In order to estimate better
how close we get to the optimal solution, other solutions such
as Integer Linear Program (ILP) can be used [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ].
      </p>
      <p>Instead, we propose using ILP, because it not only enables
us to explore more cases than for example the mostly used
greedy algorithm, but it also allows us to evaluate the
quality of the optimal solution. Also, by applying Linear
Programming relaxation, we can have useful information about
approximate solutions that had optimal performance, but
due to lack of storage space are not chosen.</p>
    </sec>
    <sec id="sec-3">
      <title>FRAMEWORK DESIGN AND ITS CHAL</title>
    </sec>
    <sec id="sec-4">
      <title>LENGES</title>
      <p>The practical challenges of developing a framework for
recommending indexes and our solutions are presented in
this section.</p>
      <p>We refer to the set of indexes chosen for cost evaluation
as candidate indexes. The first challenge in designing a good
framework for recommending indexes is limiting the search
space for candidate indexes.</p>
      <p>
        On modern databases, there are not only traditional
ascending and descending index types, but also many new
index types, e.g. spatial, text indexes, etc. Consider there
are s types of indexes in a database with n attributes in a
collection. The following equation gives number of possible
single and multi-attribute indexes on that collection:
Xn (sk)n!
k=1 (n − k)!
where k is number of fields and k ≤ n [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. On a collection
of only five attributes and the possibility to create four types
of indexes, the number of possible indexes exceeds 150,000.
      </p>
      <p>
        Therefore, it is important to limit the search space for
candidate indexes to the most relevant ones. As presented
in [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], we consider the most relevant indexes as the ones
derived from attributes of the most frequent queries in the
workload. Accordingly, the search space reduces from all the
possible combinations of the whole attributes in the data set
(1)
to the single and repeatedly present combinations of the
frequent queries in the workload. The Frequent Itemset [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] as a
data mining algorithm is used to build single and compound
indexes related to the most frequent queries of the workload.
      </p>
      <p>
        However, as described in [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], the frequency of queries
should not be the only determining factor for defining
candidate index proposal. For example, consider a query that
user wishes to issue frequently, but the response time of it
on a large database takes very long time. Due to the long
response time, its frequency might fall below the configured
threshold of the frequent itemset. To avoid missing such
important queries for candidate index evaluation, a proper
combinatorial algorithm is needed to combine the frequency
and length of a query as two determining factors for
generating candidate indexes.
      </p>
      <p>Extracting attributes from the most frequent queries and
setting order for them in a compound index should be done
automatically. This is the responsibility of Syntax Analyzer
in Figure 1. This component is crucial for analyzing queries
and also for scalability of the system to work with large
workloads. The functionality of the syntax analyzer
component is directly affected by different query languages and
data models of NoSQL and relational databases.</p>
      <p>The mostly denormalized structure of NoSQL databases
allows each attribute to contain non-scalar values, e.g.
arrays and nested documents in document-based databases.
Such data models eliminate usage of join operations while
querying the data. Consecutively, most NoSQL databases
developed their query language (normally an object-oriented
one) instead of using SQL queries.</p>
      <p>
        The query for different data models influences the access
path to the data. Successively, the query optimizer plans are
affected. Therefore, while developing the syntax analyzer to
gather the attributes and order them after each other, the
order that the query optimizer of each database arrange its
data should be taken into account. We considered
developing the syntax analyzer for the particular case of MongoDB
based on the rules explained in [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
      </p>
      <p>The input of this component is the workload of the database
that is logged in the Profiles. Its output is an ordered set of
attributes and their corresponding index type that is passed
to the Miner. Then, the Miner component generates a set
of most frequent single and compound attributes and sends
it to the Config Evaluator.</p>
      <p>The new tendency in developing index recommendation
systems is to use the query optimizer of the database itself
to estimate the costs of running a query with a configuration
of indexes. This approach eliminates the effort to develop
an additional cost function for index recommendation. Also,
utilizing the query optimizer of the database itself as
opposed to an external cost function prevents recommending
indexes that in reality are not considered by the database to
execute a query.</p>
      <p>
        In our proposed and examined approach in [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], all of the
candidate indexes are created on a sample set of the targeted
data set. Then the chosen indexes by the query optimizer are
returned as the recommended set of indexes. However, this
approach relies entirely on the cost function of the database.
The estimation of the distance of the recommended indexes
to the optimal set of indexes is not possible.
      </p>
      <p>Therefore, developing an ILP optimization method
(discussed in Section 4) enables us to compare the performance
of these techniques with each other and also evaluate the
recommended set of indexes. To avoid being separated from
the database query optimizer and its internal evaluations
while using our defined cost function, the cost of running
queries in formula (2) are taken from the query optimizer.</p>
      <p>For this purpose, the cost of running the query with or
without each of candidate indexes should be inquired from
the optimizer. Accordingly, the Config Evaluator in our
design in Figure 1 creates all of the candidate indexes on
a sample set of targeted collection and inquiries the cost
of running each query in the workload with and without
indexes. The obtained information from the optimizer along
with the required storage space estimation for each index are
passed to the ILP optimizer. This component - which can be
replaced with any other optimization method - is responsible
for recommending the optimal set of indexes to the Creator
component to create them on the In-Production Database.</p>
      <p>This approach brings us to the second major challenge
in developing index recommendation framework: number of
calls to the query optimizer. Each call to the optimizer
for estimating the cost of a query applies an overhead on
the system. For a large number of the candidate indexes,
the process can interfere with the work of the in-production
system. Moreover, creating all of the candidate indexes on a
large in-production system takes lots of resources and effects
the performance of the system negatively.</p>
      <p>Thus, our index recommendation system contains a
Sample System that all of its characteristics are the same as
the original database system only smaller. Sand-boxing the
data set in the sample system enables us with obtaining the
query costs from the optimizer for a larger number of
candidate indexes. This cost estimation and also estimating the
required storage space can be done without disturbing the
performance of the in-production system.</p>
      <p>However, utilizing a sample of the data set imposes some
challenges itself that require careful research. One problem
is that the ratio of presence of each attribute in the original
data set to its appearance in the sample changes with each
write operation (i.e. insert, update and delete) to the
system. The challenge is to keep the sample representative of
the current state of the database over time.</p>
      <p>Therefore, an appropriate interval for updating the
sample set should be chosen. Since determining the sample set
requires reading the entire data set and it implies an
overhead on the database, the interval should not be too short.
The optimization of selecting the appropriate interval for
sampling should be done with consideration of the ratio of
read to write operations to the database, the size of the data
set and the overhead on the in-production system.</p>
      <p>Evidently an evaluation of the performance of such index
recommendation system is required. The assessment of this
system for a NoSQL database in comparison to the
similar systems for traditional relational databases is subject to
many difficulties that are discussed in Section 5.
4.</p>
    </sec>
    <sec id="sec-5">
      <title>FORMULATION OF THE INDEX REC</title>
    </sec>
    <sec id="sec-6">
      <title>OMMENDATION PROBLEM</title>
      <p>In this section, a description of the mathematical form of
ISP and discussion on optimization methods to solve it are
given.</p>
      <p>The objective of index recommendation is to recommend
the optimal set of indexes for a given database and a
workload. The workload is a set of m queries as Q = {Q1, Q2, ..., Qm}.
Let I = {I1, I2, ..., In} be the set of all possible indexes.
Indexes can be single- or multi-attribute. Each index has a
corresponding size of s1 to sn.</p>
      <p>The execution cost of each query Qi is different, depending
on the indexes that are used by it. Not only a single index
but a set of indexes can be used to run one query.</p>
      <p>
        A configuration is defined as a subset of indexes that are
all used for executing some query, Ck = {Ik1, Ik2, ...}. This
is known as atomic configuration for a workload [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. There is
a set P of all the possible configurations that can be derived
from indexes in I and potentially be used by some query, as
P = {C1, C2, ...Cp}. Accordingly, each configuration Ck ∈
P is associated with some subset of Iτ ⊂ I. A configuration
is known as active if all of its indexes are built.
      </p>
      <p>Our objective is to find the optimal configuration which
its indexes have the maximum benefit for a specific workload
under the storage constraints of the system. Each query Qi
has a corresponding cost of running with usage of
configuration Ck which we call as cost(i, Ck). Likewise, the cost
of running query i without any index is cost(i, ∅).
Therefore, the benefit of running each query with a configuration
is defined as the following:
bik = cost(i, ∅) − cost(i, Ck)
(2)</p>
      <p>It should be considered that having indexes for update
queries enforces a maintenance cost on the system. Each
update operation consists of two parts: finding the proper
data unit and modifying it. The finding part is yet another
query whose benefit can be calculated from formula (2). The
modification part can be considered as an insert (or a delete)
that does not benefit from having indexes due to the lack
of finding statement. Moreover, each update operation
enforces maintenance of indexes that are associated with that
update operation. In general, a negative benefit −fj can
be associated with each index Ij that is related to the
total overhead of that index in association with m0 update
operations.</p>
      <p>Therefore the objective function can be defined as</p>
      <p>M p
max(X X bik · xik −
i=1 k=1
n
X fj · yj)
j=1
where M = m + m0. This objective function is subject to
the following constraints:
∀i ≤ M :
p
X xik ≤ 1
k=1
∀k : Ij ∈ Ck, ∀i ≤ M, j ≤ n :
xik ≤ yj
∀i ≤ M, j ≤ n, k ≤ p :</p>
      <p>xik, yj ∈ {0, 1}
n
X sj · yj ≤ S
j=1
(3)
(4)
(5)
(6)
(7)
(8)
(9)
To compare the performance of databases and
databaserelated systems, different sets of workloads are required to
represent various applications. Some examples of such
applications are Online Analytical Processing (OLAP)
applications with their long and aggregated read-mostly set of
queries and Online Transaction Processing (OLTP)
applications with their short update-intensive set of queries.</p>
      <p>
        Evaluation of traditional relational databases is mostly
done by using variances of the well-known Transaction
Processing Performance Council (TPC) [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] benchmarks.
However, utilizing TPC benchmarks for evaluating NoSQL
databases runs into at least two major challenges: first
mapping of the tabular data format of the relational model to
a specific NoSQL data format (e.g. documents, key-values,
graphs, etc.) and second translating SQL queries to the
commonly object-oriented query language of a NoSQL database.
      </p>
      <p>The first challenge arises from the fact that the relational
data models are highly normalized. Mapping such
normalized model to the often denormalized models of NoSQL
databases requires careful study. For example, in
documentbased databases, there is the danger that the mapped model
either overdo the usage of nested documents or not using
this capability at all. Both of these cases directly affect the
query performance, because it is highly dependent on the
data access path.</p>
      <p>In the case of overdoing usage of nested documents, the
access path to the deepest documents is long. Hence, the
database performance is negatively affected. Not using the
capability of nested documents at all enforces usage of
references in documents to the related documents. In this case,
due to the lack of join operation in most NoSQL database,
more queries should be issued to fetch the required data. It
would also affect the performance of the database in
comparison to the relational model. A proper mapping between
of these databases is hard and currently missing.</p>
      <p>
        There are however other solutions targeting the problem of
generating different workloads for various databases. One of
them is the Yahoo Cloud Serving Benchmark (YCSB) [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ].
Usage of this solution for evaluating our index
recommendation system which is developed in combination with
MongoDb [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], a document-base database had a major difficulty:
the data set and all queries are handled by the MongoDB
specific primary key, id field, which is by default indexed
in MongoDB.
      </p>
      <p>
        Another available solution for this problem is the Apache
JMeter [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. Although JMeter provides a good environment
for benchmarking, it requires the user to enter manually
the set of queries for benchmarking. This setup does not
provide an easy possibility of producing a large and diverse
set of queries that are distributed over a time interval.
      </p>
      <p>
        Therefore, in order to overcome this problem, we
provided a generic workload generator named Not only
Workload Generator (NoWog) which is available in [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. NoWog
provides many features to fulfill its main objective:
generating synthetic workloads similar to realistic workload in an
integrated layer. This layer should make NoWog
independent from the data model of the database.
      </p>
      <p>Some of these features are the possibility to generate large
workloads by defining simple rules that configure the
distribution of different query types in various time intervals,
usage of arbitrary keys for querying.</p>
      <p>Development of such flexible and generic workload
generator was absolutely necessary for enabling the evaluation
Constraint (4) ensures that at most one configuration is
used for any query. Constraint (5) represents the fact that
a configuration can not be used unless all of its indexes are
built. Constraint (7) enforce the limitation of available
storage S on the number of indexes that can be built.</p>
      <p>Constraint 6 defines the binary nature of the two
introduced decision variables xik and yj. For each pair of query
Qi and configuration Ck, xik is defined as:
xik =</p>
      <sec id="sec-6-1">
        <title>1 query Qi uses conf iguration Ck</title>
        <p>0 otherwise</p>
        <p>In the same way, the variable yj is associated with built
indexes and can be defined as:
yj =</p>
      </sec>
      <sec id="sec-6-2">
        <title>1 index Ij is built</title>
        <p>0 otherwise</p>
        <p>
          We consider using ILP methods so that we can estimate
the quality of the optimal solution in a tight bound, similar
to the approach take by [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ]. Also, usage of methods such as
branch-and-bound enables us to improve the quality of an
approximate solution that would have optimal performance,
but cannot be built and used due to storage limitation. In
general, usage of ILP can provide the same performance
as the other optimization methods while it examines much
more alternative solutions.
        </p>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>EVALUATION CHALLENGES ON NOSQL</title>
    </sec>
    <sec id="sec-8">
      <title>DATABASES</title>
      <p>In the previous section, the theory to design the fitting
objective function and our choice for the proper
optimization method were discussed. This section explains the
difficulty of evaluating such system, in particular on a
documentbased NoSQL database.
process of our index recommendation system.</p>
    </sec>
    <sec id="sec-9">
      <title>CONCLUSION AND FUTURE WORK</title>
      <p>In this paper, first, we reviewed many challenges in
developing a framework for index recommendation system. Some
of the major challenges are providing a solution for
reducing the search space for candidate indexes and also reducing
the number of calls to the query optimizer for obtaining the
costs of running a query with different indexes. Our
solution for the former is to only consider the evaluation of the
most relevant query attributes (most frequent and longest
queries). We solved the latter with introducing a virtual
environment containing a sample of the targeted data set.</p>
      <p>Then, a mathematical definition of index recommendation
is presented and some of the possible optimization methods
to solve the problem are discussed. At the end, the
challenges of evaluating such system for NoSQL database are
briefly discussed. The NoWog is introduced as a solution
for generating synthetic workloads with different
distributions over time.</p>
      <p>Investigating similarity of new queries to the previous one
in order to estimate the cost of recommending and creating
new indexes in contrast to using the already existing ones is
part of future plans to expand this work.</p>
    </sec>
    <sec id="sec-10">
      <title>ACKNOWLEDGMENTS</title>
      <p>
        The author like to thank Large-Scale Data Management
and Analysis project [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] by the German Helmholtz
Association for funding this research.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>R.</given-names>
            <surname>Agrawal</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Srikant</surname>
          </string-name>
          .
          <article-title>Fast algorithms for mining association rules in large databases</article-title>
          .
          <source>In Proceedings of the 20th International Conference on Very Large Data Bases, VLDB '94</source>
          , pages
          <fpage>487</fpage>
          -
          <lpage>499</lpage>
          , San Francisco, CA, USA,
          <year>1994</year>
          . Morgan Kaufmann Publishers Inc. http: //dl.acm.org/citation.cfm?id=
          <volume>645920</volume>
          .
          <fpage>672836</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>S.</given-names>
            <surname>Agrawal</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Chaudhuri</surname>
          </string-name>
          , and
          <string-name>
            <given-names>V. R.</given-names>
            <surname>Narasayya</surname>
          </string-name>
          .
          <article-title>Automated selection of materialized views and indexes in sql databases</article-title>
          .
          <source>In Proceedings of the 26th International Conference on Very Large Data Bases, VLDB '00</source>
          , pages
          <fpage>496</fpage>
          -
          <lpage>505</lpage>
          , San Francisco, CA, USA,
          <year>2000</year>
          . Morgan Kaufmann Publishers Inc.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>P.</given-names>
            <surname>Ameri</surname>
          </string-name>
          .
          <article-title>On a self-tuning index recommendation approach for databases. Manuscript is accepted to be published by the IEEE</article-title>
          <source>International Conference on Data Engineering (ICDE) PhD Symposium</source>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>P.</given-names>
            <surname>Ameri</surname>
          </string-name>
          and
          <string-name>
            <given-names>H.</given-names>
            <surname>Guan</surname>
          </string-name>
          . Nowog. https://github.com/ParinazAmeri/NoWog accessed 22-April-
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>P.</given-names>
            <surname>Ameri</surname>
          </string-name>
          , J. Meyer, and
          <string-name>
            <given-names>A.</given-names>
            <surname>Streit</surname>
          </string-name>
          .
          <article-title>On a new approach to the index selection problem using mining algorithms</article-title>
          .
          <source>In Big Data (Big Data)</source>
          ,
          <source>2015 IEEE International Conference on</source>
          , pages
          <fpage>2801</fpage>
          -
          <lpage>2810</lpage>
          ,
          <year>Oct 2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>K.</given-names>
            <surname>Aouiche</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.</given-names>
            <surname>Darmont</surname>
          </string-name>
          .
          <article-title>Data mining-based materialized view and index selection in data warehouses</article-title>
          .
          <source>CoRR, abs/0707.1548</source>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>N.</given-names>
            <surname>Bruno</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Chaudhuri</surname>
          </string-name>
          .
          <article-title>Automatic physical database tuning: A relaxation-based approach</article-title>
          .
          <source>In Proceedings of the 2005 ACM SIGMOD International Conference on Management of Data, SIGMOD '05</source>
          , pages
          <fpage>227</fpage>
          -
          <lpage>238</lpage>
          , New York, NY, USA,
          <year>2005</year>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>A.</given-names>
            <surname>Caprara</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Fischetti</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Maio</surname>
          </string-name>
          .
          <article-title>Exact and approximate algorithms for the index selection problem in physical database design</article-title>
          .
          <source>IEEE Trans. on Knowl. and Data Eng</source>
          .,
          <volume>7</volume>
          (
          <issue>6</issue>
          ):
          <fpage>955</fpage>
          -
          <lpage>967</lpage>
          , Dec.
          <year>1995</year>
          . http://dx.doi.org/10.1109/69.476501.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>S.</given-names>
            <surname>Chaudhuri</surname>
          </string-name>
          and
          <string-name>
            <given-names>V.</given-names>
            <surname>Narasayya</surname>
          </string-name>
          .
          <article-title>An Efficient, Cost-Driven Index Selection Tool for Microsoft SQL Server</article-title>
          .
          <source>In VLDB. Very Large Data Bases Endowment Inc</source>
          .,
          <year>August 1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>JMeter</surname>
          </string-name>
          . Apache jmeter. http://jmeter.apache.org/ accessed 22-April-
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>C.</given-names>
            <surname>Jung</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gasthuber</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Giesler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Hardt</surname>
          </string-name>
          , J. Meyer,
          <string-name>
            <given-names>F.</given-names>
            <surname>Rigoll</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Schwarz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Stotzka</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Streit</surname>
          </string-name>
          .
          <article-title>Optimization of data life cycles</article-title>
          .
          <source>Journal of Physics: Conference Series</source>
          ,
          <volume>513</volume>
          (
          <issue>3</issue>
          ):
          <fpage>032047</fpage>
          ,
          <year>2014</year>
          . http: //stacks.iop.org/1742-6596/513/i=3/a=
          <fpage>032047</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>J.</given-names>
            <surname>Kratica</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Ljubic</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Tosic</surname>
          </string-name>
          .
          <article-title>A genetic algorithm for the index selection problem</article-title>
          .
          <source>Technical report, In Applications of Evolutionary Computing</source>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>MongoDB</surname>
          </string-name>
          .
          <article-title>Mongodb for giant ideas</article-title>
          . https://www.mongodb.com/ accessed 22-April-
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>S.</given-names>
            <surname>Papadomanolakis</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Ailamaki</surname>
          </string-name>
          .
          <article-title>An integer linear programming approach to database design</article-title>
          .
          <source>In In ICDE Workshop on Self-Managing Databases</source>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>tpc</surname>
          </string-name>
          ,
          <year>2016</year>
          . http://www.tpc.org/information/benchmarks.asp accessed 22-April-
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>G.</given-names>
            <surname>Valentin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Zuliani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. C.</given-names>
            <surname>Zilio</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G. M.</given-names>
            <surname>Lohman</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <surname>A. Skelley.</surname>
          </string-name>
          <article-title>Db2 advisor: An optimizer smart enough to recommend its own indexes</article-title>
          .
          <source>In Proceedings of the 16th International Conference on Data Engineering</source>
          , ICDE '
          <volume>00</volume>
          , pages
          <fpage>101</fpage>
          -, Washington, DC, USA,
          <year>2000</year>
          . IEEE Computer Society. http: //dl.acm.org/citation.cfm?id=
          <volume>846219</volume>
          .
          <fpage>847390</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>YCSB</surname>
          </string-name>
          .
          <article-title>Home brianfrankcooper/ycsb wiki github</article-title>
          . https://github.com/brianfrankcooper/YCSB/wiki accessed 22-April-
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>D. C.</given-names>
            <surname>Zilio</surname>
          </string-name>
          .
          <article-title>Physical database design decision algorithms and concurrent reorganization for parallel database systems</article-title>
          .
          <source>Technical report</source>
          ,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>