混合规则

混合配置的规则项之间的叠加使用是通过数据源名称和表名称关联的。

如果前一个规则是面向数据源聚合的,下一个规则在配置数据源时,则需要使用前一个规则配置的聚合后的逻辑数据源名称; 同理,如果前一个规则是面向表聚合的,下一个规则在配置表时,则需要使用前一个规则配置的聚合后的逻辑表名称。

配置项说明

  1. dataSources: # 配置真实存在的数据源作为名称
  2. write_ds:
  3. # ...省略具体配置
  4. read_ds_0:
  5. # ...省略具体配置
  6. read_ds_1:
  7. # ...省略具体配置
  8. rules:
  9. - !SHARDING # 配置数据分片规则
  10. tables:
  11. t_user:
  12. actualDataNodes: ds.t_user_${0..1} # 数据源名称 `ds` 使用读写分离配置的逻辑数据源名称
  13. tableStrategy:
  14. standard:
  15. shardingColumn: user_id
  16. shardingAlgorithmName: t_user_inline
  17. shardingAlgorithms:
  18. t_user_inline:
  19. type: INLINE
  20. props:
  21. algorithm-expression: t_user_${user_id % 2}
  22. - !ENCRYPT # 配置数据加密规则
  23. tables:
  24. t_user: # 表名称 `t_user` 使用数据分片配置的逻辑表名称
  25. columns:
  26. pwd:
  27. plainColumn: plain_pwd
  28. cipherColumn: cipher_pwd
  29. encryptorName: encryptor_aes
  30. encryptors:
  31. encryptor_aes:
  32. type: aes
  33. props:
  34. aes-key-value: 123456abc
  35. - !READWRITE_SPLITTING # 配置读写分离规则
  36. dataSources:
  37. ds: # 读写分离的逻辑数据源名称 `ds` 用于在数据分片中使用
  38. writeDataSourceName: write_ds # 使用真实存在的数据源名称 `write_ds`
  39. readDataSourceNames:
  40. - read_ds_0 # 使用真实存在的数据源名称 `read_ds_0`
  41. - read_ds_1 # 使用真实存在的数据源名称 `read_ds_1`
  42. loadBalancerName: roundRobin
  43. loadBalancers:
  44. roundRobin:
  45. type: ROUND_ROBIN
  46. props:
  47. sql-show: true