Constraints - Enhance checkAndPut to do atomic arbitrary constraint checks
--------------------------------------------------------------------------

                 Key: HBASE-4999
                 URL: https://issues.apache.org/jira/browse/HBASE-4999
             Project: HBase
          Issue Type: Improvement
          Components: client, coprocessors
    Affects Versions: 0.92.0
            Reporter: Suraj Varma
             Fix For: 0.94.0


Related work: HBASE-4605

It would be great if checkAndPut (CAS) can be enhanced to not just use a value 
comparison as a gating factor for the put, but rather have the capability of 
doing arbitrary constraint checks on the column value (where the current 
comparinator approach is a subset of possible constraints that can be checked). 
Commonly used constraints (like comparisons) can be provided out of the box and 
we should have the ability to accept custom constraints set by the client for 
the checkAndPut call. 

One use-case would be the ability to implement something like the below in 
HBase.
Pseudo sql: 
update table-name
set column-name = new-value
where (column-value - new-value) > threshold-value

... where the mutation would go through only if the specified constraint in the 
where clause is true.

Current options include using a co-processor to do 
preCheckAndPut/postCheckAndPut constraint checks - but this is not atomic. i.e. 
the row lock needs to be released by the co-processor before the real 
checkAndPut call, thus not meeting the atomic requirement. 

Everything above is still meant to be at row level (so, no cross-row constraint 
checking is implied here).

And ideal end result would be that an HBase client would be able to specify a 
set of constraints on multiple column qualifiers as part of the checkAndPut 
call. The call goes through if all the constraints are satisfied or doesn't if 
any of the constraints fail. And the above checkAndPut should be atomically 
executed (just like current checkAndPut semantics).



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

        

Reply via email to