分庫:将一個資料庫拆分成多個提供不同業務資料處理能力的資料庫
分表:通常是在一張單表的資料過大的時候,會考慮對單表進行拆分
通常需要梳理拆分範圍和影響範圍,進行合理的資料庫和表拆分。
在shardingSphere1.0中,在看到mybatis的列子中,我們可以看到需要配置:mybatisContext.xml和shardingContext.xml。
而在mybatisContext.xml中:
導入shardingContext.xml
sqlSessionFactoryBean中配置了兩個配置:資料源(shardingDataSource分片資料源)、mapperLocations(mapper.xml的位置)
mapper需要掃描的基包、sqlSessionFactoryBeanName
複制
是以我們需要重點關注shardingContext.xml中的資訊。可以看到在shardingContext.xml中配置的事務管理器中,資料源配置是shardingDateSource分片資料源。而配置設定資料源包含的資訊:
配置設定規則、資料源中繼資料、分片配置、度量上下文
複制
分片規則的xml中包含的構造方法:分庫規則、分表規則,分庫政策、分表政策,同時從分片規則類中,我們可以看到對于的規則:
資料源規則、表配置設定規則、綁定表規則、資料庫分片政策、表分片政策
複制
而分片政策的方法:
1.TableShardingStrategy 表分片政策 SingleKeyModuloTableShardingAlgorithm 單key模表分片算法
2.DatabaseShardingStrategy 資料源分片政策 SingleKeyModuloDatabaseShardingAlgorithm 單key模庫分片算法
複制
如圖所示,圖檔來自shardingSphere的github:
、
不管是分庫還是分表都是有三個重要的方法:算法
doEqualSharding 做等片
doInSharding 做分片
doBetweenSharding 做範圍分片
複制
資料源規則dataSourceRule:
通常會将其分成多個資料庫,不同的資料源有不同的key和引用值ref-value
複制
也即在mybatis的example中,我們看到了配置shardingContext.xml中配置了資料源,資料源采用的是多資料源,而分片的方式分為資料庫分片和表分片。兩者都有自己的分片算法,而分片算法中都有三個重要的方法:做等片、做配置設定、做範圍分片。