phoenix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mujt...@apache.org
Subject svn commit: r1554574 - /incubator/phoenix/site/publish/index.html
Date Tue, 31 Dec 2013 22:00:39 GMT
Author: mujtaba
Date: Tue Dec 31 22:00:38 2013
New Revision: 1554574

URL: http://svn.apache.org/r1554574
Log:
Apache Phoenix website - cut 1


Modified:
    incubator/phoenix/site/publish/index.html

Modified: incubator/phoenix/site/publish/index.html
URL: http://svn.apache.org/viewvc/incubator/phoenix/site/publish/index.html?rev=1554574&r1=1554573&r2=1554574&view=diff
==============================================================================
--- incubator/phoenix/site/publish/index.html (original)
+++ incubator/phoenix/site/publish/index.html Tue Dec 31 22:00:38 2013
@@ -1,13 +1,325 @@
-<html>
-    <head>
-        <meta charset="UTF-8">
-        <meta http-equiv="refresh" content="5;url=http://incubator.apache.org/projects/phoenix.html">
-        <title>Apache Phoenix</title>
-    </head>
-    <body>
-        <img src="images/phoenix-logo.jpg"/>
-        <p>
-        This site will be up soon. In meantime please see the <a href='http://incubator.apache.org/projects/phoenix.html'>Apache
Phoenix Incubator Status Page</a> for updates.
-        </p>
-    </body>
+
+<!DOCTYPE html>
+<!--
+ Generated by Apache Maven Doxia at Dec 31, 2013
+ Rendered using Maven Reflow Skin 1.0.0 (http://andriusvelykis.github.com/reflow-maven-skin)
+-->
+<html  xml:lang="en" lang="en">
+
+	<head>
+		<meta charset="UTF-8" />
+		<title>Overview | Apache Phoenix</title>
+		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
+		<meta name="description" content="" />
+		<meta http-equiv="content-language" content="en" />
+
+		<link href="http://netdna.bootstrapcdn.com/bootswatch/2.2.2/united/bootstrap.min.css"
rel="stylesheet" />
+		<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap-responsive.min.css"
rel="stylesheet" />
+		<link href="./css/bootswatch.css" rel="stylesheet" />
+		<link href="./css/reflow-skin.css" rel="stylesheet" />
+		
+		<link href="http://yandex.st/highlightjs/7.3/styles/default.min.css" rel="stylesheet"
/>
+		
+		<link href="./css/lightbox.css" rel="stylesheet" />
+		
+		<link href="./css/site.css" rel="stylesheet" />
+		<link href="./css/print.css" rel="stylesheet" media="print" />
+		
+		<!-- Le 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]-->
+
+	</head>
+
+	<body class="page-index project-phoenix" data-spy="scroll" data-offset="60" data-target="#toc-scroll-target">
+
+		<div class="navbar 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">Apache Phoenix</a>
+					<div class="nav-collapse">
+						<ul class="nav pull-right">
+							<li class="dropdown active">
+								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Phoenix <b class="caret"></b></a>
+								<ul class="dropdown-menu">
+									<li class="active"><a href="" title="Overview">Overview </a></li>
+									<li><a href="download.html" title="Download">Download </a></li>
+									<li><a href="recent.html" title="New Features">New Features </a></li>
+									<li><a href="roadmap.html" title="Roadmap">Roadmap </a></li>
+									<li><a href="performance.html" title="Performance">Performance </a></li>
+									<li><a href="team.html" title="Team">Team </a></li>
+									<li><a href="mailing_list.html" title="Mailing Lists">Mailing Lists
</a></li>
+									<li><a href="source.html" title="Source Repository">Source Repository
</a></li>
+									<li><a href="issues.html" title="Issue Tracking">Issue Tracking </a></li>
+								</ul>
+							</li>
+							<li class="dropdown">
+								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Using Phoenix <b
class="caret"></b></a>
+								<ul class="dropdown-menu">
+									<li><a href="faq.html" title="F.A.Q.">F.A.Q. </a></li>
+									<li><a href="Phoenix-in-15-minutes-or-less.html" title="Phoenix Quick Start">Phoenix
Quick Start </a></li>
+									<li><a href="tuning.html" title="Configuration and Tuning">Configuration
and Tuning </a></li>
+									<li><a href="building.html" title="Building Project">Building Project
</a></li>
+									<li><a href="salted.html" title="Salted Tables">Salted Tables </a></li>
+									<li><a href="paged.html" title="Paged Queries">Paged Queries </a></li>
+									<li><a href="secondary_indexing.html" title="Secondary Indexing">Secondary
Indexing </a></li>
+									<li><a href="skip_scan.html" title="Skip Scan">Skip Scan </a></li>
+									<li><a href="dynamic_columns.html" title="Dynamic Columns">Dynamic Columns
</a></li>
+									<li><a href="phoenix_on_emr.html" title="Phoenix on EMR">Phoenix on
EMR </a></li>
+									<li><a href="mr_dataload.html" title="Bulk CSV via M/R">Bulk CSV via
M/R </a></li>
+									<li><a href="flume.html" title="Apache Flume Plugin">Apache Flume Plugin
</a></li>
+								</ul>
+							</li>
+							<li class="dropdown">
+								<a href="#" class="dropdown-toggle" data-toggle="dropdown">Language Reference
<b class="caret"></b></a>
+								<ul class="dropdown-menu">
+									<li><a href="grammar.html" title="Grammar">Grammar </a></li>
+									<li><a href="functions.html" title="Functions">Functions </a></li>
+									<li><a href="datatypes.html" title="Datatypes">Datatypes </a></li>
+								</ul>
+							</li>
+						</ul>
+					</div><!--/.nav-collapse -->
+				</div>
+			</div>
+		</div>
+		
+	<div class="container">
+	
+	<!-- Masthead
+	================================================== -->
+	<header class="jumbotron subhead">
+		<div class="row" id="banner">
+			<div class="span12">
+				<div class="pull-left">
+					<div id="bannerLeft"><h1></h1></div>
+				</div>
+				<div class="pull-right">
+					<a href="http://phoenix.incubator.apache.org/" id="bannerRight"><img src="images/logo.png"
alt='"'Phoenix'"' /></a>
+				</div>
+			</div>
+		</div>
+	</header>
+
+	<div class="main-body">
+	<div class="row">
+		<div class="span12">
+			<div class="body-content">
+<div class="page-header">
+ <h1>Overview</h1>
+</div> 
+<p>Phoenix is a SQL skin over HBase delivered as a client-embedded JDBC driver targeting
low latency queries over HBase data. Phoenix takes your SQL query, compiles it into a series
of HBase scans, and orchestrates the running of those scans to produce regular JDBC result
sets. The table metadata is stored in an HBase table and versioned, such that snapshot queries
over prior versions will automatically use the correct schema. Direct use of the HBase API,
along with coprocessors and custom filters, results in <a href="performance.html">performance</a>
on the order of milliseconds for small queries, or seconds for tens of millions of rows. </p>

