分库分表最佳实践大总结
2011-11-30 23:04
417 查看
一、随着企业业务的增长,访问量和用户等数据的增加,传统的关系数据库已经不能满足需求 分表分库就成了节省成本、和良好扩展性的必然选择
网上也有很多开源的分表分库的软件,也公司自己开发实现
而终其原理和步骤都无外乎三步:
即首先sql解析路由,再根据路由确定分片,然后结果集合并
所遇到的分表分库的难点大都是对分布式事务的支持,分片后的分页和排序等
二、实现方式大都在两个层面:
即在应用层 代表有hibernate shards,ibatis shards,guzz 等 和在jdbc之下 对应用层完全透明的 如amoeba
三、那么企业在分表分库的实践中该如何选择呢?
假如您是一开始就想全新的分表分库 公司没打算做自己的分表分库框架,那么推荐用guzz,
这个类似于hibernate 和 ibatis的框架,很多网站都在用,缺点是技术团队需要重新学习一套框架 跟旧的系统很难兼容;
假如您的系统很乱,分表分库规则很简单,并且数据库是mysql 推荐用amoeba ,虽然有oracle版本,但目前不是很成熟;
假如您的技术团队一直用hibernate ,或企业现在的很多项目现在都用hibernate做的 那么推荐用hibernate shards,这个类似hibernate,学习成本低,能跟
hibernate兼容 目前国内有在hibernate shards上封装的成功案例, 缺点是list查询时遍历所有数据片,而不是根据sql规则确定的数据片。
这个bug及在hibernate shards上如何扩展问题我已解决,附件是解决的架构图,
需要源代码的或详细可以联系我;
ibatis shards跟hibernate shards类似,也可借鉴本人所设计的架构
思想 欢迎有志之士详聊
附:
一、hibernate shards
优点:
1、实现跟其他成熟框架的集成如spring等
2、能利用公司现有的hibernate的技术优势
3、目前国内有成功案例在hibernate shards上封装的商业软件
4、能够快速开发
缺点:
1、暂不支持垂直分区
2、list查询遍历所有表分片
Hibernate Shards http://shards.hibernate.org http://www.hibernate.org/subprojects/shards.html
ibatis-sharding http://code.google.com/p/ibatis-sharding/
Ibatis Shards http://code.alibabatech.com/wiki/display/cobarclient/Home
数据库水平切分的实现原理解析:http://www.iteye.com/topic/409294
shardbatis http://code.google.com/p/shardbatis/
zhikuilu
qq:360275663
网上也有很多开源的分表分库的软件,也公司自己开发实现
而终其原理和步骤都无外乎三步:
即首先sql解析路由,再根据路由确定分片,然后结果集合并
所遇到的分表分库的难点大都是对分布式事务的支持,分片后的分页和排序等
二、实现方式大都在两个层面:
即在应用层 代表有hibernate shards,ibatis shards,guzz 等 和在jdbc之下 对应用层完全透明的 如amoeba
三、那么企业在分表分库的实践中该如何选择呢?
假如您是一开始就想全新的分表分库 公司没打算做自己的分表分库框架,那么推荐用guzz,
这个类似于hibernate 和 ibatis的框架,很多网站都在用,缺点是技术团队需要重新学习一套框架 跟旧的系统很难兼容;
假如您的系统很乱,分表分库规则很简单,并且数据库是mysql 推荐用amoeba ,虽然有oracle版本,但目前不是很成熟;
假如您的技术团队一直用hibernate ,或企业现在的很多项目现在都用hibernate做的 那么推荐用hibernate shards,这个类似hibernate,学习成本低,能跟
hibernate兼容 目前国内有在hibernate shards上封装的成功案例, 缺点是list查询时遍历所有数据片,而不是根据sql规则确定的数据片。
这个bug及在hibernate shards上如何扩展问题我已解决,附件是解决的架构图,
需要源代码的或详细可以联系我;
ibatis shards跟hibernate shards类似,也可借鉴本人所设计的架构
思想 欢迎有志之士详聊
附:
一、hibernate shards
优点:
1、实现跟其他成熟框架的集成如spring等
2、能利用公司现有的hibernate的技术优势
3、目前国内有成功案例在hibernate shards上封装的商业软件
4、能够快速开发
缺点:
1、暂不支持垂直分区
2、list查询遍历所有表分片
Hibernate Shards http://shards.hibernate.org http://www.hibernate.org/subprojects/shards.html
ibatis-sharding http://code.google.com/p/ibatis-sharding/
Ibatis Shards http://code.alibabatech.com/wiki/display/cobarclient/Home
数据库水平切分的实现原理解析:http://www.iteye.com/topic/409294
shardbatis http://code.google.com/p/shardbatis/
zhikuilu
qq:360275663
相关文章推荐
- 分库分表最佳实践大总结
- 深入理解Java虚拟机JVM高级特性与最佳实践阅读总结——第二章 Java内存区域与内存溢出异常
- 深入理解Java虚拟机JVM高级特性与最佳实践阅读总结—— 第十二章 Java内存模型与线程
- Nginx Location配置总结及基础最佳实践
- Spring:总结用XML配置的十二个最佳实践
- Atitit..文件上传组件选型and最佳实践总结(3)----断点续传控件的实现
- 深入理解Java虚拟机JVM高级特性与最佳实践阅读总结—— 第十三章 线程安全与锁优化
- Nginx Location配置总结及基础最佳实践
- VR系列——Oculus最佳实践:十、总结
- python编码最佳实践之总结
- python 最佳实践总结
- Atitit 健康减肥与软件健康减肥的总结 attilax著 1. 几大最佳实践减肥行为 1 1.1. 控制饮食分量用小碗 小盘子 小餐具 1 1.2. 软件如何减肥,控制资源占有率,比如体积 打包
- Atitit. 软件设计 模式 变量 方法 命名最佳实践 vp820 attilax总结命名表大全
- Nginx Location配置总结及基础最佳实践
- Nginx Location配置总结及基础最佳实践
- 断篇-金融大数据最佳实践总结篇
- Dockerfile最佳实践总结
- PHP常见问题总结与最佳实践
- 趣图:吐血总结,异常处理的最佳实践