重溫 ShardingSphere 分佈策略

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改寫,執行

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章