<!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>Position Paper: Scaling-out the NCBO Resource Index Processing and Maintenance</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Tomasz Wiktor Wlodarczyk</string-name>
          <email>tomasz.w.wlodarczyk@uis.no</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Paea LePendu</string-name>
          <email>plependu@stanford.edu</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Nigam Shah</string-name>
          <email>nigam@stanford.edu</email>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Chunming Rong</string-name>
          <email>chunming.rong@uis.no</email>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Stanford University</institution>
          ,
          <country country="US">USA</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>University of Stavanger</institution>
          ,
          <addr-line>4036, Stavanger</addr-line>
          ,
          <country country="NO">Norway</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>In this paper we present main challenges related to scaling-out the NCBO Resource Index further. We look into several recent developments that can relate to those challenges. Finally, we propose a solution that we plan to implement together with a description of an intended evaluation.</p>
      </abstract>
      <kwd-group>
        <kwd>ontology-based annotation</kwd>
        <kwd>semantic expansion</kwd>
        <kwd>data-intensive processing</kwd>
        <kwd>scalability</kwd>
        <kwd>search</kwd>
        <kwd>MapReduce</kwd>
        <kwd>Hadoop</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1 Introduction</title>
      <p>
        The NCBO Resource Index is a system for ontology based annotation and indexing of
