初探ShardingJDBC
简介
Apache ShardingSphere 是一套开源的分布式数据库解决方案组成的生态圈,它由 JDBC、Proxy 和 Sidecar(规划中)这 3 款既能够独立部署,又支持混合部署配合使用的产品组成。 它们均提供标准化的数据水平扩展、分布式事务和分布式治理等功能,可适用于如 Java 同构、异构语言、云原生等各种多样化的应用场景。


定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务。 它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,可理解为增强版的 JDBC 驱动,完全兼容 JDBC 和各种 ORM 框架。
Business Code 是业务代码与ShardingJDBC结合
Mycat与ShardingJDBC
Mycat相当于tomcat 与我们应用程序是链接的关系
ShardingJDBC鱼我们应用程序是包含关系
功能
数据分片
- 分库 & 分表
- 读写分离
- 分片策略定制化
- 无中心化分布式主键
分布式事务
- 标准化事务接口
- XA 强一致事务
- 柔性事务
数据库治理
- 分布式治理
- 弹性伸缩
- 可视化链路追踪
- 数据加密
使用教程
见Springboot整和ShardingJDBC
分库分表
水平拆分
统一的表拆到不同的数据库的表中(按照分库分表 数据的离散存储)
垂直拆分
把一个很多字段的表拆分形成多个表(按照业务来进行 商品 订单)
表垂直拆分
表的字段过多,字段使用频率不一(拆分成两个1:1的关系)
规范
1.主键用整数型(int 4字节 long 8字节 string 32字节)
2.手机号用varchar
如果误传入字符串类型的手机号,并不会报错。已晚会有个隐式转换,但是会造成索引失效
3.用int存ipv4(需要比较)
4.金额用decimal,并设定精度
5.不要设置null null需要更多存储空间,可能会造成索引失效,造成统计复杂
INODB是建立B+Tree来进行建立索引,如果主键唯一,会用主键来确认索引之间关系的
6.禁止使用select *(造成cpu io浪费)
7.不经常更新的字段上建立索引
本文介绍了Apache ShardingSphere的组件ShardingJDBC,它是一个轻量级Java框架,提供数据分片、分布式事务和数据库治理等功能。通过JDBC层的增强服务,ShardingJDBC与业务代码无缝集成,支持分库分表、读写分离和定制化分片策略。同时,文章提到了使用ShardingJDBC进行分库分表的两种方式:水平拆分和垂直拆分,并给出了数据库设计的一些最佳实践。
595





