ShardingSphere——分片及策略:
https://blog.csdn.net/weixin_38910645/article/details/107538848
Sharding-JDBC:可理解爲增強版的JDBC驅動,完全兼容JDBC和各種ORM框架。
Sharding-Proxy:定位爲數據庫代理端,提供封裝了數據庫二進制協議的服務端版本,用於完成對異構語言的支持。
Sharding-Sidecar:定位爲Kubernetes或Mesos的雲原生數據庫代理
Sharding-Sphere 配置文件支持properties,yml,Spring XML,JavaBean 多種配置方式。
配置信息包括:
1,Datasource 名稱
2,每個Datasource的連接信息
3,分庫策略
4,分表策略(單個表,多個表策略,主鍵策略)
5,讀寫分離配置
6,數據治理配置
分片策略:
一,分片鍵 用於分片的數據庫字段,是將數據庫(或者表)拆分的關鍵字段。(原始表-分片表)
二,分片算法 通過分片算法將數據分片。
1,行表達策略 InlineShardingStrategy 提供對SQL語句中的=和IN的分片操作支持,只支持單分片鍵。
2,標準策略 StandardShardingStrategy 只支持單分片鍵,提供PreciseShardingAlgorithm和RangeShardingAlgorithm兩個分片算法。
PreciseShardingAlgorithm是必選的,用於處理=和IN的分片。RangeShardingAlgorithm是可選的,用於處理BETWEEN AND, >, <, >=, <=分片,如果不配置RangeShardingAlgorithm,SQL中的BETWEEN AND將按照全庫路由處理。
3,複合策略(Complex)
ComplexShardingStrategy支持多分片鍵,由於多分片鍵之間的關係複雜,因此並未進行過多的封裝,而是直接將分片鍵值組合以及分片操作符透傳至分片算法,完全由應用開發者實現,提供最大的靈活度。
4,Hint強制路由(Hint - 英文爲暗示的意思)
有些SQL語句比較複雜比如說有 INSERT INTO … SELECT … FROM,這個時候sqlparser並不支持的時候。這種情況下,可以通過sharding-jdbc的Hint分片策略來實現各種sharding-jdbc不支持的語法的限制。
因爲Hint分片策略是繞過SQL解析的,所以對於這些比較複雜的需要分片的查詢,採用Hint分片策略性能可能會更好。
hint策略需要實現org.apache.shardingsphere.api.sharding.hint.HintShardingAlgorithm接口。
不支持CASE WHEN、HAVING、UNION (ALL) 類似語法。
連接器,分析器,優化器,執行器,
連接器,SQL解析,查詢優化,SQL路由,SQL改寫,執行