[ 
https://issues.apache.org/jira/browse/HBASE-3851?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Karthick Sankarachary updated HBASE-3851:
-----------------------------------------

    Attachment: HBASE-3851.patch

> 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

Reply via email to