[ https://issues.apache.org/jira/browse/HBASE-880?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12635586#action_12635586 ]
jimk edited comment on HBASE-880 at 9/29/08 4:25 PM: -------------------------------------------------------------- Ok, scratch my comment above which redesigns RowOperation and adds new classes. RowOperation is basically fine as it is - both get and update currently support one time stamp so keeping it in RowOperation is fine. - however do add another constructor (or two) in which you can specify the RowLock. I would eliminate RowSingleColumnOperation and RowGetRow and modify RowGet to have {code} private byte[][] columns; private int numVersions; {code} (to support HBASE-847 and its sub tasks we could add another member, private long startTimestamp, to support getting values between two timestamps) public Cell[] get(RowGet) would ensure that columns.length == 1 public RowResult getRow(RowGet) could be changed to return SortedMap<byte[], Cell> Eliminate RowDelete. Deprecate BatchOperation. Rename RowUpdate to RowMutation. Add new class similar to BatchOperation and ColumnMutation above so that it can handle both updates and deletes. (It could be a private inner class to RowMutation) To support HBASE-847, we'd need to add numVersions and startTimestamp to this class. This would eliminate deleteAll and deleteFamily and all changes to a row would be done via commit. That sound better? was (Author: jimk): Ok, scratch my comment above which redesigns RowOperation and adds new classes. RowOperation is basically fine as it is - both get and update currently support one time stamp so keeping it in RowOperation is fine. - however do add another constructor (or two) in which you can specify the RowLock. I would eliminate RowSingleColumnOperation and RowGetRow and modify RowGet to have {code} private byte[][] columns; private int numVersions; {code} (to support HBASE-847and its sub tasks we could add another member, private long startTimestamp, to support getting values between two timestamps) public Cell[] get(RowGet) would ensure that columns.length == 1 public RowResult getRow(RowGet) could be changed to return HBaseMapWritable<byte[], Cell> Eliminate RowDelete. Deprecate BatchOperation. Rename RowUpdate to RowMutation. Add new class similar to BatchOperation and ColumnMutation above so that it can handle both updates and deletes. (It could be a private inner class to RowMutation) To support HBASE-847, we'd need to add numVersions and startTimestamp to this class. This would eliminate deleteAll and deleteFamily and all changes to a row would be done via commit. That sound better? > 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: hbase-880-v1.patch, hbase-880-v2.patch > > > 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.