hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Todd Lipcon (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-3851) A Random-Access Column Object Model
Date Wed, 04 May 2011 06:12:04 GMT

    [ https://issues.apache.org/jira/browse/HBASE-3851?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13028627#comment-13028627
] 

Todd Lipcon commented on HBASE-3851:
------------------------------------

Sorry, I don't quite understand the motivation of this. As entirely client-side code, this
seems like it might be a useful abstraction for some folks, but could live outside of HBase
proper (eg a github project?)

> A Random-Access Column Object Model
> -----------------------------------
>
>                 Key: HBASE-3851
>                 URL: https://issues.apache.org/jira/browse/HBASE-3851
>             Project: HBase
>          Issue Type: New Feature
>          Components: client
>    Affects Versions: 0.92.0
>            Reporter: Karthick Sankarachary
>            Assignee: Karthick Sankarachary
>            Priority: Minor
>              Labels: HBase, Mapping, Object
>             Fix For: 0.92.0
>
>         Attachments: HBASE-3851.patch
>
>
> By design, a value in HBase is an opaque and atomic byte array. In theory, any arbitrary
type can potentially be represented in terms of such unstructured yet indivisible units. However,
as the complexity of the type increases, so does the need to access it in parts rather than
in whole. That way, one can update parts of a value without reading the whole first. This
calls for transparency in the type of data being accessed.
> To that end, we introduce here a simple object model where each part maps to a {{HTable}}
column and value thereof. Specifically, we define a {{ColumnObject}} interface that denotes
an arbitrary type comprising properties, where each property is a {{<name, value>}}
tuple of byte arrays. In essence, each property maps to a distinct HBase {{KeyValue}}. In
particular, the property's name maps to a column, prefixed by the qualifier and the object's
identifier (assumed to be unique within a column family), and the property's value maps to
the {{KeyValue#getValue()}} of the corresponding column. Furthermore, the {{ColumnObject}}
is marked as a {{RandomAccess}} type to underscore the fact that its properties can be accessed
in and of themselves.
> For starters, we provide three concrete objects - a {{ColumnMap}}, {{ColumnList}} and
{{ColumnSet}} that implement the {{Map}}, {{List}} and {{Set}} interfaces respectively. The
{{ColumnMap}} treats each {{Map.Entry}} as an object property, the {{ColumnList}} stores each
element against its ordinal position, and the {{ColumnSet}} considers each element as the
property name (as well as its value). For the sake of convenience, we also define extensions
to the {{Get}}, {{Put}}, {{Delete}} and {{Result}} classes that are aware of and know how
to deal with such {{ColumnObject}} types.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message