+<div class="section"> 
+ <h2 id="Mission">Mission</h2> 
+ <p>Become the standard means of accessing HBase data through a well-defined, industry
standard API.</p> 
+</div> 
+<div class="section"> 
+ <h2 id="Quick_Start">Quick Start</h2> 
+ <p>Tired of reading already and just want to get started? Take a look at our <a
href="faq.html">FAQs</a>, listen to the Phoenix talks from <a class="externalLink"
href="http://www.youtube.com/watch?v=YHsHdQ08trg">Hadoop Summit 2013</a> and <a
class="externalLink" href="http://www.cloudera.com/content/cloudera/en/resources/library/hbasecon/hbasecon-2013--how-and-why-phoenix-puts-the-sql-back-into-nosql-video.html">HBaseConn
2013</a>, and jump over to our quick start guide <a href="Phoenix-in-15-minutes-or-less.html">here</a>.</p>

+</div> 
+<div class="section"> 
+ <h2 id="SQL_Support">SQL Support</h2> 
+ <p>To see whats supported, go to our <a href="language/">language reference</a>.
It includes all typical SQL query statement clauses, including <tt>SELECT</tt>,
<tt>FROM</tt>, <tt>WHERE</tt>, <tt>GROUP BY</tt>, <tt>HAVING</tt>,
<tt>ORDER BY</tt>, etc. It also supports a full set of DML commands as well as
table creation and versioned incremental alterations through our DDL commands. We try to follow
the SQL standards wherever possible.</p> 
+ <p><a name="connStr" id="connStr"></a>Use JDBC to get a connection to
an HBase cluster like this:</p> 
+ <div class="source"> 
+  <pre>    Class.forName(&quot;com.salesforce.phoenix.jdbc.PhoenixDriver&quot;);
+    Connection conn = DriverManager.getConnection(&quot;jdbc:phoenix:server1,server2:3333&quot;);
+</pre> 
+ </div> 
+ <p>where the connection string is composed of: <tt><small>jdbc:phoenix</small></tt>
[ <tt><small>:&lt;zookeeper quorum&gt;</small></tt> [ <tt><small>:&lt;port
number&gt;</small></tt> ] [ <tt><small>:&lt;root node&gt;</small></tt>
] ]</p> 
+ <p>For any omitted part, the relevant property value, hbase.zookeeper.quorum, hbase.zookeeper.property.clientPort,
and zookeeper.znode.parent will be used from hbase-site.xml configuration file.</p>

