blob: afa9b110e1a239fac41f0c25d04ad3eef8040753 [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 Aerospike 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 Aerospike 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 Aerospike Module">
<h2 id="overview">Overview<a class="headerlink" href="#overview" title="Permalink">&para;</a></h2>
<p>This is the main documentation for the gora-aerospike module. <b>gora-aerospike</b> module enables <a href="http://www.aerospike.com/">Aerospike</a> backend support for Gora.</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-aerospike-mappings" title="Gora Aerospike mappings">Gora Aerospike mappings</a></li></ul></div>
<h2 id="goraproperties">gora.properties<a class="headerlink" href="#goraproperties" title="Permalink">&para;</a></h2>
<ul>
<li><code>gora.datastore.default=org.apache.gora.aerospike.store.AerospikeStore</code> - Implementation of the persistent Java storage class for Aerospike</li>
<li><code>gora.aerospikestore.server.ip=localhost</code> - Property pointing to the host where the server is running</li>
<li><code>gora.aerospikestore.server.port=3000</code> - Property pointing to the port where the server is running</li>
<li><code>gora.datastore.mapping.file=gora-aerospike-mapping.xml</code> - The XML mapping file to be used. If no value is used this defaults to gora-aerospike-mapping.xml</li>
<li><code>gora.aerospikestore.server.username=user_name</code> - An optional property defining the username of the server if available</li>
<li><code>gora.aerospikestore.server.password=password</code> - An optional property defining the password of the server if available</li>
</ul>
<h2 id="gora-aerospike-mappings">Gora Aerospike mappings<a class="headerlink" href="#gora-aerospike-mappings" title="Permalink">&para;</a></h2>
<p>You should then create a gora-aerospike-mapping.xml which will describe how you want to store each of your Gora persistent objects along with the read and write policies in Aerospike:</p>
<pre><code>&lt;gora-otd&gt;
&lt;policy name="write" gen="NONE" recordExists="UPDATE" commitLevel="COMMIT_ALL" durableDelete="false"/&gt;
&lt;policy name="read" priority="DEFAULT" consistencyLevel="CONSISTENCY_ONE" replica="SEQUENCE" maxRetries="2"/&gt;
&lt;class name="org.apache.gora.examples.generated.Employee" keyClass="java.lang.String" set="Employee" namespace = "test"&gt;
&lt;field name="name" bin="name"/&gt;
&lt;field name="dateOfBirth" bin="dateOfBirth"/&gt;
&lt;field name="ssn" bin="ssn"/&gt;
&lt;field name="salary" bin="salary"/&gt;
&lt;field name="boss" bin="boss"/&gt;
&lt;field name="webpage" bin="webpage"/&gt;
&lt;/class&gt;
&lt;/gora-otd&gt;
</code></pre>
<p>Here you can see that we require the definition of child elements within the <code>gora-otd</code> mapping configuration. We can define the classes and the policies.</p>
<p>Each <b>class</b> element should contain the following elements;</p>
<ol>
<li>
<p>a parameter defining the Persistent class name e.g. <b>org.apache.gora.examples.generated.Employee</b>,</p>
</li>
<li>
<p>a parameter defining the keyClass e.g. <b>java.lang.String</b> which specifies the key which maps to the field values,</p>
</li>
<li>
<p>a parameter defining the Aerospike set e.g. <b>Employee</b> which will be used to persist each Gora object,</p>
</li>
<li>
<p>a parameter defining the Aerospike namespace e.g. <b>test</b> which will be used to persist each Gora object,</p>
</li>
</ol>
<p>In addition, within the class field we should specify the fields and for which bin each field value maps to. We do not need to explicitly specify the type of each field, as the type is automatically detected in Aerospike server when creating the bin values. Thus each <b>field</b> should contain the field name and the corresponding bin it gets mapped to. e.g. <b> name="webpage" bin="webpage" </b></p>
<p>Further, we can define the policies on reading and writing data from/to the server.</p>
<p>Write policy can have following fields and each field values are the default values supported by <a href="https://www.aerospike.com/apidocs/java/com/aerospike/client/policy/WritePolicy.html">Aerospike Write Policy API</a></p>
<ol>
<li>
<p>gen - <a href="https://www.aerospike.com/apidocs/java/com/aerospike/client/policy/GenerationPolicy.html">generation policy</a> (values: EXPECT_GEN_EQUAL, EXPECT_GEN_GT, NONE)</p>
</li>
<li>
<p>recordExists - <a href="https://www.aerospike.com/apidocs/java/com/aerospike/client/policy/RecordExistsAction.html">record exists action</a> (values: CREATE_ONLY, REPLACE, REPLACE_ONLY, UPDATE, UPDATE_ONLY)</p>
</li>
<li>
<p>commitLevel - <a href="https://www.aerospike.com/apidocs/java/com/aerospike/client/policy/CommitLevel.html">commit level</a> (values: COMMIT_ALL, COMMIT_MASTER)</p>
</li>
<li>
<p>durableDelete - <a href="https://www.aerospike.com/apidocs/java/com/aerospike/client/policy/WritePolicy.html#durableDelete">durable delete</a> (values: true, false)</p>
</li>
<li>
<p>expiration - <a href="https://www.aerospike.com/apidocs/java/com/aerospike/client/policy/WritePolicy.html#expiration">record expiration</a> (values: 0, 10)</p>
</li>
</ol>
<p>Read policy can have following fields and each field values are the default values supported by <a href="https://www.aerospike.com/apidocs/java/com/aerospike/client/policy/Policy.html">Aerospike Read Policy API</a></p>
<ol>
<li>
<p>priority - <a href="https://www.aerospike.com/apidocs/java/com/aerospike/client/policy/Priority.html">priority policy</a> (values: DEFAULT, HIGH, LOW, MEDIUM)</p>
</li>
<li>
<p>consistencyLevel - <a href="https://www.aerospike.com/apidocs/java/com/aerospike/client/policy/ConsistencyLevel.html">consistency level</a> (values: CONSISTENCY_ALL, CONSISTENCY_ONE)</p>
</li>
<li>
<p>replica - <a href="https://www.aerospike.com/apidocs/java/com/aerospike/client/policy/Replica.html">replica</a> (values: MASTER, MASTER_PROLES, RANDOM, SEQUENCE)</p>
</li>
<li>
<p>socketTimeout - <a href="https://www.aerospike.com/apidocs/java/com/aerospike/client/policy/Policy.html#socketTimeout">socket timeout</a> (values: timeout in milliseconds)</p>
</li>
<li>
<p>totalTimeout - <a href="https://www.aerospike.com/apidocs/java/com/aerospike/client/policy/Policy.html#totalTimeout">total timeout</a> (values: timeout in milliseconds)</p>
</li>
<li>
<p>timeoutDelay - <a href="https://www.aerospike.com/apidocs/java/com/aerospike/client/policy/Policy.html#timeoutDelay">timeout delay</a> (values: timeout in milliseconds)</p>
</li>
<li>
<p>maxRetries - <a href="https://www.aerospike.com/apidocs/java/com/aerospike/client/policy/Policy.html#maxRetries">max retries</a> (values: int of max num of retries)</p>
</li>
</ol>
</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>