分库分表中间件-sharding-jdbc

880 阅读2分钟

主要内容介绍

  • 什么是sharding-jdbc
  • sharding-jdbc功能特性
  • 核心概念介绍
  • 实际案例介绍

1.什么是sharing-jdbc

定位为轻量级 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 标准的数据库

2.sharding-jdbc功能特性

sharding-jdbc主要有几个重要的特性

数据分片

  • 分库分表
  • 读写分离
  • 分片策略定制化
  • 分布式主键

分布式事务

  • 标准化事务接口
  • XA强一致事务
  • 柔性事务

数据库治理

  • 分布式治理
  • 弹性伸缩
  • 可视化链路追踪
  • 数据加密

3.核心概念

  • 逻辑表: 水平拆分的数据库(表)的相同逻辑和数据结构表的总称。例:用户数据根据主键尾数拆分为 10 张表,分别是 t_user_0 到 t_user_9,他们的逻辑表名为 t_user

  • 真实表:在分片的数据库中真实存在的物理表。即 t_user_0 到 t_user_9

  • 数据节点:数据分片的最小单元。由数据源名称和数据表组成,例:ds_0.t_user_0

  • 绑定表:指分片规则一致的主表和子表。例如:t_user 表和 t_user_extend 表,均按照 user_id 分片,则此两张表互为绑定表关系。绑定表之间的多表关联查询不会出现笛卡尔积关联,关联查询效率将大大提升

  • 广播表: 指所有的分片数据源中都存在的表,表结构和表中的数据在每个数据库中均完全一致。适用于数据量不大且需要与海量数据的表进行关联查询的场景,例如:字典表。

  • 单表:指所有的分片数据源中只存在唯一一张的表。适用于数据量不大且不需要做任何分片操作的场景。

4.实际案例介绍

会结合实际业务来给出案例,更新中