+ <p>Heres a list of what is currently <b>not</b> supported:</p> 
+ <ul> 
+  <li><b>Full Transaction Support</b>. Although we allow client-side batching
and rollback as described <a href="#transactions">here</a>, we do not provide
transaction semantics above and beyond what HBase gives you out-of-the-box.</li> 
+  <li><b>Derived tables</b>. Nested queries are coming soon.</li>

+  <li><b>Relational operators</b>. Union, Intersect, Minus.</li>

+  <li><b>Miscellaneous built-in functions</b>. These are easy to add -
read this <a class="externalLink" href="http://phoenix-hbase.blogspot.com/2013/04/how-to-add-your-own-built-in-function.html">blog</a>
for step by step instructions.</li> 
+ </ul> 
+</div> 
+<div class="section"> 
+ <h2 id="schema">Schema<a name="Schema"></a></h2> 
+ <p>Phoenix supports table creation and versioned incremental alterations through DDL
commands. The table metadata is stored in an HBase table.</p> 
+ <p>A Phoenix table is created through the <a href="grammar.html#create">CREATE
TABLE</a> DDL command and can either be:</p> 
+ <ol style="list-style-type: decimal"> 
+  <li><b>built from scratch</b>, in which case the HBase table and column
families will be created automatically.</li> 
+  <li><b>mapped to an existing HBase table</b>, by creating either a read-write
TABLE or a read-only VIEW, with the caveat that the binary representation of the row key and
key values must match that of the Phoenix data types (see <a href="datatypes.html">Data
Types reference</a> for the detail on the binary representation). 
+   <ul> 
+    <li>For a read-write TABLE, column families will be created automatically if they
dont already exist. An empty key value will be added to the first column family of each existing
row to minimize the size of the projection for queries.</li> 
+    <li>For a read-only VIEW, all column families must already exist. The only change
made to the HBase table will be the addition of the Phoenix coprocessors used for query processing.
The primary use case for a VIEW is to transfer existing data into a Phoenix table, since data
modification are not allowed on a VIEW and query performance will likely be less than as with
a TABLE.</li> 
+   </ul></li> 
+ </ol> 
+ <p>All schema is versioned, and prior versions are stored forever. Thus, snapshot
queries over older data will pick up and use the correct schema for each row.</p> 
+ <div class="section"> 
+  <div class="section"> 
+   <h4 id="Salting">Salting</h4> 
+   <p>A table could also be declared as salted to prevent HBase region hot spotting.
You just need to declare how many salt buckets your table has, and Phoenix will transparently
manage the salting for you. Youll find more detail on this feature <a href="salted.html">here</a>,
along with a nice comparison on write throughput between salted and unsalted tables <a
href="performance.htm#salting">here</a>.</p> 
+  </div> 
+  <div class="section"> 
+   <h4 id="Schema_at_Read-time">Schema at Read-time</h4> 
+   <p>Another schema-related feature allows columns to be defined dynamically at query
time. This is useful in situations where you dont know in advance all of the columns at create
time. Youll find more details on this feature <a href="dynamic_columns.html">here</a>.</p>

+  </div> 
+  <div class="section"> 
+   <h4 id="mapping">Mapping to an Existing HBase Table<a name="Mapping_to_an_Existing_HBase_Table"></a></h4>

