You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "Erik Holstad (JIRA)" <ji...@apache.org> on 2009/04/25 00:31:30 UTC

[jira] Updated: (HBASE-1304) New client server implementation of how gets and puts are handled.

     [ 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.