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 3893A985E for ; Wed, 8 Feb 2012 00:31:22 +0000 (UTC) Received: (qmail 18152 invoked by uid 500); 8 Feb 2012 00:31:22 -0000 Delivered-To: apmail-hbase-issues-archive@hbase.apache.org Received: (qmail 18110 invoked by uid 500); 8 Feb 2012 00:31:21 -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 18102 invoked by uid 99); 8 Feb 2012 00:31:21 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 08 Feb 2012 00:31:21 +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; Wed, 08 Feb 2012 00:31:19 +0000 Received: from hel.zones.apache.org (hel.zones.apache.org [140.211.11.116]) by hel.zones.apache.org (Postfix) with ESMTP id C26B71A8A92 for ; Wed, 8 Feb 2012 00:30:59 +0000 (UTC) Date: Wed, 8 Feb 2012 00:30:59 +0000 (UTC) From: "Lars Hofhansl (Issue Comment Edited) (JIRA)" To: issues@hbase.apache.org Message-ID: <1864909950.11744.1328661059797.JavaMail.tomcat@hel.zones.apache.org> In-Reply-To: <1174652881.54649.1326934359800.JavaMail.tomcat@hel.zones.apache.org> Subject: [jira] [Issue Comment Edited] (HBASE-5229) Provide basic building blocks for "multi-row" local transactions. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/HBASE-5229?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13202996#comment-13202996 ] Lars Hofhansl edited comment on HBASE-5229 at 2/8/12 12:29 AM: --------------------------------------------------------------- bq. On 2012-02-07 23:49:19, Jesse Yates wrote: bq. > http://svn.apache.org/repos/asf/hbase/trunk/src/test/java/org/apache/hadoop/hbase/client/MultiRowMutationEndpoint.java, line 39 bq. > bq. > bq. > This could be good to put into client.coprocessor, rather than client (when you make the move over). bq. bq. Michael Stack wrote: bq. This is a good point. Heh, I am way ahead of you guys :) Suggested already on the jira. Will have a new patch soon, hopefully the last revision. I would like to keep the test in TestFromClientSide, though. - Lars was (Author: jiraposter@reviews.apache.org): bq. On 2012-02-07 23:49:19, Jesse Yates wrote: bq. > http://svn.apache.org/repos/asf/hbase/trunk/src/test/java/org/apache/hadoop/hbase/client/MultiRowMutationEndpoint.java, line 39 bq. > bq. > bq. > This could be good to put into client.coprocessor, rather than client (when you make the move over). bq. bq. Michael Stack wrote: bq. This is a good point. Heh, I am way ahead of you guys :) Suggested already on the jira. Will have a new patch soon, hopefully the last revision. I would like to keep the test in TestFromClientSide, though. - Lars ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/3748/#review4886 ----------------------------------------------------------- On 2012-02-07 19:41:16, Lars Hofhansl wrote: bq. bq. ----------------------------------------------------------- bq. This is an automatically generated e-mail. To reply, visit: bq. https://reviews.apache.org/r/3748/ bq. ----------------------------------------------------------- bq. bq. (Updated 2012-02-07 19:41:16) bq. bq. bq. Review request for hbase. bq. bq. bq. Summary bq. ------- bq. bq. This builds on HBASE-3584, HBASE-5203, and HBASE-5304. bq. bq. Multiple Rows can be locked and applied atomically as long as the application ensures that all rows reside in the same Region (by presplitting or a custom RegionSplitPolicy). bq. At SFDC we can use this to colocate subsets of a tenant's data and allow atomic operations over these subsets. bq. bq. Obviously this is an advanced features and this prominently called out in the Javadoc. bq. bq. bq. This addresses bug HBASE-5229. bq. https://issues.apache.org/jira/browse/HBASE-5229 bq. bq. bq. Diffs bq. ----- bq. bq. http://svn.apache.org/repos/asf/hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java 1241350 bq. http://svn.apache.org/repos/asf/hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java 1241350 bq. http://svn.apache.org/repos/asf/hbase/trunk/src/test/java/org/apache/hadoop/hbase/client/MultiRowMutationEndpoint.java PRE-CREATION bq. http://svn.apache.org/repos/asf/hbase/trunk/src/test/java/org/apache/hadoop/hbase/client/MultiRowMutationProtocol.java PRE-CREATION bq. http://svn.apache.org/repos/asf/hbase/trunk/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java 1241350 bq. http://svn.apache.org/repos/asf/hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.java 1241350 bq. bq. Diff: https://reviews.apache.org/r/3748/diff bq. bq. bq. Testing bq. ------- bq. bq. Tests added to TestFromClientSide and TestAtomicOperation bq. bq. bq. Thanks, bq. bq. Lars bq. bq. > Provide basic building blocks for "multi-row" local transactions. > ----------------------------------------------------------------- > > Key: HBASE-5229 > URL: https://issues.apache.org/jira/browse/HBASE-5229 > Project: HBase > Issue Type: New Feature > Components: client, regionserver > Reporter: Lars Hofhansl > Assignee: Lars Hofhansl > Fix For: 0.94.0 > > Attachments: 5229-endpoint.txt, 5229-multiRow-v2.txt, 5229-multiRow.txt, 5229-seekto-v2.txt, 5229-seekto.txt, 5229.txt > > > In the final iteration, this issue provides a generalized, public mutateRowsWithLocks method on HRegion, that can be used by coprocessors to implement atomic operations efficiently. > Coprocessors are already region aware, which makes this is a good pairing of APIs. This feature is by design not available to the client via the HTable API. > It took a long time to arrive at this and I apologize for the public exposure of my (erratic in retrospect) thought processes. > Was: > HBase should provide basic building blocks for multi-row local transactions. Local means that we do this by co-locating the data. Global (cross region) transactions are not discussed here. > After a bit of discussion two solutions have emerged: > 1. Keep the row-key for determining grouping and location and allow efficient intra-row scanning. A client application would then model tables as HBase-rows. > 2. Define a prefix-length in HTableDescriptor that defines a grouping of rows. Regions will then never be split inside a grouping prefix. > #1 is true to the current storage paradigm of HBase. > #2 is true to the current client side API. > I will explore these two with sample patches here. > -------------------- > Was: > As discussed (at length) on the dev mailing list with the HBASE-3584 and HBASE-5203 committed, supporting atomic cross row transactions within a region becomes simple. > I am aware of the hesitation about the usefulness of this feature, but we have to start somewhere. > Let's use this jira for discussion, I'll attach a patch (with tests) momentarily to make this concrete. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira