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.


Reply via email to