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