blob: 613708a6be93e6a9ec4f7ea5d7caed3b57dbf254 [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 DynamoDB 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 DynamoDB 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 DynamoDB Module">
<h2 id="overview">Overview<a class="headerlink" href="#overview" title="Permalink">&para;</a></h2>
<p>This is the main documentation for the gora-dynamodb module.
gora-dynamodb module enables <a href="http://aws.amazon.com/dynamodb/">Amazon DynamoDB</a> backend support for Gora.</p>
<div id="toc"><ul><li><a class="toc-href" href="#gora-dynamodb-properties-goraproperties" title="Gora DynamoDB Properties - gora.properties">Gora DynamoDB Properties - gora.properties</a><ul><li><a class="toc-href" href="#accepted-list-of-endpoints" title="Accepted list of endpoints">Accepted list of endpoints</a></li></ul></li><li><a class="toc-href" href="#gora-dynamodb-mapppings-gora-dynamodb-mappingxml" title="Gora DynamoDB mapppings - gora-dynamodb-mapping.xml">Gora DynamoDB mapppings - gora-dynamodb-mapping.xml</a><ul><li><a class="toc-href" href="#table" title="Table">Table</a></li><li><a class="toc-href" href="#attributes" title="Attributes">Attributes</a></li></ul></li></ul></div>
<h2 id="gora-dynamodb-properties-goraproperties">Gora DynamoDB Properties - gora.properties<a class="headerlink" href="#gora-dynamodb-properties-goraproperties" title="Permalink">&para;</a></h2>
<pre><code>gora.datastore.default=org.apache.gora.dynamodb.store.DynamoDBStore
gora.datastore.autocreateschema=true
preferred.schema.name=Person
gora.dynamodb.mapping.file=/path/to/gora-dynamodb-mapping.xml
gora.dynamodb.client=sync
gora.dynamodb.consistent.reads=true
gora.dynamodb.endpoint=http://dynamodb.ap-northeast-1.amazonaws.com/
gora.dynamodb.serialization.type=dynamo
</code></pre>
<table class="table">
<thead>
<tr>
<th>Property Key</th>
<th>Property Value</th>
<th>Required</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>gora.datastore.default</td>
<td>org.apache.gora.dynamodb.store.DynamoDBStore</td>
<td>Yes</td>
<td>Implementation of the storage class</td>
</tr>
<tr>
<td>gora.datastore.autocreateschema</td>
<td>true</td>
<td>No</td>
<td>Create the table if it doesn&rsquo;t exist</td>
</tr>
<tr>
<td>preferred.schema.name</td>
<td>Person</td>
<td>Yes</td>
<td>Name of the DynamoDB table/schema</td>
</tr>
<tr>
<td>gora.dynamodb.mapping.file</td>
<td>/path/to/gora-dynamodb-mapping.xml</td>
<td>No</td>
<td>The XML mapping file to be used. Defaults to gora-dynamodb-mapping.xml</td>
</tr>
<tr>
<td>gora.dynamodb.client</td>
<td>sync</td>
<td>No</td>
<td>DynamoDB client type. It could be sync or async.</td>
</tr>
<tr>
<td>gora.dynamodb.consistent.reads</td>
<td>true</td>
<td>No</td>
<td>Default is eventual consistence i.e. false.</td>
</tr>
<tr>
<td>gora.dynamodb.endpoint</td>
<td>http://dynamodb.us-east-1.amazonaws.com/</td>
<td>Yes</td>
<td>Set to geographically closest service endpoint. For accepted list, see <a href="#Accepted">here</a></td>
</tr>
<tr>
<td>gora.dynamodb.serialization.type</td>
<td>dynamo</td>
<td>No</td>
<td>Data store serialization type. It could be 'dynamo' or 'avro'</td>
</tr></tbody></table>
<h4 id="accepted-list-of-endpoints">Accepted list of endpoints<a class="headerlink" href="#accepted-list-of-endpoints" title="Permalink">&para;</a></h4>
<ul>
<li>http://dynamodb.ap-northeast-1.amazonaws.com/</li>
<li>http://dynamodb.ap-northeast-2.amazonaws.com/</li>
<li>http://dynamodb.eu-west-1.amazonaws.com/</li>
<li>http://dynamodb.us-east-1.amazonaws.com/</li>
<li>http://dynamodb.us-west-1.amazonaws.com/</li>
<li>http://dynamodb.us-west-2.amazonaws.com/</li>
</ul>
<h2 id="gora-dynamodb-mapppings-gora-dynamodb-mappingxml">Gora DynamoDB mapppings - gora-dynamodb-mapping.xml<a class="headerlink" href="#gora-dynamodb-mapppings-gora-dynamodb-mappingxml" title="Permalink">&para;</a></h2>
<p>Say we wished to map some user data and store it into DynamoDB.</p>
<pre><code>&lt;gora-otd&gt;
&lt;table name="Person" readcunit="1" writecunit="1" package="org.apache.gora.dynamodb.example.generated"&gt;
&lt;attribute name="ssn" type="N" key="hash"/&gt;
&lt;attribute name="date" type="S" key="hashrange"/&gt;
&lt;attribute name="firstName" type="S"/&gt;
&lt;attribute name="lastName" type="S"/&gt;
&lt;attribute name="salary" type="N"/&gt;
&lt;attribute name="visitedplaces" type="SS"/&gt;
&lt;/gora-otd&gt;
</code></pre>
<p>Within the <code>gora-otd</code> mapping configuration, only the 'table' child element is required.</p>
<h3 id="table">Table<a class="headerlink" href="#table" title="Permalink">&para;</a></h3>
<ul>
<li>a parameter containing the DynamoDB table <code>name</code> (String) e.g. Person</li>
<li>a parameter containing the read capacity - <code>readcunit</code> (Number) e.g. 1 More about them <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html#default-limits-throughput">here</a></li>
<li>a parameter containing the write capacity - <code>writecunit</code> (Number) e.g. 1</li>
<li>a parameter containing the name of the <code>package</code> having the table (String)</li>
</ul>
<h3 id="attributes">Attributes<a class="headerlink" href="#attributes" title="Permalink">&para;</a></h3>
<ul>
<li>a parameter containing the <code>name</code> e.g. name, dateOfBirth, ssn and salary</li>
<li>a parameter containing the column <code>type</code> to which they belong e.g. (B/L/M/N/S/SS). For more, refer <a href="https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_AttributeValue.html">here</a></li>
<li>an optional parameter <code>key</code>. The key can be a hash key (partition key/primary key) or a hashrange key (sort key) (in case of composite primary key). The key parameter is left blank for non-key attributes. For more, refer <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.CoreComponents.html#HowItWorks.CoreComponents.PrimaryKey">here</a></li>
</ul>
</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>