GBase 8s JDBC 的读写分离功能,是基于GBase8s数据库集群实现的一种具体解决方案。旨在充分发挥GBase8s数据库集群的计算和存储能力,更好的满足用户对数据库性能方面的需求。
本文将简述读写分离的原理以及使用场景,然后展开说明GBase 8s JDBC在实现读写分离功能的方案中,与同类产品相对比的几个优点。
读写分离(Read/Write Splitting)简介

原理:在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依赖:

基于Java编码的规则配置

使用GBase 8s JDBC驱动实现读写分离功能,对代码“零”改造。
GBase 8s JDBC驱动原生支持读写分离,不需要额外的依赖包,也不需要对原有项目的Java代码进行任何改造,只需要在配置文件中设置参数开启读写分离功能即可。
连接零损耗,连接性能100%充分发挥
GBase 8s JDBC 的读写分离功能在对数据库连接上无性能损耗,尤其是与其他开源中间件相比。我们对比一下开源中间件与GBase 8s JDBC驱动在实现读写分离功能时对数据库连接的使用方案。
使用mycat实现读写分离的部署方案,如下:

使用GBase 8s JDBC驱动实现读写分离功能,连接零损耗。

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零修改的读写分离功能。在满足用户需求的同时,为用户节约宝贵的时间成本和人力成本。




