blob: 94313a130c9ef3c48583f839e7dabd7e875f3619 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--
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
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
<head>
<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="dev@gora.apache.org" />
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<meta name="Description" content="Apache Gora -- Gora MongoDB Module" />
<meta name="Keywords" content="Apache Gora NoSQL Framework" />
<meta name="Owner" content="dev@gora.apache.org" />
<meta name="Robots" content="index, follow" />
<meta name="Security" content="Public" />
<meta name="Source" content="wiki template" />
<meta
name="DC.Rights"
content="Copyright 2010-2024, The Apache Software Foundation"
/>
<link href="/resources/css/bootstrap.min.css" rel="stylesheet" />
<!-- Fav and touch icons -->
<link
rel="apple-touch-icon-precomposed"
sizes="144x144"
href="http://twitter.github.com/bootstrap/assets/ico/apple-touch-icon-144-precomposed.png"
/>
<link
rel="apple-touch-icon-precomposed"
sizes="114x114"
href="http://twitter.github.com/bootstrap/assets/ico/apple-touch-icon-114-precomposed.png"
/>
<link
rel="apple-touch-icon-precomposed"
sizes="72x72"
href="http://twitter.github.com/bootstrap/assets/ico/apple-touch-icon-72-precomposed.png"
/>
<link
rel="apple-touch-icon-precomposed"
href="http://twitter.github.com/bootstrap/assets/ico/apple-touch-icon-57-precomposed.png"
/>
<link rel="shortcut icon" href="/resources/img/feather-small.png" />
<title>Apache Gora&trade; - Gora MongoDB Module</title>
</head>
<body style="padding-top: 100px">
<nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top shadow-lg">
<div class="container-fluid">
<a class="navbar-brand" href="/index.html"
><img
src="/resources/img/gora-logo.png"
alt="Apache Gora"
title="Apache Gora"
height="50px"
/></a>
<button
class="navbar-toggler"
type="button"
data-bs-toggle="collapse"
data-bs-target="#navbarNav"
aria-controls="navbarNav"
aria-expanded="false"
aria-label="Toggle navigation"
>
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav me-auto">
<li class="nav-item">
<a class="nav-link" href="/downloads.html">Downloads</a>
</li>
<li class="nav-item dropdown">
<a
class="nav-link dropdown-toggle"
href="#"
id="navbarDropdown1"
role="button"
data-bs-toggle="dropdown"
aria-expanded="false"
>Community</a
>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown1">
<li>
<a
class="dropdown-item"
href="https://whimsy.apache.org/board/minutes/Gora.html"
>Board Reporting</a
>
</li>
<li>
<a class="dropdown-item" href="/contribute.html"
>Contribute</a
>
</li>
<li>
<a class="dropdown-item" href="/mailing_lists.html"
>Mailing Lists</a
>
</li>
<li>
<a class="dropdown-item" href="/credits.html">People</a>
</li>
<li>
<a class="dropdown-item" href="/related.html"
>Related Projects</a
>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a
class="nav-link dropdown-toggle"
href="#"
id="navbarDropdown2"
role="button"
data-bs-toggle="dropdown"
aria-expanded="false"
>Documentation</a
>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown2">
<li><a class="dropdown-item" href="/about.html">About</a></li>
<li>
<a class="dropdown-item" href="/current/index.html"
>Current Documentation</a
>
</li>
<li>
<a class="dropdown-item" href="/current/api/javadoc.html"
>JavaDoc Documentation</a
>
</li>
<li>
<a class="dropdown-item" href="/current/tutorial.html"
>Gora Tutorial</a
>
</li>
<li>
<a
class="dropdown-item"
href="https://cwiki.apache.org/confluence/display/GORA/"
>Gora Wiki</a
>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a
class="nav-link dropdown-toggle"
href="#"
id="navbarDropdown3"
role="button"
data-bs-toggle="dropdown"
aria-expanded="false"
>Development</a
>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown3">
<li>
<a
class="dropdown-item"
href="https://issues.apache.org/jira/browse/GORA"
>Issue Tracking</a
>
</li>
<li>
<a class="dropdown-item" href="/mailing_lists.html"
>Mailing Lists</a
>
</li>
<li>
<a class="dropdown-item" href="/version_control.html"
>Version Control</a
>
</li>
<li>
<a class="dropdown-item" href="/roadmap.html">Roadmap</a>
</li>
</ul>
</li>
<li class="nav-item dropdown">
<a
class="nav-link dropdown-toggle"
href="#"
id="navbarDropdown4"
role="button"
data-bs-toggle="dropdown"
aria-expanded="false"
>
<img
src="/resources/img/feather-small.png"
alt="Apache"
title="Apache"
/>
</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown4">
<li>
<a class="dropdown-item" href="http://www.apache.org"
>Apache Home</a
>
</li>
<li>
<a
class="dropdown-item"
href="http://www.apache.org/licenses/"
>Apache License</a
>
</li>
<li>
<a
class="dropdown-item"
href="http://www.apache.org/security/"
>Security</a
>
</li>
<li>
<a
class="dropdown-item"
href="http://www.apache.org/foundation/sponsorship.html"
>Support</a
>
</li>
<li>
<a
class="dropdown-item"
href="http://www.apache.org/foundation/thanks.html"
>Thanks</a
>
</li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<div class="container top-buffer" id="Gora_Gora MongoDB Module">
<h2 id="overview">Overview<a class="headerlink" href="#overview" title="Permalink">&para;</a></h2>
<p>This is the main documentation for the gora-mongodb module. gora-mongodb
module enables <a href="http://www.mongodb.org">MongoDB</a> backend support for Gora.</p>
<p>This module has been tested with MongoDB Server <a href="http://docs.mongodb.org/master/release-notes/2.4/">2.4.x</a>
and <a href="http://docs.mongodb.org/master/release-notes/2.6/">2.6.x</a> series.
It will connect to remote MongoDB server(s) using standard <a href="http://docs.mongodb.org/ecosystem/drivers/java/">Java MongoDB Driver</a></p>
<div id="toc"><ul><li><a class="toc-href" href="#goraproperties" title="gora.properties">gora.properties</a></li><li><a class="toc-href" href="#gora-mongodb-mappings" title="Gora MongoDB mappings">Gora MongoDB mappings</a></li></ul></div>
<h2 id="goraproperties">gora.properties<a class="headerlink" href="#goraproperties" title="Permalink">&para;</a></h2>
<p>Here is a following sample <code>gora.properties</code> file to enable MongoStore:</p>
<pre><code># MongoDBStore properties
gora.datastore.default=org.apache.gora.mongodb.store.MongoStore
gora.mongodb.override_hadoop_configuration=false
gora.mongodb.mapping.file=/gora-mongodb-mapping.xml
gora.mongodb.servers=localhost
gora.mongodb.db=sample
</code></pre>
<p>Description of supported properties:</p>
<table class="table">
<thead>
<tr>
<th>Property</th>
<th>Example value</th>
<th>Required ?</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>gora.datastore.default</td>
<td>org.apache.gora.mongodb.store.MongoStore</td>
<td>Yes</td>
<td>Implementation of the persistent Java storage class for MongoDB</td>
</tr>
<tr>
<td>gora.mongodb.override_hadoop_configuration</td>
<td>false</td>
<td>No</td>
<td>If true, it will allow properties to be overriden by configuration coming from Hadoop</td>
</tr>
<tr>
<td>gora.mongodb.mapping.file</td>
<td>/gora-mongodb-mapping.xml</td>
<td>No</td>
<td>The XML mapping file to be used. If no value is used this defaults to gora-mongodb-mapping.xml</td>
</tr>
<tr>
<td>gora.mongodb.servers</td>
<td>localhost:27017</td>
<td>Yes</td>
<td>This value should specify the host:port for a running MongoDB node. Multiple values have to be separated by a coma character.</td>
</tr>
<tr>
<td>gora.mongodb.db</td>
<td>mytestdatabase</td>
<td>Yes</td>
<td>This value should specify the database for storage of documents.</td>
</tr>
<tr>
<td>gora.mongodb.login</td>
<td>login</td>
<td>No</td>
<td>Login that will be used to authenticate against MongoDB server. If blank, driver won't try authentication.</td>
</tr>
<tr>
<td>gora.mongodb.secret</td>
<td>password</td>
<td>No</td>
<td>Secret that will be used to authenticate against MongoDB server.</td>
</tr>
<tr>
<td>gora.mongodb.authentication.type</td>
<td>SCRAM-SHA-1</td>
<td>No</td>
<td>Authentication mechanism type that will be used to authenticate against MongoDB server.</td>
</tr></tbody></table>
<h2 id="gora-mongodb-mappings">Gora MongoDB mappings<a class="headerlink" href="#gora-mongodb-mappings" title="Permalink">&para;</a></h2>
<p>You should then create a <code>gora-mongodb-mapping.xml</code> which will describe <b>how</b> you want to
store each of your Gora persistent objects:</p>
<pre><code>&lt;gora-otd&gt;
&lt;class name="org.apache.gora.examples.generated.Employee" keyClass="java.lang.String" document="employees"&gt;
&lt;field name="name" docfield="name" type="string"/&gt;
&lt;field name="dateOfBirth" docfield="dateOfBirth" type="int64"/&gt;
&lt;field name="ssn" docfield="ssn" type="string"/&gt;
&lt;field name="salary" docfield="salary" type="int32"/&gt;
&lt;field name="boss" docfield="boss" type="document"/&gt;
&lt;field name="webpage" docfield="webpage" type="document"/&gt;
&lt;/class&gt;
&lt;/gora-otd&gt;
</code></pre>
<p>Each <b>class</b> element specifying persistent fields which values should map to. This element contains;</p>
<ol>
<li>
<p>a parameter containing the Persistent class name e.g. <b>org.apache.gora.examples.generated.Employee</b>,</p>
</li>
<li>
<p>a parameter containing the keyClass e.g. <b>java.lang.String</b> which specifies the keys which map to the field values,</p>
</li>
<li>
<p>a parameter containing the MongoDB collection e.g. <b>employees</b> which will be used to persist each Gora object,</p>
</li>
<li>
<p>finally a child element(s) <b>field</b> which represent all fields which are to be persisted into MongoDB.
These need to be configured such that they receive the following;</p>
<p>a <b>name</b> attribute e.g. (name, dateOfBirth, ssn and salary respectively) which map to Gora field name,</p>
<p>a <b>docfield</b> attribute containing the field's name in mapped Mongo document,</p>
<p>a <b>type</b> attribute which allow transformation of Gora types into native MongoDB types.
MongoDB use <a href="bsonspec.org">BSON</a> is a binary serialization format to store documents
and make remote procedure calls.</p>
<p>Description of supported <b>type</b> values:</p>
</li>
</ol>
<table class="table">
<thead>
<tr>
<th>Type value</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>BINARY</td>
<td>Store as binary data</td>
</tr>
<tr>
<td>BOOLEAN</td>
<td>Store as boolean value</td>
</tr>
<tr>
<td>INT32</td>
<td>Store as signed 32-bit integer</td>
</tr>
<tr>
<td>INT64</td>
<td>Store as signed 64-bit integer</td>
</tr>
<tr>
<td>DOUBLE</td>
<td>Store as floating point</td>
</tr>
<tr>
<td>STRING</td>
<td>Store as UTF-8 string</td>
</tr>
<tr>
<td>DATE</td>
<td>Store as UTC datetime (ISODate)</td>
</tr>
<tr>
<td>LIST</td>
<td>Store as Array</td>
</tr>
<tr>
<td>DOCUMENT</td>
<td>Store as embedded document</td>
</tr>
<tr>
<td>OBJECTID</td>
<td>Store as ObjectId (12-byte)</td>
</tr></tbody></table>
</div>
<!-- /container (main block) -->
<hr />
<div class="container">
<footer>
<p>
Copyright © 2010-2024 The Apache Software Foundation.
Licensed under
<a href="http://www.apache.org/licenses/LICENSE-2.0"
>Apache License 2.0</a
>.
</p>
<p>
Apache Gora, Gora, Apache, the Apache feather logo, and the Apache
Gora project logo are trademarks of The Apache Software Foundation.
</p>
</footer>
</div>
<!-- /container -->
<script src="/resources/js/bootstrap.bundle.min.js"></script>
<script type="text/javascript">
stLight.options({
publisher: "4059fafd-3891-49f9-8c96-e4100290d8e6",
doNotHash: false,
doNotCopy: false,
hashAddressBar: false,
});
</script>
<script src="//cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.0.1/build/highlight.min.js"></script>
<script>
hljs.highlightAll();
</script>
</body>
</html>