blob: bb23194cf4f900d8970468e98c173729ab780b9a [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "">
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="author" content="" />
<META http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<META name="Description" content="Apache Gora -- About Apache Gora&trade;" />
<META name="Keywords" content="Apache Gora NoSQL Framework" />
<META name="Owner" content="" />
<META name="Robots" content="index, follow" />
<META name="Security" content="Public" />
<META name="Source" content="wiki template" />
<META name="DC.Rights" content="Copyright 2010-2023, The Apache Software Foundation" />
<!-- The styles -->
<link href="/resources/css/bootstrap.css" rel="stylesheet">
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
.headerlink {
visibility: hidden;
dt:hover > .headerlink, p:hover > .headerlink, td:hover > .headerlink, h1:hover > .headerlink, h2:hover > .headerlink, h3:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, h6:hover > .headerlink {
visibility: visible
} </style>
<link href="/resources/css/bootstrap-responsive.css" rel="stylesheet">
<link href="/resources/css/gora.css" rel="stylesheet">
<style type="text/css">
background: #E1E1E1;
background: -moz-linear-gradient(top, #E1E1E1 0%, #A7A7A7 100%); /* firefox */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#E1E1E1), color-stop(100%,#A7A7A7)); /* webkit */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#E1E1E1', endColorstr='#A7A7A7',GradientType=0 ); /* ie */
background: -o-linear-gradient(top, #E1E1E1 0%,#A7A7A7 100%); /* opera */
color: #636363;
#stpulldown .stpulldown-logo
height: 40px;
width: 300px;
margin-left: 20px;
margin-top: 5px;
background:url("") no-repeat;
<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src=""></script>
<!-- Fav and touch icons -->
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="">
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="">
<link rel="apple-touch-icon-precomposed" href="">
<link rel="shortcut icon" href="/resources/img/feather-small.png">
<title>Apache Gora&trade; - About Apache Gora&trade;</title>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<a class="brand" href="/index.html"><img src="/resources/img/gora-logo.png" alt="Apache Gora" title="Apache Gora"/></a>
<div class="nav-collapse collapse">
<ul class="nav">
<li><a href="/downloads.html">Downloads</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Community <b class="caret"></b></a>
<ul class="dropdown-menu pull-right">
<li><a href="">Board Reporting</a></li>
<li><a href="/contribute.html">Contribute</a></li>
<li><a href="/mailing_lists.html">Mailing Lists</a></li>
<li><a href="/credits.html">People</a></li>
<li><a href="/related.html">Related Projects</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a>
<ul class="dropdown-menu pull-right">
<li><a href="/about.html">About</a></li>
<li><a href="/current/index.html">Current Documentation</a></li>
<li><a href="/current/api/javadoc.html">JavaDoc Documentation</a></li>
<li><a href="/current/tutorial.html">Gora Tutorial</a></li>
<li><a href="">Gora Wiki</a></li>
<li><a href="">Gora Wikipedia Entry</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
<ul class="dropdown-menu pull-right">
<li><a href="">Issue Tracking</a></li>
<li><a href="/mailing_lists.html">Mailing Lists</a></li>
<li><a href="">Nightly Builds</a></li>
<li><a href="">Sonar Analysis</a></li>
<li><a href="/version_control.html">Version Control</a></li>
<li><a href="/roadmap.html">Roadmap</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<img src="/resources/img/feather-small.png" alt="Apache" title="Apache" />
<b class="caret"></b>
<ul class="dropdown-menu pull-right">
<li><a href="">Apache Home</a></li>
<li><a href="">Apache License</a></li>
<li><a href="">Security</a></li>
<li><a href="">Support</a></li>
<li><a href="">Thanks</a></li>
<form id="search-form" class="navbar-search pull-right" action="" method="get">
<input value="" name="sitesearch" type="hidden" />
<input class="search-query" name="q" id="query" type="text" />
<script type="text/javascript" src=""></script>
</div> <!--/.nav-collapse -->
</div> <!-- /container -->
</div> <!-- /navbar-inner -->
</div> <!-- /navbar -->
<div class="container top-buffer" id="Gora_About Apache Gora&trade;">
<h1 id="about-gora">About Gora<a class="headerlink" href="#about-gora" title="Permalink">&para;</a></h1>
<div id="toc"><ul><li><a class="toc-href" href="#why-gora" title="Why Gora?">Why Gora?</a></li><li><a class="toc-href" href="#who-is-gora-for" title="Who is Gora For?">Who is Gora For?</a></li><li><a class="toc-href" href="#background" title="Background">Background</a></li><li><a class="toc-href" href="#what-platforms-does-gora-work-on" title="What Platform(s) does Gora work on?">What Platform(s) does Gora work on?</a></li><li><a class="toc-href" href="#which-languagestechnologies-do-i-need-to-know-to-use-gora" title="Which Languages/Technologies do I need to know to use Gora?">Which Languages/Technologies do I need to know to use Gora?</a></li></ul></div>
<h2 id="why-gora">Why Gora?<a class="headerlink" href="#why-gora" title="Permalink">&para;</a></h2>
<p>Although there are various excellent ORM frameworks such as JPA, Apache OpenJPA, Hibernate, etc for relational databases, data modeling in
NoSQL data stores differ profoundly from their relational cousins. Moreover, data-model agnostic
frameworks such as JDO are not sufficient for use cases, where one needs to use the full power
of the data models in column stores (for example). Gora fills this gap by giving the user an easy-to-use in-memory
data model and persistence for big data framework with data store specific mappings and built
in <a href="">Apache Hadoop&trade;</a> support.</p>
<p>The overall goal for Gora is to become the standard data representation and persistence framework
for big data. The roadmap of Gora can be grouped as follows:</p>
<li>Data Persistence : Persisting objects to Column stores such as <a href="">Apache HBase&trade;</a>,
<a href="">Apache Cassandra&trade;</a>, <a href="">Hypertable</a>;
key-value stores such as <a href="">Voldermort</a>, <a href="">Redis</a>,
etc; SQL databases, such as <a href="">MySQL</a>, <a href="">HSQLDB</a>, flat files
in local file system of <a href="">Hadoop HDFS</a>;</li>
<li>Data Access : An easy to use Java-friendly common API for accessing the data regardless of its location;</li>
<li>Indexing : Persisting objects to <a href="">Apache Lucene</a> and
<a href="">Apache Solr</a> indexes, accessing/querying the data with Gora API;</li>
<li>Analysis : Accesing the data and making analysis through adapters for <a href="">Apache Pig</a>,
<a href="">Apache Hive</a> and <a href="">Cascading</a>;</li>
<li>MapReduce support : Out-of-the-box and extensive
<a href="">MapReduce</a> (<a href="">Apache Hadoop&trade;</a>)
support for data in the data store.</li>
<h2 id="who-is-gora-for">Who is Gora For?<a class="headerlink" href="#who-is-gora-for" title="Permalink">&para;</a></h2>
<p>Gora is a framework primarily aimed towards</p>
<li><b>Hands on Developers</b> required to deal with data volumes which justify Big Data storage solutions classified under
the NoSQL umbrella.</li>
<li>Developers who seek a <b>Java friendly (REST-style) API</b> for mapping Java objects to and from
NoSQL technologies.</li>
<li><b>Development and/or Testing Engineers</b> looking to quickly set up and deploy applications on top of
Big Data storage mediums. This includes testing how applications are suited to underlying data stores
as data stores are easily interchanged.</li>
<li>Developers interested in <b>technology agnostic storage methods</b> for addressing data storage tasks.</li>
<li><b>Decision Makers</b> looking to implement a flexible storage framework under the <a href="">most liberal
open source license available</a>.</li>
<h2 id="background">Background<a class="headerlink" href="#background" title="Permalink">&para;</a></h2>
<p><b>ORM</b> stands for <a href="">Object Relation Mapping</a>. It is a technology which abstacts the persistency layer
(mostly Relational Databases) so that plain domain level objects can be used, without the cumbersome
effort to save/load the data to and from the database.</p>
<p>Gora extends this concept to introduce <b>Object-to-Datastore Mapping</b> where the underlying
technological implementations rely mostly on non-relational data modeling. In essence
Gora provides storage abstraction for NoSQL technologies.</p>
<p>Gora differs from current solutions in that:</p>
<li>Gora is specially focussed at NoSQL data stores, but also has limited support for SQL databases.</li>
<li>The main use case for Gora is to access/analyze big data using <a href="">Apache Hadoop&trade;</a>.</li>
<li>Gora uses <a href="">Apache Avro</a> for bean definition, not byte code enhancement or annotations.</li>
<li>Object-to-data store mappings are backend specific, so that full data model can be utilized.</li>
<li>Gora is simple since it ignores complex SQL mappings.</li>
<li>Gora will support persistence, indexing and anaysis of data, using <a href="">Apache Pig</a>,
<a href="">Apache Lucene</a>, <a href="">Apache Hive</a>, etc.</li>
<h2 id="what-platforms-does-gora-work-on">What Platform(s) does Gora work on?<a class="headerlink" href="#what-platforms-does-gora-work-on" title="Permalink">&para;</a></h2>
<p>Gora <a href="">builds nightly</a> on Ubuntu.</p>
<p>The software has been tested and verified to run on the following platforms:</p>
<li>Mac OSX 10.9.3</li>
<li>Linux Mint</li>
<p>Gora does publish <b>.zip</b> artifacts for Windows users, however there is no gurantee
of platform compatibility.</p>
<p>Please provide platform compatibility issues and/or feedback to our <a href="./mailing_lists.html">mailing lists</a>.</p>
<h2 id="which-languagestechnologies-do-i-need-to-know-to-use-gora">Which Languages/Technologies do I need to know to use Gora?<a class="headerlink" href="#which-languagestechnologies-do-i-need-to-know-to-use-gora" title="Permalink">&para;</a></h2>
<li>Gora is written in Java.</li>
<li>Configuration however requires a working knowledge of syntax for JSON and XML.</li>
<li>You should be able to use the command line terminal.</li>
<li>You should be able to use Apache Maven from the command line.</li>
<li>You should be able to edit simple flat files using a text editor.</li>
</div> <!-- /container (main block) -->
<div class="container">
<p>Copyright © 2010-2023 The Apache Software Foundation. Licensed under <a href="">Apache License 2.0</a>.
<p>Apache Gora, Gora, Apache, the Apache feather logo, and the Apache Gora project logo are trademarks of The Apache Software Foundation.
</div> <!-- /container -->
<!-- The javascript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src=""; type="text/javascript"></script>
<script src="/resources/js/bootstrap.min.js"></script>
<script type="text/javascript">stLight.options({publisher: "4059fafd-3891-49f9-8c96-e4100290d8e6", doNotHash: false, doNotCopy: false, hashAddressBar: false});</script>
<link rel="stylesheet" href="/resources/css/docco.css">
<script src="//"></script>