Return-Path: X-Original-To: apmail-hbase-issues-archive@www.apache.org Delivered-To: apmail-hbase-issues-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id BEE3524A9 for ; Tue, 3 May 2011 23:38:42 +0000 (UTC) Received: (qmail 66201 invoked by uid 500); 3 May 2011 23:38:42 -0000 Delivered-To: apmail-hbase-issues-archive@hbase.apache.org Received: (qmail 66168 invoked by uid 500); 3 May 2011 23:38:42 -0000 Mailing-List: contact issues-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list issues@hbase.apache.org Received: (qmail 66160 invoked by uid 99); 3 May 2011 23:38:42 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 03 May 2011 23:38:42 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,T_RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.116] (HELO hel.zones.apache.org) (140.211.11.116) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 03 May 2011 23:38:41 +0000 Received: from hel.zones.apache.org (hel.zones.apache.org [140.211.11.116]) by hel.zones.apache.org (Postfix) with ESMTP id 1DEFEC041F for ; Tue, 3 May 2011 23:38:03 +0000 (UTC) Date: Tue, 3 May 2011 23:38:03 +0000 (UTC) From: "Karthick Sankarachary (JIRA)" To: issues@hbase.apache.org Message-ID: <753334129.20143.1304465883119.JavaMail.tomcat@hel.zones.apache.org> Subject: [jira] [Created] (HBASE-3851) A Random-Access Column Object Model MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 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 Fix For: 0.92.0 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 {{}} 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