HBASE-3720 Book.xml - porting conceptual-view / physical-view sections of HBaseArchitecture wiki
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1087395 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
569b5d2335
commit
a906560ce0
@ -110,6 +110,8 @@ Release 0.91.0 - Unreleased
|
|||||||
calls from HBase (Liyin Tang via Stack)
|
calls from HBase (Liyin Tang via Stack)
|
||||||
HBASE-3717 deprecate HTable isTableEnabled() methods in favor of
|
HBASE-3717 deprecate HTable isTableEnabled() methods in favor of
|
||||||
HBaseAdmin methods (David Butler via Stack)
|
HBaseAdmin methods (David Butler via Stack)
|
||||||
|
HBASE-3720 Book.xml - porting conceptual-view / physical-view sections of
|
||||||
|
HBaseArchitecture wiki (Doug Meil via Stack)
|
||||||
|
|
||||||
TASK
|
TASK
|
||||||
HBASE-3559 Move report of split to master OFF the heartbeat channel
|
HBASE-3559 Move report of split to master OFF the heartbeat channel
|
||||||
|
@ -302,8 +302,8 @@ public static byte[][] getHexSplits(String startKey, String endKey, int numRegio
|
|||||||
<title>Data Model</title>
|
<title>Data Model</title>
|
||||||
<para>In short, applications store data into HBase <link linkend="table">tables</link>.
|
<para>In short, applications store data into HBase <link linkend="table">tables</link>.
|
||||||
Tables are made of <link linkend="row">rows</link> and <emphasis>columns</emphasis>.
|
Tables are made of <link linkend="row">rows</link> and <emphasis>columns</emphasis>.
|
||||||
All colums in HBase belong to a particular
|
All columns in HBase belong to a particular
|
||||||
<link linkend="columnfamily">Column Family</link>.
|
<link linkend="columnfamily">column family</link>.
|
||||||
Table <link linkend="cell">cells</link> -- the intersection of row and column
|
Table <link linkend="cell">cells</link> -- the intersection of row and column
|
||||||
coordinates -- are versioned.
|
coordinates -- are versioned.
|
||||||
A cell’s content is an uninterpreted array of bytes.
|
A cell’s content is an uninterpreted array of bytes.
|
||||||
@ -315,6 +315,99 @@ public static byte[][] getHexSplits(String startKey, String endKey, int numRegio
|
|||||||
via the table row key -- its primary key.
|
via the table row key -- its primary key.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
<section xml:id="conceptual.view"><title>Conceptual View</title>
|
||||||
|
<para>
|
||||||
|
The following example is a slightly modified form of the one on page
|
||||||
|
2 of the <link xlink:href="http://labs.google.com/papers/bigtable.html">BigTable</link> paper.
|
||||||
|
There is a table called <varname>webtable</varname> that contains two column families named
|
||||||
|
<varname>contents</varname> and <varname>anchor</varname>.
|
||||||
|
In this example, <varname>anchor</varname> contains two
|
||||||
|
columns (<varname>anchor:cssnsi.com</varname>, <varname>anchor:my.look.ca</varname>)
|
||||||
|
and <varname>contents</varname> contains one column (<varname>contents:html</varname>).
|
||||||
|
<note>
|
||||||
|
<title>Column Names</title>
|
||||||
|
<para>
|
||||||
|
By convention, a column name is made of its column family prefix and a
|
||||||
|
<emphasis>qualifier</emphasis>. For example, the
|
||||||
|
column
|
||||||
|
<emphasis>contents:html</emphasis> is of the column family <varname>contents</varname>
|
||||||
|
The colon character (<literal
|
||||||
|
moreinfo="none">:</literal>) delimits the column family from the
|
||||||
|
column family <emphasis>qualifier</emphasis>.
|
||||||
|
</para>
|
||||||
|
</note>
|
||||||
|
<table frame='all'><title>Table <varname>webtable</varname></title>
|
||||||
|
<tgroup cols='4' align='left' colsep='1' rowsep='1'>
|
||||||
|
<colspec colname='c1'/>
|
||||||
|
<colspec colname='c2'/>
|
||||||
|
<colspec colname='c3'/>
|
||||||
|
<colspec colname='c4'/>
|
||||||
|
<thead>
|
||||||
|
<row><entry>Row Key</entry><entry>Time Stamp</entry><entry>ColumnFamily <varname>contents</varname></entry><entry>ColumnFamily <varname>anchor</varname></entry></row>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<row><entry>"com.cnn.www"</entry><entry>t9</entry><entry></entry><entry><varname>anchor:cnnsi.com</varname> = "CNN"</entry></row>
|
||||||
|
<row><entry>"com.cnn.www"</entry><entry>t8</entry><entry></entry><entry><varname>anchor:my.look.ca</varname> = "CNN.com"</entry></row>
|
||||||
|
<row><entry>"com.cnn.www"</entry><entry>t6</entry><entry><varname>contents:html</varname> = "<html>..."</entry><entry></entry></row>
|
||||||
|
<row><entry>"com.cnn.www"</entry><entry>t5</entry><entry><varname>contents:html</varname> = "<html>..."</entry><entry></entry></row>
|
||||||
|
<row><entry>"com.cnn.www"</entry><entry>t3</entry><entry><varname>contents:html</varname> = "<html>..."</entry><entry></entry></row>
|
||||||
|
</tbody>
|
||||||
|
</tgroup>
|
||||||
|
</table>
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
<section xml:id="physical.view"><title>Physical View</title>
|
||||||
|
<para>
|
||||||
|
Although at a conceptual level tables may be viewed as a sparse set of rows.
|
||||||
|
Physically they are stored on a per-column family basis. New columns
|
||||||
|
(i.e., <varname>columnfamily:column</varname>) can be added to any
|
||||||
|
column family without pre-announcing them.
|
||||||
|
<table frame='all'><title>ColumnFamily <varname>anchor</varname></title>
|
||||||
|
<tgroup cols='3' align='left' colsep='1' rowsep='1'>
|
||||||
|
<colspec colname='c1'/>
|
||||||
|
<colspec colname='c2'/>
|
||||||
|
<colspec colname='c3'/>
|
||||||
|
<thead>
|
||||||
|
<row><entry>Row Key</entry><entry>Time Stamp</entry><entry>Column Family <varname>anchor</varname></entry></row>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<row><entry>"com.cnn.www"</entry><entry>t9</entry><entry><varname>anchor:cnnsi.com</varname> = "CNN"</entry></row>
|
||||||
|
<row><entry>"com.cnn.www"</entry><entry>t8</entry><entry><varname>anchor:my.look.ca</varname> = "CNN.com"</entry></row>
|
||||||
|
</tbody>
|
||||||
|
</tgroup>
|
||||||
|
</table>
|
||||||
|
<table frame='all'><title>ColumnFamily <varname>contents</varname></title>
|
||||||
|
<tgroup cols='3' align='left' colsep='1' rowsep='1'>
|
||||||
|
<colspec colname='c1'/>
|
||||||
|
<colspec colname='c2'/>
|
||||||
|
<colspec colname='c3'/>
|
||||||
|
<thead>
|
||||||
|
<row><entry>Row Key</entry><entry>Time Stamp</entry><entry>ColumnFamily "contents:"</entry></row>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<row><entry>"com.cnn.www"</entry><entry>t6</entry><entry><varname>contents:html</varname> = "<html>..."</entry><entry></entry></row>
|
||||||
|
<row><entry>"com.cnn.www"</entry><entry>t5</entry><entry><varname>contents:html</varname> = "<html>..."</entry><entry></entry></row>
|
||||||
|
<row><entry>"com.cnn.www"</entry><entry>t3</entry><entry><varname>contents:html</varname> = "<html>..."</entry><entry></entry></row>
|
||||||
|
</tbody>
|
||||||
|
</tgroup>
|
||||||
|
</table>
|
||||||
|
It is important to note in the diagram above that the empty cells shown in the
|
||||||
|
conceptual view are not stored since they need not be in a column-oriented
|
||||||
|
storage format. Thus a request for the value of the <varname>contents:html</varname>
|
||||||
|
column at time stamp <literal>t8</literal> would return no value. Similarly, a
|
||||||
|
request for an <varname>anchor:my.look.ca</varname> value at time stamp
|
||||||
|
<literal>t9</literal> would return no value. However, if no timestamp is
|
||||||
|
supplied, the most recent value for a particular column would be returned
|
||||||
|
and would also be the first one found since timestamps are stored in
|
||||||
|
descending order. Thus a request for the values of all columns in the row
|
||||||
|
<varname>com.cnn.www</varname> if no timestamp is specified would be:
|
||||||
|
the value of <varname>contents:html</varname> from time stamp
|
||||||
|
<literal>t6</literal>, the value of <varname>anchor:cnnsi.com</varname>
|
||||||
|
from time stamp <literal>t9</literal>, the value of
|
||||||
|
<varname>anchor:my.look.ca</varname> from time stamp <literal>t8</literal>.
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
|
||||||
<section xml:id="table">
|
<section xml:id="table">
|
||||||
<title>Table</title>
|
<title>Table</title>
|
||||||
<para>
|
<para>
|
||||||
@ -334,7 +427,7 @@ public static byte[][] getHexSplits(String startKey, String endKey, int numRegio
|
|||||||
<title>Column Family<indexterm><primary>Column Family</primary></indexterm></title>
|
<title>Column Family<indexterm><primary>Column Family</primary></indexterm></title>
|
||||||
<para>
|
<para>
|
||||||
Columns in HBase are grouped into <emphasis>column families</emphasis>.
|
Columns in HBase are grouped into <emphasis>column families</emphasis>.
|
||||||
All column members of a column family have a common prefix. For example, the
|
All column members of a column family have the same prefix. For example, the
|
||||||
columns <emphasis>courses:history</emphasis> and
|
columns <emphasis>courses:history</emphasis> and
|
||||||
<emphasis>courses:math</emphasis> are both members of the
|
<emphasis>courses:math</emphasis> are both members of the
|
||||||
<emphasis>courses</emphasis> column family.
|
<emphasis>courses</emphasis> column family.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user