乐趣区

关于数据库:ShardingSphere-4x-ShardingJDBC-用户手册

简介

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-JDBC Sharding-Proxy Sharding-Sidecar
数据库 任意 MySQL/PostgreSQL MySQL/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 中明确申明。
其余包中的类属于外部实现,可能随时进行调整,请勿间接应用

退出移动版