天天看点

shardingSphere学习一

分库:将一个数据库拆分成多个提供不同业务数据处理能力的数据库

分表:通常是在一张单表的数据过大的时候,会考虑对单表进行拆分

通常需要梳理拆分范围和影响范围,进行合理的数据库和表拆分。

在shardingSphere1.0中,在看到mybatis的列子中,我们可以看到需要配置:mybatisContext.xml和shardingContext.xml。

shardingSphere学习一

而在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:

shardingSphere学习一

不管是分库还是分表都是有三个重要的方法:算法

shardingSphere学习一
doEqualSharding 做等片
doInSharding 做分片
doBetweenSharding 做范围分片
           

复制

数据源规则dataSourceRule:

通常会将其分成多个数据库,不同的数据源有不同的key和引用值ref-value
           

复制

也即在mybatis的example中,我们看到了配置shardingContext.xml中配置了数据源,数据源采用的是多数据源,而分片的方式分为数据库分片和表分片。两者都有自己的分片算法,而分片算法中都有三个重要的方法:做等片、做分配、做范围分片。