[ 
https://issues.apache.org/jira/browse/HBASE-4605?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13139110#comment-13139110
 ] 

Jesse Yates commented on HBASE-4605:
------------------------------------

bq. To preserve order of constraints, we can embed their ordinal in HTD key 
prefix, such as "constraint 1 $", "constraint 2 $", etc.

Exactly what I was planning on doing and where I got the inspiration

{quote}
To enable/disable a constraint, the value (a Configuration object) for the key 
can carry a special entry:
"hbase.constraint.enabled" -> true/false
{quote}

I was thinking I would just remove the constraint processor from the list of 
coprocessors. This also gives you complete control over runtime slowdown - if 
you want to enable constraints, you pay a price, but if not it shouldn't hurt 
the system speed at all. This would be a good idiom for later, CP based 
features to follow.
If we have the true/false it would require doing checking on the regionserver 
to see if constraints are enabled AND that the CP is loaded to have the same 
potential, which leads to a lot of code bloat.
                
> Constraints
> -----------
>
>                 Key: HBASE-4605
>                 URL: https://issues.apache.org/jira/browse/HBASE-4605
>             Project: HBase
>          Issue Type: Improvement
>          Components: client, coprocessors
>    Affects Versions: 0.94.0
>            Reporter: Jesse Yates
>            Assignee: Jesse Yates
>         Attachments: constraint_as_cp.txt, java_Constraint_v2.patch
>
>
> From Jesse's comment on dev:
> {quote}
> What I would like to propose is a simple interface that people can use to 
> implement a 'constraint' (matching the classic database definition). This 
> would help ease of adoption by helping HBase more easily check that box, help 
> minimize code duplication across organizations, and lead to easier adoption.
> Essentially, people would implement a 'Constraint' interface for checking 
> keys before they are put into a table. Puts that are valid get written to the 
> table, but if not people can will throw an exception that gets propagated 
> back to the client explaining why the put was invalid.
> Constraints would be set on a per-table basis and the user would be expected 
> to ensure the jars containing the constraint are present on the machines 
> serving that table.
> Yes, people could roll their own mechanism for doing this via coprocessors 
> each time, but this would make it easier to do so, so you only have to 
> implement a very minimal interface and not worry about the specifics.
> {quote}

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