初探ShardingJDBC

本文介绍了Apache ShardingSphere的组件ShardingJDBC,它是一个轻量级Java框架,提供数据分片、分布式事务和数据库治理等功能。通过JDBC层的增强服务,ShardingJDBC与业务代码无缝集成,支持分库分表、读写分离和定制化分片策略。同时,文章提到了使用ShardingJDBC进行分库分表的两种方式:水平拆分和垂直拆分,并给出了数据库设计的一些最佳实践。

初探ShardingJDBC

简介

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

image-20210328175739596

image-20210328180127349

image-20210328181746563

定位为轻量级 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.不经常更新的字段上建立索引

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值