<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <meta name="description" content="">
    <meta name="author" content="">
    <link rel="icon" href="favicon.ico">

    <title>About Apache AsterixDB</title>

    <!-- Bootstrap core CSS -->
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <!-- Bootstrap theme -->

    <!-- Custom styles for this template -->
    <link href="css/theme.css" rel="stylesheet">

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
    <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
  </head>

  <div class="container theme-showcase" role="main">
          <div class="masthead">
        <p class="lead">
           <a href="index.html">
             <img src="img/asterixdb_tm.png" style="height:75px; width:auto; vertical-align:bottom; margin-top:10px;"/>
           </a>
        </p>
      </div>

      <nav class="navbar navbar-default">
        <div class="container">
          <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
              <span class="sr-only">Toggle navigation</span>
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>
              <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="index.html">Overview</a>
          </div>
          <div class="navbar-collapse collapse">
            <ul class="nav navbar-nav">
              <li><a href="download.html">Download</a></li>
              <li class="dropdown">
                <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Documentation<span class="caret"></span></a>
                <ul class="dropdown-menu" role="menu">
                  <li class="dropdown-header">Stable release</li>
                  <li><a href="docs/0.8.8-incubating/index.html">Documentation for 0.8.8-incubating<i class="fa fa-external-link fa-sm"></i></a></li>
                  <li class="divider"></li>
                  <li class="dropdown-header">Snapshot release</li>
                  <li><a href="https://ci.apache.org/projects/asterixdb/index.html">Documentation for 0.8.9-SNAPSHOT  <i class="fa fa-external-link fa-sm"></i></a></li>
                </ul>
              </li>
              <li><a href="about.html">About</a></li>
              <li class="dropdown">
                <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Community<span class="caret"></span></a>
                <ul class="dropdown-menu" role="menu">
                  <li><a href="community.html">Mailing Lists</a></li>
                  <li><a href="community.html#irc">IRC</a></li>
                  <li><a href="community.html#asterixdb-team">Team</a></li>
                  <li><a href="https://issues.apache.org/jira/browse/ASTERIXDB">Issue Tracker</a></li>
                </ul>
              </li>
              <li class="dropdown">
                <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Contributing <span class="caret"></span></a>
                <ul class="dropdown-menu" role="menu">
                  <li class="dropdown-header">For New Contributors</li>
                  <li><a href="dev-setup.html">Development Setup</a></li>
                  <li class="divider"></li>
                  <li class="dropdown-header">For Committers</li>
                  <li><a href="pushing.html">Pushing changes</a></li>
                  <li><a href="site.html">Editing this site</a></li>
                </ul>
              </li>
            </ul>
            <ul class="nav navbar-nav navbar-right">
              <li class="dropdown">
                <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"
                   style="padding-right: 30px">
                  <img src="img/feather.png" style="height:20px"/>Apache Software Foundation<span class="caret"/>
                </a>
                <ul class="dropdown-menu dropdown-menu-right" role="menu">
                  <li><a href="http://www.apache.org/"><b>ASF Homepage</b></a></li>
                  <li><a href="http://www.apache.org/licenses/">License</a></li>
                  <li><a href="http://www.apache.org/foundation/sponsorship.html">Donate</a></li>
                  <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
                  <li><a href="http://www.apache.org/security/">Security</a></li>
                </ul>
              </li>
            </ul>
          </div><!--/.nav-collapse -->
        </div>
      </nav>


    <div class="row">
<div class="col-md-8 col-centered">
<h2>About Apache AsterixDB</h2>
<p>Apache AsterixDB™ (incubating) is a highly scalable data management system that can store, index, and manage
semi-structured data, e.g., much like MongoDB, but it also supports a full-power query language with the expressiveness
of SQL (and more).
Unlike analytics engines like Apache Hive or Apache Spark, it stores and manages data, so AsterixDB can exploit its
knowledge of data partitioning and the availability of indexes to avoid always scanning data set(s) to process queries.
Somewhat surprisingly, there is no open source parallel database system (relational or otherwise) available to
developers today – AsterixDB aims to fill this need.</p>

<h3 id="core-features">Core features</h3>

<ul>
  <li>A NoSQL style data model (ADM) based on extending JSON with object
database concepts.</li>
  <li>An expressive and declarative query language (AQL) for querying
semi-structured data.</li>
  <li>A runtime query execution engine, Hyracks, for partitioned-parallel
execution of query plans.</li>
  <li>Partitioned LSM-based data storage and indexing for efficient
ingestion of newly arriving data.</li>
  <li>Support for querying and indexing external data (e.g., in HDFS) as
well as data stored within AsterixDB.</li>
  <li>A rich set of primitive data types, including support for spatial,
temporal, and textual data.</li>
  <li>Indexing options that include B+ trees, R trees, and inverted
keyword index support.</li>
  <li>Basic transactional (concurrency and recovery) capabilities akin to
those of a NoSQL store.</li>
</ul>

<h3 id="history">History</h3>
<p>Prior to being developed at the Apache Software Foundation AsterixDB was co-developed by a team of faculty, staff, and
students at UC Irvine and UC Riverside. The project was initiated as a large NSF-sponsored project in 2009, the goal of
which was to combine the best ideas from the parallel database world, the then new Apache Hadoop world, and the
semi-structured (e.g., XML/JSON) data world in order to create a next-generation BDMS. A first informal open source
release was made four years later, in June of 2013, under the Apache Software License 2.0. AsterixDB was accepted into
the Apache Incubator and began Incubation as of Febuary of 2015.</p>


</div>
</div>


    <hr/>

    <footer>
      <div class="row">
        <div class="col-md-9 col-centered">
          <div class="col-md-9 text-left">
            <p>Apache AsterixDB is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored
              by the Apache Incubator.
              Incubation is required of all newly accepted projects until a further review indicates that the
              infrastructure, communications, and decision making process have stabilized in a manner consistent with
              other successful ASF projects.
              While incubation status is not necessarily a reflection of the completeness or stability of the code, it
              does indicate that the project has yet to be fully endorsed by the ASF.</p>
          </div>
          <div class="col-md-3 text-right">
            <img src="img/egg-logo.png" style="height:auto; width:200px; vertical-align:bottom;"/>
          </div>
      </div>
      </div>
      <div class="row">
        <div class="col-md-9 col-centered text-center">
          <p/>
          <p>&copy; Copyright 2016 The Apache Software foundation. All Rights Reserved. </p>
          <p>Apache AsterixDB, the Apache AsterixDB logo, Apache, and the Apache feather logo are trademarks of the
            Apache Software Foundation</p>
        </div>
      </div>
    </footer>
  </div> <!-- /container -->

    <!-- Bootstrap core JavaScript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
    <script src="js/bootstrap.min.js"></script>
  </body>
</html>
