[ https://issues.apache.org/jira/browse/HBASE-880?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12636414#action_12636414 ]
stack commented on HBASE-880: ----------------------------- Thinking on it, the 'Doğacan Güney - 02/Oct/08 02:27 AM' suggestion looks like an improvement. We'd just move column/family specification out of Scope and have it supplied instead as Map key (Map should probably be Sorted? An HbaseMapWritable?). Here is one reason why we might NOT do this: Clients might want to specify multiple scopes against a single column: Imagine an application that adds hundreds of updates to a column each day. Client then wants to query for every entry made at 12:00 over the last week or every hour over last day. A 'workaround' would be to batch a set of Gets with an entry for every update wanted. Another objection I was going to make but having thought about it, I've not raised it since it verges on the 'silly' relates to the Scanner API. Getting a scanner using a Scope that does not include column/family name would make it impossible specifying a scanner that took multiple columns and for each its own column Scope. Do we want to support this? If not, the new API would allow a single Scope across all columns. On the one hand the Doğacan suggestion makes Get/Delete look like Put in that they too take maps keyed by columns. Thats good. On other hand, we limit the perverse things a Client might want to do all in the one row Get/Delete context. I'm +1 on the Doğacan suggestion because it reduces complexity (I do not want to be in a position where we are debugging a scan across 100 columns each with 100 Scopes and a user 'thinks' its not doing the right thing). > 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-patch.jpg, 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.