ShardingSphere 下的Sharding-JDBC
地址:https://shardingsphere.apache.org/
Apache ShardingSphere 是⼀套开源的分布式数据库中间件解决⽅案组成的⽣态圈
它由 Sharding-JDBC、Sharding-Proxy 和 ShardingSidecar 3个独⽴产品组合Sharding-JDBC基于jdbc驱动,不⽤额外的proxy,⽀持任意实现 JDBC规范的数据库它使⽤客户端直连数据库,以 jar 包形式提供服务,⽆需额外部署和依赖可理解为加强版的 JDBC 驱动,兼容 JDBC 和各类 ORM框架
Mycat和ShardingJdbc区别
两者设计理念相同,主流程都是SQL解析-->SQL路由-->SQL改 写-->结果归并
sharding-jdbc
基于jdbc驱动,不⽤额外的proxy,在本地应⽤层重写Jdbc原⽣的⽅法,实现数据库分⽚形式是基于 JDBC 接⼝的扩展,是以 jar 包的形式提供轻量级服务的,性能⾼代码有侵⼊性
Mycat
是基于 Proxy,它复写了 MySQL 协议,将 Mycat Server伪装成⼀个MySQL 数据库客户端所有的jdbc请求都必须要先交给MyCat,再有MyCat转发到具体的真实服务器
缺点是效率偏低,中间包装了⼀层。代码⽆侵⼊性
分库分表和Sharding-Jdbc常⻅概念术语讲解
数据节点Node
数据分⽚的最⼩单元,由数据源名称和数据表组成
⽐如:ds_0.product_order_0
真实表
在分⽚的数据库中真实存在的物理表⽐如订单表 product_order_0、product_order_1、
product_order_2逻辑表⽔平拆分的数据库(表)的相同逻辑和数据结构表的总称
⽐如订单表 product_order_0、product_order_1、product_order_2,逻辑表就是product_order
绑定表
指分⽚规则⼀致的主表和⼦表
⽐如product_order表和product_order_item表,均按照order_id分⽚,则此两张表互为绑定表关系绑定表之间的多表关联查询不会出现笛卡尔积关联,关联查询效率将⼤⼤提升
⼴播表
指所有的分⽚数据源中都存在的表,表结构和表中的数据在每个数据库中均完全⼀致适⽤于数据量不⼤且需要与海量数据的表进⾏关联查询的场景
例如:字典表、配置表