[ 
https://issues.apache.org/jira/browse/HBASE-1304?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Erik Holstad updated HBASE-1304:
--------------------------------

    Attachment: hbase-1304-v1.patch

This is a rather big patch with a lot of changes but will try to break it down 
as good as I can.
Two big components, the client and the server side, client first:
On the client I have added a couple of classes that will take care of querying 
and adding of data.
The classes for adding are:
RowUpdates, Family where the former wraps the later. The Family class is a 
container for the columns and values that you want to 
add for that family. These are converted to KeyValues when sent to the server. 

Classes for getting are:
AbstractGet, common methods for all get classes
Family, same as above but without the value, since only getting
Get, interface
GetRow, getting everything from a row
GetFamilies, getting everything from a list of families
GetColumns, getting everything from a list of families where specific columns 
are specified
GetTop, getting the last n inserts from every family from a list of families

TimeRange, every Get includes a TimeRange for the KeyValues you want to fetch
In every get you can also specify a filter, this has not been implemented yet, 
but is going to be used for the user to make a custom filter
that will be used on the server.


On the server side I have mirroring GetClasses, that basically implements one 
method, the compareTo(KeyValue, multiFamily) which is different for all the 
different calls. The notion of a multiFamily is introduced to make the 
comparison faster for all compares between KeyValue today for fetches, since 
all KeyValues share the same family, but still keep it open for the future.
New classes on server:

AbstractServerGet, 
Deletes, is a class the contains all deletes + a timestamp for a deleteFamily 
if one is found
ServerGet
ServerGetColumns
ServerGetFamilies
ServerGetTop
There is no ServerGetRow, since it is only a GetFamilies for all and are dealt 
with on the server

Most of the things have been tested individually but I get problem when trying 
to send data between the client and the server as shown in 
src/test/../client/TestNewHTable.java. Think it is not a big problem but 
haven't been able to deal with is since I don't really understand what is 
needed for the rpc to work. All the classes that I are sending back and forth 
are "hopefully" implementing Writable and are tested in 
src/test/.../TestSerialization.java

Also updated KeyValue to be Writable since it is going to be the return format.


> New client server implementation of how gets and puts are handled. 
> -------------------------------------------------------------------
>
>                 Key: HBASE-1304
>                 URL: https://issues.apache.org/jira/browse/HBASE-1304
>             Project: Hadoop HBase
>          Issue Type: Improvement
>    Affects Versions: 0.20.0
>            Reporter: Erik Holstad
>            Assignee: Erik Holstad
>            Priority: Blocker
>         Attachments: hbase-1304-v1.patch
>
>
> Creating an issue where the implementation of the new client and server will 
> go. Leaving HBASE-1249 as a discussion forum and will put code and patches 
> here.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to