Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Lucene-hadoop Wiki" for 
change notification.

The following page has been changed by udanax:
http://wiki.apache.org/lucene-hadoop/Hbase/ShellPlans

------------------------------------------------------------------------------
  This project is currently in the planning stage.  
[https://issues.apache.org/jira/browse/HADOOP-1608 HADOOP-1608] to add 
"Relational Algrebra Operators" is currently in process.
  
  == People Involved ==
+   * [:udanax:Edward Yoon], (NHN corp)
+   * [:InchulSong: Inchul Song], (Division of Computer Science, KAIST)
-  * '''Syntax definition.'''
-   * [:udanax:Edward Yoon], Master.[[BR]]Open Collaboration, NHN corp.
-   * Inchul Song, Ph.D. Candidate[[BR]]Database Lab (Division of Computer 
Science, KAIST)
- 
- If you have constructive ideas, please advise me. [EMAIL PROTECTED]
  
  == Suggested Hbase Query Language plans ==
  
- I've made some changes to your initial HQL to make it look more like SQL. I 
borrowed the syntax definition style from MySQL. 
+  ''-- I've made some changes to your initial [wiki:Hbase/HbaseShell/HQL HQL] 
to make it look more like SQL. I borrowed the syntax definition style from 
MySQL.[[BR]]by [:InchulSong: Inchul Song]''
- 
-  -- [:Hbase/HbaseShell/HQL] by Inchul Song
  
  ----
  
@@ -90, +85 @@

  ==== Relational Operators ====
  ||<bgcolor="#E5E5E5">'''Operator''' ||<bgcolor="#E5E5E5">'''Explanation''' ||
  ||Projection ||<99%>'''Projection''' of a relation ~+R+~, It makes a new 
relation as the set that is obtained when all tuples(rows) in ~+R+~ are 
restricted to the set 
{columnfamily,,1,,,...,columnfamily,,n,,}.[[BR]][[BR]]~-''A = 
Table('movieLog_table');[[BR]]B = A.Projection('year','length'); 
'''//π,,year.length,,(A)''' ''-~ ||
- ||Selection ||<99%>'''Selection''' of a relation ~+R+~, It makes a new 
relation as the set of specified tuples(rows) of the relation ~+R+~[[BR]]'''Set 
Operations''' : ~-''OR, AND, NOT''-~[[BR]][[BR]]~-''A = 
Table('movieLog_table');[[BR]]B = A.Selection(length > 100 AND studioName = 
'Fox'); '''//σ,,length > 100.studioName='Fox',,(A)''' ''-~ ||
+ ||Selection ||<99%>'''Selection''' of a relation ~+R+~, It makes a new 
relation as the set of specified tuples(rows) of the relation 
~+R+~.[[BR]]'''Set Operations''' : ~-''OR, AND, NOT''-~[[BR]][[BR]]~-''A = 
Table('movieLog_table');[[BR]]B = A.Selection(length > 100 AND studioName = 
'Fox'); '''//σ,,length > 100.studioName='Fox',,(A)''' ''-~ ||
- ||JOINs ||<99%>Table '''JOIN''' operations, linking and extracting data from 
two different internal source[[BR]]'''Operations''' : ~-''naturalJoin(), 
thetaJoin(), cartesianProduct() ''-~ [[BR]][[BR]]~-''R = 
Table('movieLog_table');[[BR]]S = Table('movieStar_table');[[BR]]C = 
R.naturalJoin(S); '''//C = R▷◁S''' ''-~ ||
+ ||JOINs ||<99%>Table '''JOIN''' operations, linking and extracting data from 
two different internal source.[[BR]]'''Operations''' : ~-''naturalJoin(), 
thetaJoin(), cartesianProduct() ''-~ [[BR]][[BR]]~-''R = 
Table('movieLog_table');[[BR]]S = Table('movieStar_table');[[BR]]C = 
R.naturalJoin(S); '''//C = R▷◁S''' ''-~ ||
  ||Group ||<99%>'''Group''' tuples by value of an attribute and apply 
aggregate function independently to each group of tuples.[[BR]]'''Aggregate 
Functions''' : ~-''AVG( attribute ), SUM( attribute ), COUNT( attribute ), MIN( 
attribute ), MAX( attribute )''-~[[BR]][[BR]]~-''A = 
Table('movieLog_table);[[BR]]B = A.Group('studioName', MIN('year')); 
'''//γ,,studioName.MIN( year ),,(A)''' ''-~ ||
- ||Sort ||<99%>'''Sort''' of tuples(rows) of R, ordered according to 
columnfamilies on columnfamily-list[[BR]][[BR]]~-''A = 
Table('movieLog_table');[[BR]]B = Sort A by ('length'); '''//τ,,length,,(A)''' 
''-~ ||
+ ||Sort ||<99%>'''Sort''' of tuples(rows) of R, ordered according to 
columnfamilies on columnfamily-list.[[BR]][[BR]]~-''A = 
Table('movieLog_table');[[BR]]B = Sort A by ('length'); '''//τ,,length,,(A)''' 
''-~ ||
  
  ''~-Again, to help readers, you might cite pages that explain 'relational 
algebra' or examples of its use in databases to help contextualize your plan 
(Aren't there other relational operators than these that might be included?   
Do you intend to implement those?  If not, you might say why not of if you 
intend to do these as 'Matrix Arithmetic Operators, you might say so. -- 
St.Ack-~''
  
  ==== Matrix Arithmetic Operators ====
  ||<bgcolor="#E5E5E5">'''Operator''' ||<bgcolor="#E5E5E5">'''Explanation''' ||
- ||Addition ||<99%>'''Adding''' entries with the same indices 
[[BR]][[BR]]~-''A = Matrix('m_table','cf_1');[[BR]]B = 
Matrix('m_table','cf_2');[[BR]]C = A + B; '''// c,,ij,, = a,,ij,, + b,,ij,, (i 
: row key, j : column key)''' ''-~ ||
+ ||Addition ||<99%>'''Adding''' entries with the same indices. 
[[BR]][[BR]]~-''A = Matrix('m_table','cf_1');[[BR]]B = 
Matrix('m_table','cf_2');[[BR]]C = A + B; '''// c,,ij,, = a,,ij,, + b,,ij,, (i 
: row key, j : column key)''' ''-~ ||
- ||Subtraction ||<99%>'''Subtracting''' entries with the same indices 
[[BR]][[BR]]~-''A = Matrix('m_table','cf_1');[[BR]]B = 
Matrix('m_table','cf_2');[[BR]]C = A - B; '''// c,,ij,, = a,,ij,, - b,,ij,, (i 
: row key, j : column key)''' ''-~ ||
+ ||Subtraction ||<99%>'''Subtracting''' entries with the same 
indices.[[BR]][[BR]]~-''A = Matrix('m_table','cf_1');[[BR]]B = 
Matrix('m_table','cf_2');[[BR]]C = A - B; '''// c,,ij,, = a,,ij,, - b,,ij,, (i 
: row key, j : column key)''' ''-~ ||
- ||Multiplication ||<99%>'''Multiplication''' of two matrices, Product C of 
two matrices A and B [[BR]][[BR]]~-''A = Matrix('m_table','cf_1');[[BR]]B = 
Matrix('m_table','cf_2');[[BR]]C = A * B; '''//C = A · B''' ''-~ ||
+ ||Multiplication ||<99%>'''Multiplication''' of two matrices, Product C of 
two matrices A and B.[[BR]][[BR]]~-''A = Matrix('m_table','cf_1');[[BR]]B = 
Matrix('m_table','cf_2');[[BR]]C = A * B; '''//C = A · B''' ''-~ ||
- ||Division ||<99%>'''Division''' is solving the matrix equation AX = B for X 
[[BR]][[BR]]~-''A = Matrix('m_table','cf_1');[[BR]]B = 
Matrix('m_table','cf_2');[[BR]]C = A /[or \] B; '''// C = A / B''' ''-~||
+ ||Division ||<99%>'''Division''' is solving the matrix equation AX = B for 
X.[[BR]][[BR]]~-''A = Matrix('m_table','cf_1');[[BR]]B = 
Matrix('m_table','cf_2');[[BR]]C = A /[or \] B; '''// C = A / B''' ''-~||
  ||Transpose ||<99%>'''Transpose''' of a Matrix, A matrix which is formed by 
turning all the rows of a given matrix into columns and 
vice-versa.[[BR]][[BR]]~-''A = Matrix('m_table','cf_1');[[BR]]B = Transpose(A); 
'''// B = A'''' ''-~||
  
  ==== Factorizations and Decompositions ====
  
  ||<bgcolor="#E5E5E5">'''Function''' ||<bgcolor="#E5E5E5">'''Explanation''' ||
- ||LU ||<99%>'''LU Decomposition'''[[BR]]A procedure for decomposing an N by N 
matrix A into a product of a lower triangular matrix L and an upper triangular 
matrix U, LU = A[[BR]]'''Functions''' : ~-''getL(), getU(), isSingular(), 
getPivot()''-~ [[BR]][[BR]]~-''A = Matrix('m_table','cf_1');[[BR]]B = 
LUDecomposition(A);[[BR]]C = getU(B);[[BR]]D = getL(A);''-~||
+ ||LU ||<99%>'''LU Decomposition'''[[BR]]A procedure for decomposing an N by N 
matrix A into a product of a lower triangular matrix L and an upper triangular 
matrix U, LU = A.[[BR]]'''Functions''' : ~-''getL(), getU(), isSingular(), 
getPivot()''-~ [[BR]][[BR]]~-''A = Matrix('m_table','cf_1');[[BR]]B = 
LUDecomposition(A);[[BR]]C = getU(B);[[BR]]D = getL(A);''-~||
  ||QR ||<99%>'''QR Decomposition'''[[BR]]For an m-by-n matrix A with m >= n, 
the QR decomposition is an m-by-n orthogonal matrix Q and an n-by-n upper 
triangular matrix R so that A = Q*R.[[BR]]'''Functions''' : ~-''getH(), getQ(), 
getR()''-~[[BR]][[BR]]~-''A = Matrix('m_table','cf_1');[[BR]]B = 
QRDecomposition(A);[[BR]]C = getH(B);''-~||
  ||Cholesky ||<99%>'''Cholesky Decomposition'''[[BR]]It is a special case of 
LU decomposition applicable only if matrix to be decomposed is symmetric 
positive definite.[[BR]]'''Functions''' : ~-''getL(), isSPD()''-~ 
[[BR]][[BR]]~-''A = Matrix('m_table','cf_1');[[BR]]B = 
CholeskyDecomposition(A);[[BR]]C = getU(B);[[BR]]D = getL(A);''-~||
  ||SVD ||<99%>'''SV(Singular Value) Decomposition'''[[BR]]For an m-by-n matrix 
A with m >= n, the singular value decomposition is an m-by-n orthogonal matrix 
U, an n-by-n diagonal matrix S, and an n-by-n orthogonal matrix V so that A = 
U*S*V'.[[BR]]'''Functions''' : ~-''getS(), getU(), getV(), 
getSingularValues()''-~ [[BR]][[BR]]~-''A = Matrix('m_table','cf_1');[[BR]]B = 
SVDecomposition(A);[[BR]]C = getU(B);''-~||

Reply via email to