[ 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