Shadow

Syntax

  1. CREATE SHADOW RULE shadowRuleDefinition [, shadowRuleDefinition] ...
  2. ALTER SHADOW RULE shadowRuleDefinition [, shadowRuleDefinition] ...
  3. CREATE SHADOW ALGORITHM shadowAlgorithm [, shadowAlgorithm] ...
  4. ALTER SHADOW ALGORITHM shadowAlgorithm [, shadowAlgorithm] ...
  5. DROP SHADOW RULE ruleName [, ruleName] ...
  6. DROP SHADOW ALGORITHM algorithmName [, algorithmName] ...
  7. CREATE DEFAULT SHADOW ALGORITHM NAME = algorithmName
  8. shadowRuleDefinition: ruleName(resourceMapping, shadowTableRule [, shadowTableRule] ...)
  9. resourceMapping: SOURCE=resourceName, SHADOW=resourceName
  10. shadowTableRule: tableName(shadowAlgorithm [, shadowAlgorithm] ...)
  11. shadowAlgorithm: ([algorithmName, ] TYPE(NAME=shadowAlgorithmType, PROPERTIES([algorithmProperties] ...)))
  12. algorithmProperties: algorithmProperty [, algorithmProperty] ...
  13. algorithmProperty: key=value

Parameters Explained

nameDateTypeDescription
ruleNameIDENTIFIERRule name
resourceNameIDENTIFIERResource name
tableNameIDENTIFIERShadow table name
algorithmNameIDENTIFIERShadow algorithm name
shadowAlgorithmTypeSTRINGShadow algorithm type

Notes

  • Duplicate ruleName cannot be created
  • resourceMapping specifies the mapping relationship between the source database and the shadow library. You need to use the resource managed by RDL, please refer to resource
  • shadowAlgorithm can act on multiple shadowTableRule at the same time
  • If algorithmName is not specified, it will be automatically generated according to ruleName, tableName and shadowAlgorithmType
  • shadowAlgorithmType currently supports VALUE_MATCH, REGEX_MATCH and SIMPLE_HINT
  • shadowTableRule can be reused by different shadowRuleDefinition, so when executing DROP SHADOW RULE, the corresponding shadowTableRule will not be removed
  • shadowAlgorithm can be reused by different shadowTableRule, so when executing ALTER SHADOW RULE, the corresponding shadowAlgorithm will not be removed

Example

  1. CREATE SHADOW RULE shadow_rule(
  2. SOURCE=demo_ds,
  3. SHADOW=demo_ds_shadow,
  4. t_order((simple_hint_algorithm, TYPE(NAME="SIMPLE_HINT", PROPERTIES("shadow"="true", "foo"="bar"))),(TYPE(NAME="REGEX_MATCH", PROPERTIES("operation"="insert","column"="user_id", "regex"='[1]')))),
  5. t_order_item((TYPE(NAME="VALUE_MATCH", PROPERTIES("operation"="insert","column"="user_id", "value"='1')))));
  6. ALTER SHADOW RULE shadow_rule(
  7. SOURCE=demo_ds,
  8. SHADOW=demo_ds_shadow,
  9. t_order((simple_hint_algorithm, TYPE(NAME="SIMPLE_HINT", PROPERTIES("shadow"="true", "foo"="bar"))),(TYPE(NAME="REGEX_MATCH", PROPERTIES("operation"="insert","column"="user_id", "regex"='[1]')))),
  10. t_order_item((TYPE(NAME="VALUE_MATCH", PROPERTIES("operation"="insert","column"="user_id", "value"='1')))));
  11. CREATE SHADOW ALGORITHM
  12. (simple_hint_algorithm, TYPE(NAME="SIMPLE_HINT", PROPERTIES("shadow"="true", "foo"="bar"))),
  13. (user_id_match_algorithm, TYPE(NAME="REGEX_MATCH",PROPERTIES("operation"="insert", "column"="user_id", "regex"='[1]')));
  14. ALTER SHADOW ALGORITHM
  15. (simple_hint_algorithm, TYPE(NAME="SIMPLE_HINT", PROPERTIES("shadow"="false", "foo"="bar"))),
  16. (user_id_match_algorithm, TYPE(NAME="VALUE_MATCH",PROPERTIES("operation"="insert", "column"="user_id", "value"='1')));
  17. DROP SHADOW RULE shadow_rule;
  18. DROP SHADOW ALGORITHM simple_hint_algorithm;
  19. CREATE DEFAULT SHADOW ALGORITHM NAME = simple_hint_algorithm;