Sharding-JDBC概述

一、Sharding-JDBC概述

1.概念及主要功能

  • 随着通信技术的革新,全新领域的应用层出不穷,数据存量随着应用的探索不断增加,数据的存储和计算模式无时无刻不面临着创新。面对交易、大数据、关联分析、物联网等场景越来越细分,单一数据库再也无法适用于所有的应用场景。于此同时,场景内部也愈加细化,相似场景使用不同数据库已成为常态。由此可见,数据库碎片化的趋势已经不可逆转。
  • Sharding-JDBC是Apache ShardingSphere生态圈中一款开源的分布式数据库第三方组件。ShardingSphere由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(规划中)这三款相互独立的产品组成。它们均提供标准化的数据分片、分布式事务和数据库治理功能,适用于Java同构、异构语言、容器、云原生等各种多样化的应用场景。
    Sharding-JDBC定位为轻量级Java框架,在Java的JDBC层提供额外的服务。它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架的使用。
  • 适用于任何基于Java的ORM框架,如JPA、Hibernate、Mybatis、Spring JDBC Template或者直接使用JDBC。
    基于任何第三方数据库连接池,如DBCP、C3P0、BoneCP、Druid、HikariCP等。
    支持任意实现JDBC规范的数据库,目前支持MySQL、Oracle、SQLServer和PostgreSQL。

主要功能

  1. 数据分片
    • 分库
    • 分表
    • 读写分离
    • 分片策略
    • 分布式主键
  2. 分布式事务
    • 标准化的事务接口
    • XA强一致性事务
    • 柔性事务
  3. 数据库治理
    • 配置动态化
    • 编排和治理
    • 数据脱敏
    • 可视化链路追踪

2.内部结构

  • 这部分表示的是Sharding-JDBC的入口API,采用工厂方法的形式提供。
    ShardingDataSourceFactory支持分库分表、读写分离操作。
    MasterSlaveDataSoureceFactory支持读写分离操作。

  • 这部分表示的是Sharding-JDBC的配置对象,提供灵活多变的配置方式。
    TableRuleConfiguration,它包含分片配置规则。
    MasterSlaveRuleConfiguration,它包含的是读写分离的配置规则
    ShardingRuleConfiguration,主入口,它包含多个TableRuleConfiguration,也可以包含多个MasterSlaveRuleConfiguration

  • 这部分表示的是内部对象,由Sharding-JDBC内部使用,应用开发者无需关注。
    Sharding-JDBC通过ShardingRuleConfiguration和MasterSlaveRuleConfiguration生成真正的规则对象,最终生成要使用的DataSource。

  • Sharding-JDBC初始化流程,根据配置信息生成configuration对象,通过Factory将configuration对象转化为Rule对象,通过Factory将Rule对象与DataSource对象进行封装,使用Sharding-JDBC进行分库分表操作。

Sharding-JDBC的使用

  1. 引入maven依赖

     <!-- https://mvnrepository.com/artifact/org.apache.shardingsphere/sharding-jdbc-core -->
    <dependency>
        <groupId>org.apache.shardingsphere</groupId>
        <artifactId>sharding-jdbc-core</artifactId>
        <version>4.1.1</version>
    </dependency>
    
  2. 规则配置
    Sharding-JDBC可以通过Java、YAML、Spring命名空间和Spring Boot Starter四种方式配置,开发者根据场景选择合适的配置方式。

  3. 创建DataSource
    通过ShardingDataSourceFactory工厂和规则配置对象获取ShardingDataSource,然后即可通过DataSource选择使用原生JDBC开发,或者使用JPA,Mybatis等ORM工具。

3.分片核心概念

  • 真实表:数据库中真实存在的物理表。例如b_order0、b_order1。

  • 逻辑表:在分片之后,同一类表结构的名称(总称)。例如b_order。

  • 数据节点:在分片之后,由数据源和数据表组成。例如ds0.b_order1。<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值