工作深度总结——分库分表sharding-jdbc实践路线

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/successA/article/details/79415300

一.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历史数据。

猜你喜欢

转载自blog.csdn.net/successA/article/details/79415300