+   <p>Phoenix supports mapping to an existing HBase table through the <a href="grammar.html#create">CREATE
TABLE</a> and <a href="grammar.html#create">CREATE VIEW</a> DDL statements.
In both cases, the HBase metadata is left as-is, except for with CREATE TABLE the <a class="externalLink"
href="http://hbase.apache.org/book/cf.keep.deleted.html">KEEP_DELETED_CELLS</a> option
is enabled to allow for flashback queries to work correctly. For CREATE TABLE, any HBase metadata
(table, column families) that doesnt already exist will be created. Note that the table and
column family names are case sensitive, with Phoenix upper-casing all names. To make a name
case sensitive in the DDL statement, surround it with double quotes as shown below: </p>

+   <div> 
+    <pre><tt>CREATE VIEW MyTable (a.ID VARCHAR PRIMARY KEY)</tt></pre>

+   </div> 
+   <p>For CREATE TABLE, an empty key value will also be added for each row so that
queries behave as expected (without requiring all columns to be projected during scans). For
CREATE VIEW, this will not be done, nor will any HBase metadata be created. Instead the existing
HBase metadata must match the metadata specified in the DDL statement or a <tt>ERROR
505 (42000): Table is read only</tt> will be thrown.</p> 
+   <p>The other caveat is that the way the bytes were serialized in HBase must match
the way the bytes are expected to be serialized by Phoenix. For VARCHAR,CHAR, and UNSIGNED_*
types, Phoenix uses the HBase Bytes utility methods to perform serialization. The CHAR type
expects only single-byte characters and the UNSIGNED types expect values greater than or equal
to zero.</p> 
+   <p>Our composite row keys are formed by simply concatenating the values together,
with a zero byte character used as a separator after a variable length type. For more information
on our type system, see the <a href="datatypes.html">Data Type</a>.</p>

+  </div> 
+ </div> 
+</div> 
+<div class="section"> 
+ <h2 id="transactions">Transactions<a name="Transactions"></a></h2>

