框架整合(二)- 使用 Apache ShardingSphere 实现数据分片
序
最近公司项目中使用到了订单表,后续如果项目上线了可能订单数据较大,那么就需要对订单表进行分片或者分库操作,正好最近私下学习到了这里,就加以记录,方便以后项目使用。
解决方案
实现分库分表的的解决方案
Apache ShardingShpere(本博文选择的方案)
Mycat
具体实现(分表)
创建数据库(ds0)和表 t_order_0,t_order_1
注: 分表时注意表的订单表的命名规则(分库同理),具有相同的名称后面的编号不同等
创建 springboot 项目并结合 mybatis-plus
注:使用 mybatis-plus 是因为公司项目中使用的这个,方便以后的使用(当然也可使用其他 orm 框架,实现方法同理)
引入项目依赖 shardingsphere(其他基础依赖略)
在 application.properties 文件中加入 shardingsphere 配置
注:可参考官方文档,但官方文档更新可能之后,目前文档是之前版本的,最新 5.0 版本似乎未及时更新(目前项目配置是本人亲测成功的)
配置中注释掉的配置是分库的相关配置
着重注意分片相关配置后面的值设置规则
当前分表策略(表字段 order_id),分表算法配置为取模等
创建 order 实体类
注:着重实体类表名配置 @TableName("t_order") 和数据库没有相同的名称,但名称前缀都一样,只要前面配置和依赖都没有出问题,那么运行时就不会报表不存在的错误(后续 xml 文件中实现的 sql 语句也用相同的表名)
使用 sql 操作分表有许多禁用条件,可查看官方文档进行排查点击跳转使用规范页
测试
批量插入 20 条数据
查看数据库,2 个表(通过分片配置算法取模)分别插入了数据
查询一条 order 数据()
查看控制台打印的查询 sql
查询结果
完成
版权声明: 本文为 InfoQ 作者【大菠萝蜜】的原创文章。
原文链接:【http://xie.infoq.cn/article/a64b56fe34efa2cbde1eb82af】。文章转载请联系作者。
评论