分库:将一个数据库拆分成多个提供不同业务数据处理能力的数据库
分表:通常是在一张单表的数据过大的时候,会考虑对单表进行拆分
通常需要梳理拆分范围和影响范围,进行合理的数据库和表拆分。
在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中配置了数据源,数据源采用的是多数据源,而分片的方式分为数据库分片和表分片。两者都有自己的分片算法,而分片算法中都有三个重要的方法:做等片、做分配、做范围分片。