一、随着企业业务的增长,访问量和用户等数据的增加,传统的关系数据库已经不能满足需求
分表分库就成了节省成本、和良好扩展性的必然选择
网上也有很多开源的分表分库的软件,也公司自己开发实现
而终其原理和步骤都无外乎三步:
即[b]首先sql解析路由,再根据路由确定分片,然后结果集合并[/b]
所遇到的分表分库的[b]难点[/b]大都是对[b]分布式事务的支持[/b],[b]分片后的分页
和排序[/b]等
二、实现方式大都在两个层面:
即在应用层 代表有[b]hibernate shards,ibatis shards[/b],[b]guzz [/b]等
和 在jdbc之下 对应用层完全透明的 如[b]amoeba [/b]
[img]http://cuxiao008.com/bigdata/uploads/userup/js_wt.jpg[/img]
三、那么企业在分表分库的实践中该如何选择呢?
假如您是一开始就想全新的分表分库 公司没打算做自己的分表分库框架,那么推荐用guzz,
这个类似于hibernate 和 ibatis的框架,很多网站都在用,缺点是技术团队需要重新学习一套框架
跟旧的系统很难兼容;
假如您的系统很乱,分表分库规则很简单,并且数据库是mysql
推荐用amoeba ,虽然有oracle版本,但目前不是很成熟;
假如您的技术团队一直用hibernate ,或企业现在的很多项目现在都用hibernate做的
那么推荐用[b]hibernate shards[/b],这个类似hibernate,学习成本低,能跟
hibernate兼容
目前国内有在hibernate shards上封装的成功案例,
缺点是list查询时遍历所有数据片,而不是根据sql规则确定的数据片。
这个bug及在hibernate shards上如何扩展问题我已解决,附件是解决的架构图,
需要源代码的或详细可以联系我;
[b]ibatis shards[/b]跟[b]hibernate shards[/b]类似,也可借鉴本人所设计的架构
思想 欢迎有志之士详聊
附:
一、hibernate shards
优点:
1、实现跟其他成熟框架的集成如spring
等
2、能利用公司现有的hibernate的技术优势
3、目前国内有成功案例在hibernate shards上封装
的商业软件
4、能够快速开发
缺点:
1、暂不支持垂直分区
2、list查询遍历所有表分片
qq:360275663, j.cuxiao008.com(技术宅)
[url="http://j.cuxiao008.com"] [size=xx-large][b]技术宅,中小互联网公司架构的好伙伴[/b][/size][/url]
分表分库就成了节省成本、和良好扩展性的必然选择
网上也有很多开源的分表分库的软件,也公司自己开发实现
而终其原理和步骤都无外乎三步:
即[b]首先sql解析路由,再根据路由确定分片,然后结果集合并[/b]
所遇到的分表分库的[b]难点[/b]大都是对[b]分布式事务的支持[/b],[b]分片后的分页
和排序[/b]等
二、实现方式大都在两个层面:
即在应用层 代表有[b]hibernate shards,ibatis shards[/b],[b]guzz [/b]等
和 在jdbc之下 对应用层完全透明的 如[b]amoeba [/b]
[img]http://cuxiao008.com/bigdata/uploads/userup/js_wt.jpg[/img]
三、那么企业在分表分库的实践中该如何选择呢?
假如您是一开始就想全新的分表分库 公司没打算做自己的分表分库框架,那么推荐用guzz,
这个类似于hibernate 和 ibatis的框架,很多网站都在用,缺点是技术团队需要重新学习一套框架
跟旧的系统很难兼容;
假如您的系统很乱,分表分库规则很简单,并且数据库是mysql
推荐用amoeba ,虽然有oracle版本,但目前不是很成熟;
假如您的技术团队一直用hibernate ,或企业现在的很多项目现在都用hibernate做的
那么推荐用[b]hibernate shards[/b],这个类似hibernate,学习成本低,能跟
hibernate兼容
目前国内有在hibernate shards上封装的成功案例,
缺点是list查询时遍历所有数据片,而不是根据sql规则确定的数据片。
这个bug及在hibernate shards上如何扩展问题我已解决,附件是解决的架构图,
需要源代码的或详细可以联系我;
[b]ibatis shards[/b]跟[b]hibernate shards[/b]类似,也可借鉴本人所设计的架构
思想 欢迎有志之士详聊
附:
一、hibernate shards
优点:
1、实现跟其他成熟框架的集成如spring
等
2、能利用公司现有的hibernate的技术优势
3、目前国内有成功案例在hibernate shards上封装
的商业软件
4、能够快速开发
缺点:
1、暂不支持垂直分区
2、list查询遍历所有表分片
qq:360275663, j.cuxiao008.com(技术宅)
[url="http://j.cuxiao008.com"] [size=xx-large][b]技术宅,中小互联网公司架构的好伙伴[/b][/size][/url]