天天看點

ShardingSphere的分片政策ShardingSphere的分片政策

ShardingSphere的分片政策

本篇文章源碼基于4.0.1版本

上篇文章我們說到ShardingSphere通過路由引擎根據路由規則擷取資料節點,然後生成路由結果,具體路由政策在ShardingStrategy的實作類中展現,這篇文章就說說ShardingSphere的分片政策,配置設定政策可以通過工廠類ShardingStrategyFactory來建立執行個體,這一塊的代碼在sharding-core子產品的sharding-core-common子子產品中

分片政策的組成

分片政策由分片算法和分片鍵組成,分片算法對應是接口是ShardingAlgorithm,分片政策類中會調用分片算法來進行分片處理

複合分片政策

複合分片政策對應的實作類是ComplexShardingStrategy,由于表與表之間存在複雜的關系,ShardingSphere沒有幫我們實作分片算法,而是提供ComplexKeysShardingAlgorithm接口,由我們來自定義實作複合分片的算法。

Hint分片政策

Hint分片政策對應的實作類是HintShardingStrategy,它是根據Hint進行路由,我們在講強制路由的時候就使用的這種分片政策,它的doSharding()方法中調用了HintShardingAlgorithm的分片算法,一般我們會自定義HintShardingAlgorithm的實作類,通過 HintShardingStrategyConfiguration加載了HintShardingAlgorithm執行個體

行表達式分片政策

行表達式分片政策對應的實作類是InlineShardingStrategy,它是根據分片鍵和行表達式來進行配置設定,行表達式通過Groovy進行解析,

不分片政策

NoneShardingStrategy是不分片政策的實作類,方法中不執行任何的路由操作。

标準分片政策

标準分片政策對應的實作類是StandardShardingStrategy,它的成員變量有配置設定列shardingColumn,分片算法有精确比對分片算法PreciseShardingAlgorithm和範圍比對配置設定算法RangeShardingAlgorithm兩種

精确比對分片算法

精确比對分片算法對應的接口是PreciseShardingAlgorithm,主要處理的是配置設定鍵的in和等号的SQL語句,它作為一個接口,實作類有:

  1. 對資料庫進行模運算分片算法PreciseModuloDatabaseShardingAlgorithm,根據分片值對2進行取模運算
  2. 對表進行模運算分片算法PreciseModuloTableShardingAlgorithm,根據分片值對4進行取模運算

範圍比對配置設定算法

  1. 對資料庫進行模運算分片算法RangeModuloDatabaseShardingAlgorithm,根據最小值和最大值的範圍周遊,根據分片值對2進行取模運算
  2. 對表進行模運算分片算法RangeModuloTableShardingAlgorithm,根據最小值和最大值的範圍周遊,根據分片值對4進行取模運算

總結

❤️ 感謝大家

  1. 歡迎關注我❤️,點贊👍🏻,評論🤤,轉發🙏
  2. 關注

    盼盼小課堂

    ,定期為你推送好文,還有群聊不定期抽獎活動,可以暢所欲言,與大神們一起交流,一起學習。
  3. 有不當之處歡迎批評指正。