一、概述

Sharding-Sphere是一个开源生态系统,由一组分布式数据库中间件解决方案组成,包括3个独立产品,Sharding-JDBC,Sharding-Proxy和Sharding-Sidecar(todo)。它们都提供数据分片,分布式事务和数据库编排等功能,适用于Java同构,异构语言和云原生等各种情况。为了合理地充分利用分布式系统中数据库的计算和存储容量,Sharding-Sphere将自己定义为中间件,而不是一种全新的数据库类型。作为众多企业的基石,关系数据库仍占据着巨大的市场份额。因此,在目前阶段,我们更倾向于关注其增量而不是完全推翻。
Sharding-JDBC将自身定义为轻量级Java框架,在Java JDBC层提供额外服务。客户端直接连接到数据库,它以jar的形式提供服务,不需要额外的部署和依赖。它可以被视为增强的JDBC驱动程序,它与JDBC和各种ORM框架完全兼容。
适用于任何基于Java的ORM框架,如JPA,Hibernate,Mybatis,Spring JDBC Template或直接使用JDBC。
基于任何第三方数据库连接池,如DBCP,C3P0,BoneCP,Druid,HikariCP。
支持任何符合JDBC标准的数据库:MySQL,Oracle,SQLServer和PostgreSQL。

官网: http://shardingsphere.io/document/current/cn/features/
项目结构:

项目代码:https://github.com/huran111/sharding-jdbc
数据库结构:

项目演示:
(1)测试数据

(2)分库路由


(3)分表路由

不出意外数据保存到hr_1中的t_user_00表中:

将测试数据ID改为12:

不出意外数据保存到hr_0中的t_user_00表中:

这只是简单实例,深入请看官网和源码,由于近期遇到了数据量比较大的请看,考虑到分库分表,使用了Sharding-Jdbc,由于Sharding-Jdbc轻量级,比MyCat简单,推荐使用。
测试结果摘要
性能损失:当服务器资源充足且并发数相同时,我们比较JDBC和Sharding-JDBC的性能损失,结果是与JDBC相比,Sharding-JDBC的性能损失小于7% 。
性能测试:服务器资源用于限制,Sharding-JDBC和JDBC的吞吐量处于相当水平。
性能测试:服务器资源用于限制,Sharding-JDBC with Sharding的吞吐量比没有Sharding的JDBC提高了近两倍。
性能测试:服务器资源用于限制,Sharding-JDBC V1.5.2的性能更稳定V1.4.2。