biomedical data. The key functionality of this system is to enable users to locate
biomedical data resources related to particular concepts. That functionality is based
on semantically-enhanced search1. The Resource Index currently includes 22 different
data resources comprising over 3.5 million data elements resulting in 16.4 billion
annotations stored in a 1.5 terabyte MySQL database. The semantic expansion
consumes considerable amount of resources in terms of storage and processing power.
Based on research in density and evolution metrics it became possible to significantly
reduce processing requirements so the Resource Index can be computed in an
acceptable time on a single machine [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. However, when scaling from 22 resources to
100 (or more) some form of distributed processing becomes a necessity. Currently,
the amount of indexed resources reaches storage and processing limits of a single
machine. Of course, more a powerful machine could be used; however, that does not
seem to be a sustainable approach in a longer term.
      </p>
      <p>
        In recent years data-intensive, non-relational processing has seen significant
development starting with Google’s MapReduce paper [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] and continuing with
      </p>
      <sec id="sec-1-1">
        <title>1 http://www.bioontology.org/resources-index</title>
        <p>development of Hadoop2 and related technologies. It seems natural to investigate
those technologies in the context of our problem.</p>
        <p>In Section 2 of this paper we name particular challenges that we face while scaling
the NCBO Resource Index processing and maintenance. We analyze related work to
search for possible approaches to those challenges in Section 3. Finally, in Section 4,
we propose architecture of a solution that we plan to implement and evaluate. We
conclude the main points in Section 5.</p>
        <sec id="sec-1-1-1">
          <title>2 Challenges</title>
          <p>
            Storing source data. The data that are indexed can be divided in two major types.
The first type is raw data harvested directly from each resource before any processing
is done. The second type is data after concept recognition that includes term
expansion based on semantics. Storing and maintaining the semantically expanded
data is what causes the system to exceed 1.5 terabytes at the moment. As the number
and kinds of resources grows, we expect to see a more than 10-fold increase in the
storage space requirement, far exceeding the capabilities of typical systems. For
example, to include the entire PubMed resource (20M articles) in the Resource Index,
it was projected to consume nearly 20TB of disk space. Protection against data lost
due to mechanical or program failure will add additional complexity–keeping up to
three replicas of the data. Fig 1 (A) illustrates the expected increase in data storage
requirements. These estimations do not include possible compression.
Processing source data into the Resource Index. There are three main processing
steps required to perform the semantic expansion. The first step is concept
recognition, which can be classified as embarrassingly parallel—it can easily be
divided among processing nodes. The second step is term expansion based on
semantics, where the most computationally expensive process relies mostly on join
operations. During that stage, information on ontological distance between concepts is
also utilized. For every recognized term, approximately 14 additional terms are also
associated. Finally, an inverted index is applied on the entire set of associated terms
for efficient search. Unlike concept recognition, the expansion step, i.e. join
operations, is not easy to parallelize; however, based on the earlier metrics [
            <xref ref-type="bibr" rid="ref1">1</xref>
            ], we
believe it is possible to achieve. The main method in earlier metrics was to shard the
data by resource, with around 10 tables per each resource, which may need to be
reevaluated.
          </p>
          <p>In general, processing time is expected to increase linearly with the amount of data.
The linear increase is in itself not a problem. However, the expected increase in data
amount is significant. Processing capabilities of a single machine are already limiting
frequency of Resource Index update process and that will of course deteriorate even
further with more resources. Therefore, it becomes clear that some form of
dataintensive distributed processing is necessary.</p>
        </sec>
      </sec>
      <sec id="sec-1-2">
        <title>2 http://hadoop.apache.org/</title>
        <p>Maintaining the Resource Index. The Resource Index that is used for search
purposes is a product of several complex processes. However, that does not provide a
full picture of complexity of updating Resource Index. At the same time, Resource
Index has to be available for search and it would be beneficial to introduce the update
as soon as possible. We need special architecture that will allow for concurrency of
updates and searches. That will allow for continuous updates to Resource Index
without taking the search offline. Moreover, such architecture should support many
concurrent requests without noticeable decrease in performance.</p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>3 Related Work</title>
      <p>In this section we present related work that has the potential to help with the
aforementioned challenges. The biggest focus is not on scientific publications, but on
several open-source projects that could be directly or indirectly applied to our
scenario. However, some scientific publications are also mentioned where relevant.</p>
      <p>We focus on solutions in so called NOSQL or non-relational domain. An
alternative could be a distributed relational database. It would require fewer changes
in the current architecture. However, less structured nature of the non-relational
solution fits our data better. It also seems that non-relational approach should offer
greater flexibility in future.</p>
      <p>Our approach in this work focuses on materialization of semantic expansion. That
is, data is expanded on disk and queries are directly performed on the data. Query
should be understood here as a search query, not as a SQL nor as a SPARQL query.
The alternative approach would be to expand the query and perform it on
nonexpanded data. It would save disk space, but might negatively impact the performance
at run time as some query expansions might have significant size. The
queryexpansion approach is the topic of separate research work.</p>
      <p>
        Storing source data. One of the prominent developments in storage is the Hadoop
Distributed File System (HDFS)3 designed based on Google File System [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. It is a
file system that abstracts data distribution across cluster nodes. At the same time it
provides transparent and automatic data redundancy. It provides strong scalability and
also allows storing unstructured data. Another development is HBase4, which is based
on the HDFS designed based on Google BigTable [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. HBase is in fact an ordered
multidimensional map. Moreover, the final level of the map is always a timestamp
that can be later utilized while reading the data to represent state of data at a particular
time in past. Both HDFS and HBase directly support Hadoop MapReduce5, which we
describe in the next subsection.
      </p>
      <p>HyperTable6 is scalable database also based on BigTable. It can run on top of
HDFS and several other file systems. It offers relatively more limited integration with
3 http://hadoop.apache.org/hdfs/
4 http://hbase.apache.org/
5 http://hadoop.apache.org/mapreduce/
6 http://www.hypertable.org/
other Hadoop subprojects than HBase. Cassandra7 is a more recent development also
inspired by BigTable; however, to a lesser extent. It provides limited support in terms
of further data processing.</p>
      <p>
        Processing source data into the Resource Index. Processing mechanisms are
generally connected to a particular storage system. HDFS and HBase offer probably
the biggest variety of choices. First and foremost, they support Hadoop MapReduce
which is a generic processing framework based on Google MapReduce [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Data
processing is performed through java functions. Several different query languages
have appeared that base on top of MapReduce. To name a few: Hive8 is a SQL-like
query language, Pig9 is script-like data processing language and Cascalog10 is
dataloginspired query language. While Hive and Pig are custom languages Cascalog queries
are first-class in Clojure (Lisp dialect that works in Java Virtual Machine).
      </p>
      <p>HyperTable has its own HyperTable Query Language with a SQL-like syntax.
Casandra does not offer support of any query language at the moment.
Maintaining the Resource Index. Maintaining the Resource Index includes two
main tasks: updating and making it available for rapid search. In the best scenario
both tasks should work in parallel. Cassandra and Voldemort11 can both be considered
here as they focus on fast data serving in contrast with bulk processing in, for
example, HBase. They can also handle parallel read and writes well. However, they
do not offer any dedicated mechanism for handling the connection with the bulk
processing backend. Though, it can be constructed. The most recent project that
emerged is ElephantDB12. It consists of two integrated components where one is
dedicated to creating the Resource Index and the other to serving it.
7 http://wiki.apache.org/cassandra/
8 http://hive.apache.org/
9 http://pig.apache.org/
10 https://github.com/nathanmarz/cascalog
11 http://sna-projects.com/voldemort/
12 https://github.com/nathanmarz/elephantdb
It this section we outline a solution we intend to implement and a related evaluation
plan. In Fig. 1 (B) we present a sketch of the architecture to be implemented. The
main processing will be evaluated on a 10 node cluster, and the query processing part
will be implemented on a smaller cluster.</p>
      <p>Based on the available solutions we plan to implement data storage both directly in
HDFS and in HBase. We will evaluate relative performance differences. In particular,
potential benefits of standard and custom HBase index (not to be confused with the
Resource Index) and its multidimensional structure. The multidimensional structure
of HBase will be also investigated as a way to reduce storage requirements for
semantic expansion. In later phases, we will investigate possible applications of time
stamping in HBase for analyzing the Resource Index evolution with time. The subject
of evaluation will be mostly performance (processing and storage); however,
additional elements like ease of maintenance or support for processing approaches
will be also assessed. Independently of other tests, compression will be applied to data
to examine its impact on both storage requirements and processing time.</p>
      <p>The processing stage will be initially implemented in Pig. In later phases, we will
compare it with pure MapReduce jobs to potentially leverage a custom HBase index.
Finally, we plan to implement the Resource Index maintenance using ElephantDB. To
our knowledge this would be first independent evaluation of that system.</p>
      <sec id="sec-2-1">
        <title>5 Conclusions</title>
        <p>In this paper we presented challenges related with scaling-out the NCBO Resource
Index. A parallel could be found between our challenges and recent developments in
data-intensive processing. By looking into those developments we proposed a solution
that we plan to implement and evaluate. This should allow scaling-out the NCBO
Resource Index to cover all the required resources. In addition, the evaluation will fill
gaps in knowledge about relative (processing and storage) performance of the
aforementioned technologies.</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1. P. LePendu,
          <string-name>
            <given-names>N. F.</given-names>
            <surname>Noy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Jonquet</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Alexander</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N. H.</given-names>
            <surname>Shah</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. A.</given-names>
            <surname>Musen</surname>
          </string-name>
          , Optimize First, Buy Later:
          <article-title>Analyzing Metrics to Ramp-up Very Large Knowledge Bases</article-title>
          ,
          <source>9th International Conference on Semantic Web (ISWC</source>
          <year>2010</year>
          ), Shanghai, China, Springer,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>J.</given-names>
            <surname>Dean</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Ghemawat</surname>
          </string-name>
          ,
          <source>MapReduce: Simplified Data Processing on Large Clusters, OSDI'04</source>
          , San Francisco, CA,
          <year>December</year>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>S.</given-names>
            <surname>Ghemawat</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Gobioff</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Leung</surname>
          </string-name>
          ,
          <source>The Google File System, 19th ACM Symposium on Operating Systems Principles</source>
          , Lake George, NY, October,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>F.</given-names>
            <surname>Chang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Dean</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Ghemawat</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W. C.</given-names>
            <surname>Hsieh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. A.</given-names>
            <surname>Wallach</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Burrows</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Chandra</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Fikes</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R. E.</given-names>
            <surname>Gruber</surname>
          </string-name>
          ,
          <article-title>Bigtable: A Distributed Storage System for Structured Data</article-title>
          ,
          <source>OSDI'06</source>
          , Seattle, WA, November,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>