| <!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 Cassandra 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-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"> |
| .stpulldown-gradient |
| { |
| 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("http://gora.apache.org/resources/img/feather-small.png") no-repeat; |
| } |
| </style> |
| <!-- HTML5 shim, for IE6-8 support of HTML5 elements --> |
| <!--[if lt IE 9]> |
| <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> |
| <![endif]--> |
| |
| <!-- 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™ - Gora Cassandra Module</title> |
| </head> |
| |
| <body> |
| <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> |
| <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="https://whimsy.apache.org/board/minutes/Gora.html">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> |
| </ul> |
| </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="https://cwiki.apache.org/confluence/display/GORA/">Gora Wiki</a></li> |
| <li><a href="http://en.wikipedia.org/wiki/Apache_Gora">Gora Wikipedia Entry</a></li> |
| </ul> |
| </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="https://issues.apache.org/jira/browse/GORA">Issue Tracking</a></li> |
| <li><a href="/mailing_lists.html">Mailing Lists</a></li> |
| <li><a href="https://builds.apache.org/view/All/job/gora-trunk/">Nightly Builds</a></li> |
| <li><a href="https://analysis.apache.org/dashboard/index/76356">Sonar Analysis</a></li> |
| <li><a href="/version_control.html">Version Control</a></li> |
| <li><a href="/roadmap.html">Roadmap</a></li> |
| </ul> |
| </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> |
| </a> |
| <ul class="dropdown-menu pull-right"> |
| <li><a href="http://www.apache.org">Apache Home</a></li> |
| <li><a href="http://www.apache.org/licenses/">Apache License</a></li> |
| <li><a href="http://www.apache.org/security/">Security</a></li> |
| <li><a href="http://www.apache.org/foundation/sponsorship.html">Support</a></li> |
| <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> |
| </ul> |
| </li> |
| </ul> |
| <form id="search-form" class="navbar-search pull-right" action="http://www.google.com/cse" method="get"> |
| <input value="gora.apache.org" name="sitesearch" type="hidden" /> |
| <input class="search-query" name="q" id="query" type="text" /> |
| </form> |
| <script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script> |
| </div> <!--/.nav-collapse --> |
| </div> <!-- /container --> |
| </div> <!-- /navbar-inner --> |
| </div> <!-- /navbar --> |
| |
| <div class="container top-buffer" id="Gora_Gora Cassandra Module"> |
| |
| <h2 id="overview">Overview<a class="headerlink" href="#overview" title="Permalink">¶</a></h2> |
| <p>This is the main documentation for the gora-cassandra module which |
| enables <a href="http://cassandra.apache.org">Apache Cassandra</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-cassandra-mappings" title="Gora Cassandra mappings">Gora Cassandra mappings</a></li></ul></div> |
| <h2 id="goraproperties">gora.properties<a class="headerlink" href="#goraproperties" title="Permalink">¶</a></h2> |
| <table class="table"> |
| <thead> |
| <tr> |
| <th align="left">Property Key</th> |
| <th align="left">Property Value</th> |
| <th align="left">Required</th> |
| <th align="left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td>gora.datastore.default=</td> |
| <td>org.apache.gora.cassandra.store.CassandraStore</td> |
| <td>Yes</td> |
| <td>Implementation of the persistent Java storage class</td> |
| </tr> |
| <tr> |
| <td>gora.cassandrastore.mapping.file=</td> |
| <td>/path/to/gora-cassandra-mapping.xml</td> |
| <td>No</td> |
| <td>The XML mapping file to be used. If no value is used this defaults to <code>gora-cassandra-mapping.xml</code></td> |
| </tr> |
| <tr> |
| <td>gora.cassandrastore.cassandraServers=</td> |
| <td>localhost</td> |
| <td>Yes</td> |
| <td>This value should specify the host for a running Cassandra server or node. In this case the server happens to be running on localhost which is the default Cassandra server configuration.</td> |
| </tr> |
| <tr> |
| <td>gora.cassandrastore.port=</td> |
| <td>9042</td> |
| <td>Yes</td> |
| <td>This value should specify the cql port for a running Cassandra server or node. In this case the server happens to be running on 9042 port which is the default Cassandra server configuration.</td> |
| </tr> |
| <tr> |
| <td>gora.cassandrastore.clusterName=</td> |
| <td>Test Cluster</td> |
| <td>No</td> |
| <td>This value should specify the cassandra cluster name for a running Cassandra server or node. In this case the server has configured to run with Cassandra cluster name as 'Test Cluster' which is the default Cassandra server configuration.</td> |
| </tr> |
| <tr> |
| <td>gora.cassandrastore.username=</td> |
| <td>${username}</td> |
| <td>No</td> |
| <td>The authentication details for passing a <b>username</b> to the CassandraHostConfigurator. This will be required if security is required for Cassandra reads and writes.</td> |
| </tr> |
| <tr> |
| <td>gora.cassandrastore.password=</td> |
| <td>${password}</td> |
| <td>No</td> |
| <td>The authentication details for passing a <b>password</b> to the CassandraHostConfigurator. This will be required if security is required for Cassandra reads and writes.</td> |
| </tr> |
| <tr> |
| <td>gora.cassandrastore.cassandraSerializationType=</td> |
| <td>AVRO/NATIVE</td> |
| <td>No</td> |
| <td>The serialization type for persist into the cassandra data store. default value is Native serialization type</td> |
| </tr> |
| </tbody> |
| </table> |
| <h2 id="gora-cassandra-mappings">Gora Cassandra mappings<a class="headerlink" href="#gora-cassandra-mappings" title="Permalink">¶</a></h2> |
| <p>Say we wished to map some CassandraRecord data and store it into the CassandraStore.</p> |
| <pre><code><gora-otd> |
| |
| <keyspace name="RecordKeySpace" durableWrite="false"> |
| <placementStrategy name="SimpleStrategy" replication_factor="1"/> |
| </keyspace> |
| |
| <class name="org.apache.gora.cassandra.example.generated.AvroSerialization.CassandraRecord" |
| keyClass="org.apache.gora.cassandra.example.generated.AvroSerialization.CassandraKey" |
| keyspace="RecordKeySpace" |
| table="CassandraRecord" allowFiltering="true" id="5a1c395e-b41f-11e5-9f22-ba0be0483c18"> |
| <field name="name" column="name" type="text"/> |
| <field name="dataInt" column="age" type="int"/> |
| <field name="salary" column="salary" type="bigint"/> |
| <field name="dataDouble" column="testDouble" type="double"/> |
| <field name="dataBytes" column="quotes" type="blob"/> |
| <field name="arrayInt" column="listInt" type="list(int)"/> |
| <field name="arrayString" column="listString" type="list(text)"/> |
| <field name="arrayLong" column="listLong" type="list(bigint)"/> |
| <field name="arrayDouble" column="listDouble" type="list(double)"/> |
| <field name="mapInt" column="mapInt" type="map(text,int)"/> |
| <field name="mapString" column="mapString" type="map(text,text)"/> |
| <field name="mapLong" column="mapLong" type="map(text,bigint)"/> |
| <field name="mapDouble" column="mapDouble" type="map(text,double)"/> |
| </class> |
| |
| <cassandraKey name="org.apache.gora.cassandra.example.generated.AvroSerialization.CassandraKey"> |
| <partitionKey> |
| <field name="url" column="urlData" type="text"/> |
| <field name="timestamp" column="timestampData" type="bigint"/> |
| </partitionKey> |
| <clusterKey> |
| <key column="timestampData" order="desc"/> |
| </clusterKey> |
| </cassandraKey> |
| |
| </gora-otd> |
| </code></pre> |
| <p>Here you can see that we require the definition of two child elements within the |
| <code>gora-otd</code> mapping configuration, namely;</p> |
| <p>The <b>keyspace</b> element; where we specify:</p> |
| <ol> |
| <li> |
| <p>a parameter containing the Cassandra keyspace schema name e.g. <b>RecordKeySpace</b>,</p> |
| </li> |
| <li> |
| <p>a parameter containing the durable write enabled property in the Cassandra keyspace e.g. <b>false</b>, More about durable write can be found <a href="http://docs.datastax.com/en/cassandra/2.1/cassandra/dml/dml_durability_c.html">here</a>.</p> |
| </li> |
| <li> |
| <p>the child element <b>placementStrategy</b> containing the Cassandra placementStrategy details, a parameter containing the Cassandra placement strategy name, e.g. <b>SimpleStrategy</b>, gora-cassandra will use SimpleStrategy by default if no value for this attribute is specified. More about placement strategies can be found <a href="http://docs.datastax.com/en/archived/cassandra/2.0/cassandra/architecture/architectureDataDistributeReplication_c.html">here</a>.</p> |
| </li> |
| <li> |
| <p>a parameter containing a <b>replicationFactor</b> attribute with value integer. Again the replicationFactor value associated with the Keyspace tag |
| will only apply if Gora creates the Keyspace and will have no effect if this is being used against |
| an existing keyspace. the default value for 'replicationFactor' is '1'.</p> |
| </li> |
| </ol> |
| <p>The <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.cassandra.example.generated.AvroSerialization.CassandraRecord</b>,</p> |
| </li> |
| <li> |
| <p>a parameter containing the keyClass e.g. <b>org.apache.gora.cassandra.example.generated.AvroSerialization.CassandraKey</b> which specifies the keys which map to the field values,</p> |
| </li> |
| <li> |
| <p>a parameter containing the keyspace e.g. <b>RecordKeySpace</b> which matches to the above keyspace definition,</p> |
| </li> |
| <li> |
| <p>a parameter containing the table name e.g. <b>CassandraRecord</b>,</p> |
| </li> |
| <li> |
| <p>a parameter containing the allow filtering e.g. <b>true</b>, More about allow filtering can be found <a href="https://www.datastax.com/dev/blog/allow-filtering-explained-2">here</a>.</p> |
| </li> |
| <li> |
| <p>a child element(s) <b>field</b> which represent fields which are to be persisted into Cassandra. These need to be configured such that they receive the following;</p> |
| <p>finally a parameter <b>name</b> e.g. (name, dateOfBirth, ssn and salary respectively) which map to Gora field name,</p> |
| <p>a parameter containing the column name e.g. <b>name</b>,</p> |
| <p>a parameter containing the data type of the column e.g. <b>text</b>,</p> |
| <p>an optional parameter <b>primarykey</b>, which indicates the primary key.</p> |
| </li> |
| </ol> |
| <p>The <b>cassandraKey</b> element specifying composite key fields which is used in keyClass, This is optional, this element should be added only when composite keys are available;</p> |
| <ol> |
| <li> |
| <p>a child element(s) <b>partitionKey</b> which represent cassandra partition key</p> |
| <p>a child element(s) <b>compositeKey</b> which represent cassandra composite partition key</p> |
| <p>a child element(s) <b>field</b> which represent partition key fields which are to be persisted into Cassandra. These need to be configured such that they receive the following;</p> |
| <p>a parameter <b>name</b> e.g. (name, dateOfBirth, ssn and salary respectively) which map to Gora field name,</p> |
| <p>a parameter containing the column name e.g. <b>name</b>,</p> |
| <p>a parameter containing the data type of the column <b>text</b>,</p> |
| </li> |
| <li> |
| <p>a child element(s) <b>clusterKey</b> which represent cassandra cluster key</p> |
| <p>a child element(s) <b>key</b> which represents column key fields which needs to be add clustered key.</p> |
| <p>a parameter containing the column name e.g. <b>name</b>,</p> |
| <p>a parameter containing the Order type of the column to be applied e.g. <b>desc</b>,</p> |
| </li> |
| </ol> |
| |
| |
| </div> <!-- /container (main block) --> |
| |
| <hr> |
| |
| <div class="container"> |
| <footer> |
| <p>Copyright © 2010-2023 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 --> |
| |
| <!-- The javascript |
| ================================================== --> |
| <!-- Placed at the end of the document so the pages load faster --> |
| <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"; 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="//cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.0.1/build/highlight.min.js"></script> |
| <script>hljs.highlightAll();</script> |
| </body> |
| </html> |