混合规则

背景信息

ShardingSphere 涵盖了很多功能,例如,分库分片、读写分离、数据加密等。这些功能用户可以单独进行使用,也可以配合一起使用,下面是基于 YAML 的参数解释和配置示例。

参数解释

  1. rules:
  2. - !SHARDING
  3. tables:
  4. <logic_table_name>: # 逻辑表名称:
  5. actualDataNodes: # 由逻辑数据源名 + 表名组成(参考 Inline 语法规则)
  6. tableStrategy: # 分表策略,同分库策略
  7. standard:
  8. shardingColumn: # 分片列名称
  9. shardingAlgorithmName: # 分片算法名称
  10. keyGenerateStrategy:
  11. column: # 自增列名称,缺省表示不使用自增主键生成器
  12. keyGeneratorName: # 分布式序列算法名称
  13. defaultDatabaseStrategy:
  14. standard:
  15. shardingColumn: # 分片列名称
  16. shardingAlgorithmName: # 分片算法名称
  17. shardingAlgorithms:
  18. <sharding_algorithm_name>: # 分片算法名称
  19. type: INLINE
  20. props:
  21. algorithm-expression: # INLINE 表达式
  22. t_order_inline:
  23. type: INLINE
  24. props:
  25. algorithm-expression: # INLINE 表达式
  26. keyGenerators:
  27. <key_generate_algorithm_name> (+): # 分布式序列算法名称
  28. type: # 分布式序列算法类型
  29. props: # 分布式序列算法属性配置
  30. - !ENCRYPT
  31. encryptors:
  32. <encrypt_algorithm_name> (+): # 加解密算法名称
  33. type: # 加解密算法类型
  34. props: # 加解密算法属性配置
  35. <encrypt_algorithm_name> (+): # 加解密算法名称
  36. type: # 加解密算法类型
  37. tables:
  38. <table_name>: # 加密表名称
  39. columns:
  40. <column_name> (+): # 加密列名称
  41. cipher:
  42. name: # 密文列名称
  43. encryptorName: # 密文列加密算法名称
  44. assistedQuery (?):
  45. name: # 查询辅助列名称
  46. encryptorName: # 查询辅助列加密算法名称
  47. likeQuery (?):
  48. name: # 模糊查询列名称
  49. encryptorName: # 模糊查询列加密算法名称

配置示例

  1. rules:
  2. - !SHARDING
  3. tables:
  4. t_order:
  5. actualDataNodes: replica_ds_${0..1}.t_order_${0..1}
  6. tableStrategy:
  7. standard:
  8. shardingColumn: order_id
  9. shardingAlgorithmName: t_order_inline
  10. keyGenerateStrategy:
  11. column: order_id
  12. keyGeneratorName: snowflake
  13. defaultDatabaseStrategy:
  14. standard:
  15. shardingColumn: user_id
  16. shardingAlgorithmName: database_inline
  17. shardingAlgorithms:
  18. database_inline:
  19. type: INLINE
  20. props:
  21. algorithm-expression: replica_ds_${user_id % 2}
  22. t_order_inline:
  23. type: INLINE
  24. props:
  25. algorithm-expression: t_order_${order_id % 2}
  26. t_order_item_inline:
  27. type: INLINE
  28. props:
  29. algorithm-expression: t_order_item_${order_id % 2}
  30. keyGenerators:
  31. snowflake:
  32. type: SNOWFLAKE
  33. - !ENCRYPT
  34. encryptors:
  35. aes_encryptor:
  36. type: AES
  37. props:
  38. aes-key-value: 123456abc
  39. assisted_encryptor:
  40. type: MD5
  41. like_encryptor:
  42. type: CHAR_DIGEST_LIKE
  43. tables:
  44. t_encrypt:
  45. columns:
  46. user_id:
  47. cipher:
  48. name: user_cipher
  49. encryptorName: aes_encryptor
  50. assistedQuery:
  51. name: assisted_query_user
  52. encryptorName: assisted_encryptor
  53. likeQuery:
  54. name: like_query_user
  55. encryptorName: like_encryptor
  56. order_id:
  57. cipher:
  58. name: order_cipher
  59. encryptorName: aes_encryptor