hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "stack (JIRA)" <j...@apache.org>
Subject [jira] Updated: (HBASE-880) Improve the current client API by creating new container classes
Date Tue, 25 Nov 2008 21:27:44 GMT

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

stack updated HBASE-880:

    Attachment: 880proposal5.png

New proposal.  All Row Operations subclass HbaseMapWritable via new intermediary classes,
ColumnCellMap and ColumnCellBoundsMap.  New CellBounds class is used to describe the boundary
around a set of Cells effected by a Get or Delete.  Lock has been moved out of Get, Delete
and Put and instead made a parameter on commit (Could move lock back in if wanted).

Other notables:

    Get g = new Get(row);
    g.put(column, new CellBounds(timestamp, numVersions));
    // or
    CellBounds boundary = new CellBounds(ts);
    for (column: columns) {
      g.put(column, boundary);
    // then commit.
    Collection<Cell> cells = getRow(g).values();
    // Delete works same as above.

    // For Put.
    Put p = new Put(row);
    for (column: columns) {
      p.put(column, new Cell(somevalue));

 RowResult could subclass Put if wanted (or vice-versa).  Same for Get and Delete.

Scanners need to be rewired to use CellBounds.  Haven't done that yet.

> Improve the current client API by creating new container classes
> ----------------------------------------------------------------
>                 Key: HBASE-880
>                 URL: https://issues.apache.org/jira/browse/HBASE-880
>             Project: Hadoop HBase
>          Issue Type: Improvement
>          Components: client
>            Reporter: Jean-Daniel Cryans
>            Assignee: Jean-Daniel Cryans
>             Fix For: 0.19.0
>         Attachments: 880proposal4plus-v2.patch, 880proposal4plus.patch, 880proposal5.png,
hbase-880-patch.jpg, hbase-880-proposal4.patch, hbase-880-v1.patch, hbase-880-v2.patch, hbase_client_classes.png,
NewCilentAPIProposoal4.gif, proposal2.jpg, proposed.jpg
> The current API does not scale very well. For each new feature, we have to add many methods
to take care of all the overloads. Also, the need to batch row operations (gets, inserts,
deletes) implies that we have to manage some "entities" like we are able to do with BatchUpdate
but not with the other operations. The RowLock should be an attribute of such an entity.
> The scope of this jira is only to replace current API with another feature-compatible
one, other methods will be added in other issues.

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

View raw message