分库分表架构与框架

分库分表的实现方案分成三大类:客户端分片、代理分片和支持事务的分布式数据库。

 

  一、客户端分库分表框架

 使用分库分表的数据库的应用层直接操作分片逻辑,分片规则需要在同一个应用的多个节点间进行同步,每个应用层都嵌入切片的逻辑实现(分片规则),这一般通过依赖Jar包来实现,具体的实现方式分成三种:在应用层直接实现、通过定制JDBC协议实现、通过定制ORM框架实现。

1.1  在应用层直接实现 

  从应用层直接决定每次操作读取使用哪个数据库实例、哪个数据库、哪个表等。一般在公司内部会将这些逻辑进行封装,打包成Jar供公司内部项目使用。开源项目 dbsplit就是采用这种方式。

 优点:虽然侵入了业务,但实现起来比较简单,适合快速上线;

缺点:数据库保持的连接会比较多。

1.2 通过定制JDBC协议实现

流行的客户端分表框架Sharding JDBC便采用了这种方案。

优点:分库分表在JDBC内部实现,对业务层保持透明。

缺点:开发人员需要理解JDBC协议才能实现分库分表逻辑。

 

 

1.3 通过定制ORM框架实现

 在很多公司里是MyBatis配置文件的SQL中增加表索引来实现的。MyBatis配置文件如下:

<select id=getUser" parameterType="java.util.Map"  resultType="User">

SELECT userId,username  FROM USER_#{index} where userId=#{userId}

</select>

 

二、代理分库分表框架

分片的路由规则配置在代理层,代理层对外提供与JDBC兼容的接口给应用层,应用层的开发人员不用关心分片规则,只需关心业务的实现逻辑。待业务 逻辑实现以后,在代理层配置路由规则即可。

 

通过代理分片实现 打框架有Cobar和Mycat等。

三、支持事务的分布式数据库。

有一些产品如OceanBase、TiDB直接对外提供可伸缩的体系架构,并提供一定的分布式事务支持,将可伸缩的特点和分布式事务的实现包装到分布式数据库内部实现,对使用者透明。

例如TiDB对外提供JDBC的接口,让应用层像使用MySQL等传统数据库一样来使用TiDB,而不需要关注其内部是如何伸缩、分片及处理分布式事务等等。

OceanBase:  由蚂蚁集团完全自主研发的金融级分布式关系数据库, 广泛应用于金融行业,低版本开源。

TiDB : TiDB 是 PingCAP 公司设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,结合了传统的 RDBMS 和 NoSQL 的最佳特性。TiDB 兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用性。TiDB 的目标是为 OLTP (Online Transactional Processing) 和 OLAP (Online Analytical Processing) 场景提供一站式的解决方案。

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值