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

{code}
    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));
    }
    table.commit(p);
{code}

 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.

Reply via email to