Logo
Readwrite-Splitting

Read/write Splitting #

Syntax #

CREATE READWRITE_SPLITTING RULE readwriteSplittingRuleDefinition [, readwriteSplittingRuleDefinition] ...

ALTER READWRITE_SPLITTING RULE readwriteSplittingRuleDefinition [, readwriteSplittingRuleDefinition] ...

DROP READWRITE_SPLITTING RULE ruleName [, ruleName] ...

readwriteSplittingRuleDefinition:
    ruleName ([staticReadwriteSplittingRuleDefinition | dynamicReadwriteSplittingRuleDefinition] 
              [, loadBalancerDefinition])

staticReadwriteSplittingRuleDefinition:
    WRITE_STORAGE_UNIT=storageUnitName, READ_STORAGE_UNITS(storageUnitName [, storageUnitName] ... )

dynamicReadwriteSplittingRuleDefinition:
    AUTO_AWARE_RESOURCE=autoAwareResourceName [, WRITE_DATA_SOURCE_QUERY_ENABLED=writeDataSourceQueryEnabled]

loadBalancerDefinition:
    TYPE(NAME=loadBalancerType [, PROPERTIES([algorithmProperties] )] )

algorithmProperties:
    algorithmProperty [, algorithmProperty] ...

algorithmProperty:
    key=value

writeDataSourceQueryEnabled:
    TRUE | FALSE

Parameters Explained #

nameDateTypeDescription
ruleNameIDENTIFIERRule name
storageUnitNameIDENTIFIERRegistered data source name
autoAwareResourceNameIDENTIFIERDatabase discovery logic data source name
writeDataSourceQueryEnabledBOOLEANAll read data source are offline, write data source whether the data source is responsible for read traffic
loadBalancerTypeSTRINGLoad balancing algorithm type

Notes #

  • Support the creation of static readwrite-splitting rules and dynamic readwrite-splitting rules
  • Dynamic readwrite-splitting rules rely on database discovery rules
  • loadBalancerType specifies the load balancing algorithm type, please refer to Load Balance Algorithm
  • Duplicate ruleName will not be created

Example #

// Static
CREATE READWRITE_SPLITTING RULE ms_group_0 (
WRITE_STORAGE_UNIT=write_ds,
READ_STORAGE_UNITS(read_ds_0,read_ds_1),
TYPE(NAME="random")
);

// Dynamic
CREATE READWRITE_SPLITTING RULE ms_group_1 (
AUTO_AWARE_RESOURCE=group_0,
WRITE_DATA_SOURCE_QUERY_ENABLED=false,
TYPE(NAME="random")
);

ALTER READWRITE_SPLITTING RULE ms_group_1 (
WRITE_STORAGE_UNIT=write_ds,
READ_STORAGE_UNITS(read_ds_0,read_ds_1,read_ds_2),
TYPE(NAME="random")
);

DROP READWRITE_SPLITTING RULE ms_group_1;