您的位置:首页 > 其它

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

2018-03-01 17:25 393 查看
一.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历史数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: