You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ra...@apache.org on 2014/08/06 05:54:07 UTC

svn commit: r1616086 - in /phoenix/site: publish/language/index.html publish/secondary_indexing.html source/src/site/markdown/secondary_indexing.md

Author: rajeshbabu
Date: Wed Aug  6 03:54:07 2014
New Revision: 1616086

URL: http://svn.apache.org/r1616086
Log:
PHOENIX-1086 Document local indexes(Rajesh)

Modified:
    phoenix/site/publish/language/index.html
    phoenix/site/publish/secondary_indexing.html
    phoenix/site/source/src/site/markdown/secondary_indexing.md

Modified: phoenix/site/publish/language/index.html
URL: http://svn.apache.org/viewvc/phoenix/site/publish/language/index.html?rev=1616086&r1=1616085&r2=1616086&view=diff
==============================================================================
--- phoenix/site/publish/language/index.html (original)
+++ phoenix/site/publish/language/index.html Wed Aug  6 03:54:07 2014
@@ -650,7 +650,7 @@ ON <a href="index.html#table_ref">tableR
 [<a href="index.html#options">indexOptions</a>] [ SPLIT ON ( <a href="index.html#split_point">splitPoint</a> [,...] ) ]
 </pre>
 <div name="railroad">
-<table class="railroad"><tr class="railroad"><td class="d"><code class="c">CREATE INDEX</code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">IF NOT EXISTS</code></td></tr></table></td><td class="le"></td></tr></table></td><td class="d"><code class="c"><a href="index.html#name">indexName</a></code></td></tr></table><br /><table class="railroad"><tr class="railroad"><td class="d"><code class="c">ON <a href="index.html#table_ref">tableRef</a> ( <a href="index.html#column_ref">columnRef</a></code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d"><code class="c
 ">ASC</code></td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><code class="c">DESC</code></td><td class="le"></td></tr></table></td><td class="le"></td></tr></table></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><code class="c">, ...</code></td><td class="le"></td></tr></table></td><td class="d"><code class="c">)</code></td></tr></table><br /><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">INCLUDE ( <a href="index.html#column_ref">columnRef</a></code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls
 "></td><td class="d"><code class="c">, ...</code></td><td class="le"></td></tr></table></td><td class="d"><code class="c">)</code></td></tr></table></td><td class="le"></td></tr></table><br /><table class="railroad"><tr class="railroad"><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><code class="c"><a href="index.html#options">indexOptions</a></code></td><td class="le"></td></tr></table></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">SPLIT ON ( <a href="index.html#split_point">splitPoint</a></code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr cla
 ss="railroad"><td class="ls"></td><td class="d"><code class="c">, ...</code></td><td class="le"></td></tr></table></td><td class="d"><code class="c">)</code></td></tr></table></td><td class="le"></td></tr></table></td></tr></table>
+<table class="railroad"><tr class="railroad"><td class="d"><code class="c">CREATE INDEX</code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">LOCAL</code></td></tr></table></td><td class="le"></td></tr></table></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">IF NOT EXISTS</code></td></tr></table></td><td class="le"></td></tr></table></td><td class="d"><code class="c"><a href="index.html#name">indexName</a></code></td></tr></table><br /><table class="railroad"><tr class="railroad"><td class="d"><code class="c">ON <a href="index.html#table_ref">tableRef</a> ( <a
  href="index.html#column_ref">columnRef</a></code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d"><code class="c">ASC</code></td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><code class="c">DESC</code></td><td class="le"></td></tr></table></td><td class="le"></td></tr></table></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><code class="c">, ...</code></td><td class="le"></td></tr></table></td><td class="d"><code class="c">)</code></td></tr></table><br /><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td cla
 ss="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">INCLUDE ( <a href="index.html#column_ref">columnRef</a></code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><code class="c">, ...</code></td><td class="le"></td></tr></table></td><td class="d"><code class="c">)</code></td></tr></table></td><td class="le"></td></tr></table><br /><table class="railroad"><tr class="railroad"><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><code class="c"><a href="index.html#options">indexOptions</a></code></td><td class="le"></td></tr></table></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr 
 class="railroad"><td class="ls"></td><td class="d"><table class="railroad"><tr class="railroad"><td class="d"><code class="c">SPLIT ON ( <a href="index.html#split_point">splitPoint</a></code></td><td class="d"><table class="railroad"><tr class="railroad"><td class="ts"></td><td class="d">&nbsp;</td><td class="te"></td></tr><tr class="railroad"><td class="ls"></td><td class="d"><code class="c">, ...</code></td><td class="le"></td></tr></table></td><td class="d"><code class="c">)</code></td></tr></table></td><td class="le"></td></tr></table></td></tr></table>
 </div>
 <!-- railroad-end -->
 <!-- syntax-start
@@ -664,7 +664,7 @@ syntax-end -->
 <p>Creates a new secondary index on a table or view. The index will be automatically kept in sync with the table as the data changes. At query time, the optimizer will use the index if it contains all columns referenced in the query and produces the most efficient execution plan. If a table has rows that are write-once and append-only, then the table may set the <code>IMMUTABLE_ROWS</code> property to true (either up-front in the <code>CREATE TABLE</code> statement or afterwards in an <code>ALTER TABLE</code> statement). This reduces the overhead at write time to maintain the index. Otherwise, if this property is not set on the table, then incremental index maintenance will be performed on the server side when the data changes.</p>
 <p>Example:</p>
 <p class="notranslate">
-CREATE INDEX my_idx ON sales.opportunity(last_updated_date DESC)<br />CREATE INDEX my_idx ON log.event(created_date DESC) INCLUDE (name, payload) SALT_BUCKETS=10<br />CREATE INDEX IF NOT EXISTS my_comp_idx ON server_metrics ( gc_time DESC, created_date DESC )<br />&nbsp;&nbsp;&nbsp;&nbsp;DATA_BLOCK_ENCODING=&#39;NONE&#39;,VERSIONS=?,MAX_FILESIZE=2000000 split on (?, ?, ?)</p>
+CREATE INDEX my_idx ON sales.opportunity(last_updated_date DESC)<br />CREATE LOCAL INDEX my_idx ON sales.opportunity(last_updated_date DESC)<br />CREATE INDEX my_idx ON log.event(created_date DESC) INCLUDE (name, payload) SALT_BUCKETS=10<br />CREATE INDEX IF NOT EXISTS my_comp_idx ON server_metrics ( gc_time DESC, created_date DESC )<br />&nbsp;&nbsp;&nbsp;&nbsp;DATA_BLOCK_ENCODING=&#39;NONE&#39;,VERSIONS=?,MAX_FILESIZE=2000000 split on (?, ?, ?)</p>
 
 <h3 id="drop_index" class="notranslate">DROP INDEX</h3>
 <!-- railroad-start -->

Modified: phoenix/site/publish/secondary_indexing.html
URL: http://svn.apache.org/viewvc/phoenix/site/publish/secondary_indexing.html?rev=1616086&r1=1616085&r2=1616086&view=diff
==============================================================================
--- phoenix/site/publish/secondary_indexing.html (original)
+++ phoenix/site/publish/secondary_indexing.html Wed Aug  6 03:54:07 2014
@@ -1,7 +1,7 @@
 
 <!DOCTYPE html>
 <!--
- Generated by Apache Maven Doxia at 2014-07-25
+ Generated by Apache Maven Doxia at 2014-08-05
  Rendered using Reflow Maven Skin 1.1.0 (http://andriusvelykis.github.io/reflow-maven-skin)
 -->
 <html  xml:lang="en" lang="en">
@@ -61,14 +61,14 @@
 									<li ><a href="source.html" title="Source Repository">Source Repository</a></li>
 									<li ><a href="issues.html" title="Issue Tracking">Issue Tracking</a></li>
 									<li ><a href="download.html" title="Download">Download</a></li>
-									<li class="divider"/>
+									<li ><a href="http:divider" title=""></a></li>
 									<li ><a href="http://www.apache.org/licenses/" title="License" class="externalLink">License</a></li>
 									<li ><a href="http://www.apache.org/foundation/sponsorship.html" title="Sponsorship" class="externalLink">Sponsorship</a></li>
 									<li ><a href="http://www.apache.org/foundation/thanks.html" title="Thanks" class="externalLink">Thanks</a></li>
 									<li ><a href="http://www.apache.org/security/" title="Security" class="externalLink">Security</a></li>
 								</ul>
 							</li>
-							<li class="dropdown">
+							<li class="dropdown active">
 								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Using <b class="caret"></b></a>
 								<ul class="dropdown-menu">
 									<li ><a href="faq.html" title="F.A.Q.">F.A.Q.</a></li>
@@ -76,7 +76,7 @@
 									<li ><a href="building.html" title="Building">Building</a></li>
 									<li ><a href="tuning.html" title="Tuning">Tuning</a></li>
 									<li ><a href="upgrade_from_2_2.html" title="Upgrade from 2.2">Upgrade from 2.2</a></li>
-									<li class="divider"/>
+									<li ><a href="http:divider" title=""></a></li>
 									<li class="active"><a href="" title="Secondary Indexes">Secondary Indexes</a></li>
 									<li ><a href="joins.html" title="Joins">Joins</a></li>
 									<li ><a href="views.html" title="Views">Views</a></li>
@@ -88,7 +88,7 @@
 									<li ><a href="dynamic_columns.html" title="Dynamic Columns">Dynamic Columns</a></li>
 									<li ><a href="skip_scan.html" title="Skip Scan">Skip Scan</a></li>
 									<li ><a href="bulk_dataload.html" title="Bulk Loading">Bulk Loading</a></li>
-									<li class="divider"/>
+									<li ><a href="http:divider" title=""></a></li>
 									<li ><a href="phoenix_on_emr.html" title="Amazon EMR Support">Amazon EMR Support</a></li>
 									<li ><a href="flume.html" title="Apache Flume Plugin">Apache Flume Plugin</a></li>
 									<li ><a href="pig_integration.html" title="Apache Pig Integration">Apache Pig Integration</a></li>
@@ -175,6 +175,34 @@
 </pre> 
  </div> 
  <p>For the complete syntax, see our <a href="language/index.html#create_index">Language Reference Guide</a>.</p> 
+ <h1>Local(Region level) indexing</h1> 
+ <p>Local indexing targets <i>write heavy</i>, <i>low latency</i> and <i>space constraint</i> use cases. With local indexes index data and table data are co-reside at same server so no network overhead during writes and reads. Local indexes can be used even when the query isn’t fully covered i.e. Phoenix automatically retrieve the columns not in the index through point gets against the data table. Unlike global indexes all local indexes data of a table are stored in a separate shared table.</p> 
+ <p>Reading data via the local index does however require to contact each region until unless query contains equal/range condition(s) on leading primary key column(s) of the data table.</p> 
+</div> 
+<div class="section"> 
+ <h2 id="Example">Example</h2> 
+ <p>To use local indexing, just supply a <tt>LOCAL</tt> keyword when you create index like this:</p> 
+ <div class="source"> 
+  <pre>CREATE LOCAL INDEX my_index ON my_table (v1);
+</pre> 
+ </div> 
+ <p>For the complete syntax, see our <a href="language/index.html#create_index">Language Reference Guide</a>.</p> 
+ <div class="section"> 
+  <h3 id="Setup">Setup</h3> 
+  <p>Local indexing requires special configurations in the master to ensure data table and local index regions co-location.</p> 
+  <p>You will need to add the following parameters to <tt>hbase-site.xml</tt>:</p> 
+  <div class="source"> 
+   <pre>&lt;property&gt;
+  &lt;name&gt;hbase.master.loadbalancer.class&lt;/name&gt;
+  &lt;value&gt;org.apache.phoenix.hbase.index.balancer.IndexLoadBalancer&lt;/value&gt;
+&lt;/property&gt;
+&lt;property&gt;
+  &lt;name&gt;hbase.coprocessor.master.classes&lt;/name&gt;
+  &lt;value&gt;org.apache.phoenix.hbase.index.master.IndexMasterObserver&lt;/value&gt;
+&lt;/property&gt;
+</pre> 
+  </div> 
+ </div> 
 </div> 
 <div class="section"> 
  <h2 id="Data_Guarantees_and_Failure_Management">Data Guarantees and Failure Management</h2> 

Modified: phoenix/site/source/src/site/markdown/secondary_indexing.md
URL: http://svn.apache.org/viewvc/phoenix/site/source/src/site/markdown/secondary_indexing.md?rev=1616086&r1=1616085&r2=1616086&view=diff
==============================================================================
--- phoenix/site/source/src/site/markdown/secondary_indexing.md (original)
+++ phoenix/site/source/src/site/markdown/secondary_indexing.md Wed Aug  6 03:54:07 2014
@@ -50,6 +50,36 @@ If you have an existing table that you'd
     ALTER TABLE my_table SET IMMUTABLE_ROWS=false;
 For the complete syntax, see our [Language Reference Guide](language/index.html#create_index).
 
+# Local(Region level) indexing
+
+Local indexing targets _write heavy_, _low latency_ and _space constraint_ use cases. With local indexes index data and table data are co-reside at same server so no network overhead during writes and reads. Local indexes can be used even when the query isn't fully covered i.e. Phoenix automatically retrieve the columns not in the index through point gets against the data table. Unlike global indexes all local indexes data of a table are stored in a separate shared table.
+
+Reading data via the local index does however require to contact each region until unless query contains equal/range condition(s) on leading primary key column(s) of the data table.
+
+## Example
+
+To use local indexing, just supply a <code>LOCAL</code> keyword when you create index like this:
+
+	CREATE LOCAL INDEX my_index ON my_table (v1);
+For the complete syntax, see our [Language Reference Guide](language/index.html#create_index).
+
+### Setup
+
+Local indexing requires special configurations in the master to ensure data table and local index regions co-location.
+
+You will need to add the following parameters to `hbase-site.xml`:
+
+```
+<property>
+  <name>hbase.master.loadbalancer.class</name>
+  <value>org.apache.phoenix.hbase.index.balancer.IndexLoadBalancer</value>
+</property>
+<property>
+  <name>hbase.coprocessor.master.classes</name>
+  <value>org.apache.phoenix.hbase.index.master.IndexMasterObserver</value>
+</property>
+```
+
 ## Data Guarantees and Failure Management
 
 On successful return to the client, all data is guaranteed to be written to all interested indexes and the primary table. For each individual data row, updates are an all-or-nothing, with a small gap of being behind. From the perspective of a single client, it either thinks all-or-none of the update worked.