简介

Sharding-JDBC是ShardingSphere的第一个产品,也是ShardingSphere的前身。
它定位为轻量级Java框架,在Java的JDBC层提供的额定服务。它应用客户端直连数据库,以jar包模式提供服务,无需额定部署和依赖,可了解为增强版的JDBC驱动,齐全兼容JDBC和各种ORM框架。

  • 实用于任何基于JDBC的ORM框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template或间接应用JDBC。
  • 反对任何第三方的数据库连接池,如:DBCP, C3P0, BoneCP, Druid, HikariCP等。
  • 反对任意实现JDBC标准的数据库。目前反对MySQL,Oracle,SQLServer,PostgreSQL以及任何遵循SQL92规范的数据库。

比照

Sharding-JDBCSharding-ProxySharding-Sidecar
数据库任意MySQL/PostgreSQLMySQL/PostgreSQL
连贯耗费数
异构语言仅Java任意任意
性能损耗低损耗略高损耗低
无中心化
动态入口

Sharding-JDBC的劣势在于对Java利用的友好度。

内部结构

黄色局部

图中黄色局部示意的是Sharding-JDBC的入口API,采纳工厂办法的模式提供。
目前有ShardingDataSourceFactory和MasterSlaveDataSourceFactory两个工厂类。ShardingDataSourceFactory用于创立分库分表或分库分表+读写拆散的JDBC驱动,MasterSlaveDataSourceFactory用于创立独立应用读写拆散的JDBC驱动。

蓝色局部

图中蓝色局部示意的是Sharding-JDBC的配置对象,提供灵便多变的配置形式。
ShardingRuleConfiguration是分库分表配置的外围和入口,它能够蕴含多个TableRuleConfiguration和MasterSlaveRuleConfiguration。每一组雷同规定分片的表配置一个TableRuleConfiguration。如果须要分库分表和读写拆散独特应用,每一个读写拆散的逻辑库配置一个MasterSlaveRuleConfiguration。
每个TableRuleConfiguration对应一个ShardingStrategyConfiguration,它有5中实现类可供选择。

仅读写拆散应用MasterSlaveRuleConfiguration即可。

红色局部

图中红色局部示意的是外部对象,由Sharding-JDBC外部应用,利用开发者无需关注。Sharding-JDBC通过ShardingRuleConfiguration和MasterSlaveRuleConfiguration生成真正供ShardingDataSource和MasterSlaveDataSource应用的规定对象。ShardingDataSource和MasterSlaveDataSource实现了DataSource接口,是JDBC的残缺实现计划。

初始化流程

  1. 配置Configuration对象。
  2. 通过Factory对象将Configuration对象转化为Rule对象。
  3. 通过Factory对象将Rule对象与DataSource对象拆卸。
  4. Sharding-JDBC应用DataSource对象进行分库。

应用约定

org.apache.shardingsphere.apiorg.apache.shardingsphere.shardingjdbc.api 包中的类是面向用户的API,每次批改都会在release notes中明确申明。
其余包中的类属于外部实现,可能随时进行调整,请勿间接应用