+ <p>The DML commands of Phoenix, <a href="grammar.html#upsert_values">UPSERT
VALUES</a>, <a href="grammar.html#upsert_select">UPSERT SELECT</a> and <a
href="grammar.html#delete">DELETE</a>, batch pending changes to HBase tables on the
client side. The changes are sent to the server when the transaction is committed and discarded
when the transaction is rolled back. The only transaction isolation level we support is TRANSACTION_READ_COMMITTED.
This includes not being able to see your own uncommitted data as well. Phoenix does not providing
any additional transactional semantics beyond what HBase supports when a batch of mutations
is submitted to the server. If auto commit is turned on for a connection, then Phoenix will,
whenever possible, execute the entire DML command through a coprocessor on the server-side,
so performance will improve.</p> 
+ <p>Most commonly, an application will let HBase manage timestamps. However, under
some circumstances, an application needs to control the timestamps itself. In this case, a
long-valued CurrentSCN property may be specified at connection time to control timestamps
for any DDL, DML, or query. This capability may be used to run snapshot queries against prior
row values, since Phoenix uses the value of this connection property as the max timestamp
of scans.</p> 
+</div> 
+<div class="section"> 
+ <h2 id="Metadata">Metadata</h2> 
+ <p>The catalog of tables, their columns, primary keys, and types may be retrieved
via the java.sql metadata interfaces: <tt>DatabaseMetaData</tt>, <tt>ParameterMetaData</tt>,
and <tt>ResultSetMetaData</tt>. For retrieving schemas, tables, and columns through
the DatabaseMetaData interface, the schema pattern, table pattern, and column pattern are
specified as in a LIKE expression (i.e. % and _ are wildcards escaped through the character).
The table catalog argument to the metadata APIs deviates from a more standard relational database
model, and instead is used to specify a column family name (in particular to see all columns
in a given column family).</p> 
+</div>
+			</div>
+		</div>
+	</div>
+	</div>
+
+	</div><!-- /container -->
+	
+	<!-- Footer
+	================================================== -->
+	<footer class="well">
+		<div class="container">
+			<div class="row">
+				<div class="span3 bottom-nav">
+					<ul class="nav nav-list">
+						<li class="nav-header">Phoenix</li>
+						<li class="active">
+							<a href="#" title="Overview">Overview </a>
+						</li>
+						<li>
+							<a href="download.html" title="Download">Download </a>
+						</li>
+						<li>
+							<a href="recent.html" title="New Features">New Features </a>
+						</li>
+						<li>
+							<a href="roadmap.html" title="Roadmap">Roadmap </a>
+						</li>
+						<li>
+							<a href="performance.html" title="Performance">Performance </a>
+						</li>
+						<li>
+							<a href="team.html" title="Team">Team </a>
+						</li>
+						<li>
+							<a href="mailing_list.html" title="Mailing Lists">Mailing Lists </a>
+						</li>
+						<li>
+							<a href="source.html" title="Source Repository">Source Repository </a>
+						</li>
+						<li>
+							<a href="issues.html" title="Issue Tracking">Issue Tracking </a>
+						</li>
+					</ul>
+				</div>
+				<div class="span3 bottom-nav">
+					<ul class="nav nav-list">
+						<li class="nav-header">Using Phoenix</li>
+						<li>
+							<a href="faq.html" title="F.A.Q.">F.A.Q. </a>
+						</li>
+						<li>
+							<a href="Phoenix-in-15-minutes-or-less.html" title="Phoenix Quick Start">Phoenix
Quick Start </a>
+						</li>
+						<li>
+							<a href="tuning.html" title="Configuration and Tuning">Configuration and Tuning
</a>
+						</li>
+						<li>
+							<a href="building.html" title="Building Project">Building Project </a>
+						</li>
+						<li>
+							<a href="salted.html" title="Salted Tables">Salted Tables </a>
+						</li>
+						<li>
+							<a href="paged.html" title="Paged Queries">Paged Queries </a>
+						</li>
+						<li>
+							<a href="secondary_indexing.html" title="Secondary Indexing">Secondary Indexing
</a>
+						</li>
+						<li>
+							<a href="skip_scan.html" title="Skip Scan">Skip Scan </a>
+						</li>
+						<li>
+							<a href="dynamic_columns.html" title="Dynamic Columns">Dynamic Columns </a>
+						</li>
+						<li>
+							<a href="phoenix_on_emr.html" title="Phoenix on EMR">Phoenix on EMR </a>
+						</li>
+						<li>
+							<a href="mr_dataload.html" title="Bulk CSV via M/R">Bulk CSV via M/R </a>
+						</li>
+						<li>
+							<a href="flume.html" title="Apache Flume Plugin">Apache Flume Plugin </a>
+						</li>
+					</ul>
+				</div>
+				<div class="span3 bottom-nav">
+					<ul class="nav nav-list">
+						<li class="nav-header">Language Reference</li>
+						<li>
+							<a href="grammar.html" title="Grammar">Grammar </a>
+						</li>
+						<li>
+							<a href="functions.html" title="Functions">Functions </a>
+						</li>
+						<li>
+							<a href="datatypes.html" title="Datatypes">Datatypes </a>
+						</li>
+					</ul>
+				</div>
+			</div>
+		</div>
+	</footer>
+		
+	<div class="container subfooter">
+		<div class="row">
+			<div class="span12">
+				<p class="pull-right"><a href="#">Back to top</a></p>
+				<p class="copyright">Copyright &copy;2013 <a href="http://www.apache.org">Apache
Software Foundation</a>. All Rights Reserved.</p>
+				<p class="version-date"><span class="projectVersion">Version: 0.2.2. </span><span
class="publishDate">Last Published: 2013-12-31. </span></p>
+			</div>
+		</div>
+	</div>
+
+	<!-- Le javascript
+	================================================== -->
+	<!-- Placed at the end of the document so the pages load faster -->
+
+	<!-- Fallback jQuery loading from Google CDN:
+	     http://stackoverflow.com/questions/1014203/best-way-to-use-googles-hosted-jquery-but-fall-back-to-my-hosted-library-on-go
-->
+	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
+	<script type="text/javascript">
+		if (typeof jQuery == 'undefined')
+		{
+			document.write(unescape("%3Cscript src='./js/jquery-1.8.3.min.js' type='text/javascript'%3E%3C/script%3E"));
+		}
+	</script>
+	
+	<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.2.2/js/bootstrap.min.js"></script>
+	<script src="./js/lightbox.js"></script>
+	<script src="./js/jquery.smooth-scroll.min.js"></script>
+	<!-- back button support for smooth scroll -->
+	<script src="./js/jquery.ba-bbq.min.js"></script>
+	<script src="http://yandex.st/highlightjs/7.3/highlight.min.js"></script>
+
+	<script src="./js/reflow-skin.js"></script>
+	
+	</body>
 </html>



Mime
View raw message