暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase 8s JDBC 的读写分离

wj2021 2021-04-21
1068

GBase 8s JDBC 的读写分离功能,是基于GBase8s数据库集群实现的一种具体解决方案。旨在充分发挥GBase8s数据库集群的计算和存储能力,更好的满足用户对数据库性能方面的需求。

本文将简述读写分离的原理以及使用场景,然后展开说明GBase 8s JDBC在实现读写分离功能的方案中,与同类产品相对比的几个优点。

读写分离(Read/Write Splitting)简介
image.png

原理:在GBase8s数据库集群中,数据库节点分为主节点和从节点。其中主节点(master)处理事务性的增加、修改、删除(INSERT、UPDATE、DELETE)等写入行为操作,而从节点(slave)处理SELECT类型的读取行为操作。
使用场景:在实际应用的业务场景中,我们能发现读取行为和写入行为有着不同的特点。读取行为操作,访问量大、耗时短;而写入行为操作,访问量小、耗时长。因此我们将主从节点进行写和读的分离,让写和读在访问GBase8s数据库集群时互相不干扰,并且随着从节点的扩展,读取性能有明显的线性提升,从而更好的满足用户对数据库性能方面的需求。

GBase 8s JDBC 的读写分离的优点
GBase 8s JDBC 的读写分离功能与其他开源解决方案相比,更加从用户角度考虑用户所面临的实际问题(300%的满足用户)。具有以下三个优点:
代码零入侵,与原有业务100%兼容
连接零损耗,连接性能100%充分发挥
SQL零修改,对SQL语句的100%支持

代码零入侵,与原有业务100%兼容
GBase 8s JDBC 的读写分离功能在对原有Java项目改造升级上是十分友好的,尤其是与其他开源中间件相比。我们对比一下开源中间件与GBase 8s JDBC驱动在实现读写分离功能时对代码的改动。
使用Sharding-JDBC实现读写分离功能,对代码的改造如下:
引入Maven依赖:
image.png
基于Java编码的规则配置
image.png

使用GBase 8s JDBC驱动实现读写分离功能,对代码“零”改造。
GBase 8s JDBC驱动原生支持读写分离,不需要额外的依赖包,也不需要对原有项目的Java代码进行任何改造,只需要在配置文件中设置参数开启读写分离功能即可。

连接零损耗,连接性能100%充分发挥
GBase 8s JDBC 的读写分离功能在对数据库连接上无性能损耗,尤其是与其他开源中间件相比。我们对比一下开源中间件与GBase 8s JDBC驱动在实现读写分离功能时对数据库连接的使用方案。
使用mycat实现读写分离的部署方案,如下:
image.png
使用GBase 8s JDBC驱动实现读写分离功能,连接零损耗。
image.png
GBase 8s JDBC驱动原生支持读写分离,不需要额外的中间件做转发,Java应用程序直接连接GBase8s数据库集群,不在连接上增加任何额外负担。

SQL零修改,对SQL语句的100%支持

GBase 8s JDBC 的读写分离功能支持所有SQL语句,其他开源产品都存在着一些不支持的情况,使用上存在着一些限制。比如Sharding-JDBC的使用限制:不支持子语句,不支持UNION 和 UNION ALL,不支持批量插入,不支持DISTINCT聚合。
GBase 8s JDBC驱动与GBase8s数据库集群紧密结合,完美支持所有SQL,用户在编写SQL语句时无需任何特殊修改。

总结
GBase 8s JDBC驱动在实现读写分离功能时,完全从用户角度出发,考虑用户的实际问题,如旧项目升级、技术人员学习曲线等,基于此实现了代码零入侵、连接零损耗、SQL零修改的读写分离功能。在满足用户需求的同时,为用户节约宝贵的时间成本和人力成本。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论