[jira] [Updated] (HBASE-5229) Provide basic building blocks for multi-row local transactions.

2012-02-08 Thread Lars Hofhansl (Updated) (JIRA)

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

Lars Hofhansl updated HBASE-5229:
-

Status: Open  (was: Patch Available)

 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




[jira] [Updated] (HBASE-5229) Provide basic building blocks for multi-row local transactions.

2012-02-08 Thread Lars Hofhansl (Updated) (JIRA)

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

Lars Hofhansl updated HBASE-5229:
-

Attachment: 5229-final.txt

Final patch for reference

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




[jira] [Updated] (HBASE-5229) Provide basic building blocks for multi-row local transactions.

2012-02-07 Thread Lars Hofhansl (Updated) (JIRA)

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

Lars Hofhansl updated HBASE-5229:
-

Description: 
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.

  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.

Summary: Provide basic building blocks for multi-row local 
transactions.  (was: Explore building blocks for multi-row local 
transactions.)

 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