工作深度总结——分库分表sharding-jdbc实践路线
Posted 喵喵7781
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工作深度总结——分库分表sharding-jdbc实践路线相关的知识,希望对你有一定的参考价值。
一.Why&when
mysql数据量超过500万,查询效率就会受到影响。为了满足数据量剧增,且查询较慢的问题,准备接入sharding-jdbc进行系统优化,提高系统性能。我们主要采用的它的分表功能解决大数据存储和查询性能问题。
类似产品:mycat,也可以自己封装。
Mycat优势:文档全面。缺点:学习和维护成本高,比较重
自己封装优势:实现规则自定义。缺点:麻烦,维护成本高
Sharding-jdbc:轻量,支持分库分表,对于单表增删改查支持的很好。 缺点:分表规则需要自己实现,不支持部分sql语句,扩容有问题。
二.What
Sharding-jdbc是当当开源的数据库中间件。Sharding-JDBC集分库分表、读写分离、分布式主键、柔性事务和数据治理与一身,提供一站式的解决分布式关系型数据库的解决方案。
详情可查看官网http://shardingjdbc.io/
跟官网同学交流 https://gitter.im/Sharding-JDBC/shardingjdbc
Github代码资源https://github.com/shardingjdbc
三.How
学习方法,结合在github里面的sharding-jdbc-example,尝试一下简单的分库分表就可以了。
重点:
分表方式——采用分布式主键hash或者取余数的方法,进行数据散列。
Sql不支持——有一些sql语句不够支持,官网上面也有提示,比如批量插入,需要自己封装,很简单的。
缺点:
查询数据的时候稍繁琐,需要自己写sql,可以采用工具生成批量的sql。
查询id的时候需要确定在哪张表,需要根据自定义计算规则进行求余,我自己开发了一个接口,专门批量提供id对应的sql语句。
难点:扩容、事务(暂时系统没有用到)
四.Where
最佳实践,公共服务影像服务,大部分操作都是对一张表的操作,没有过多的左右连接操作,当前2000万数据,需要接入业务方迁移5T历史数据。
以上是关于工作深度总结——分库分表sharding-jdbc实践路线的主要内容,如果未能解决你的问题,请参考以下文章