分库分表最佳实践大小结

标签: 最佳实践 大小 | 发表时间:2014-04-15 13:51 | 作者:myeclipse_bj
出处:http://www.iteye.com

分库分表最佳实践大小结

一、随着企业业务的增长,访问量和用户等数据的增加,传统的关系数据库已经不能满足需求,分表分库就成了节省成本、和良好扩展性的必然选择,网上也有很多开源的分表分库的软件,也公司自己开发实现 
    而终其原理和步骤都无外乎三步: 
    即 首先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 shardshibernate shards类似,也可借鉴本人所设计的架构
思想 欢迎有志之士详聊

附: 
一、hibernate shards 
优点: 
1、实现跟其他成熟框架的集成如spring等 
2、能利用公司现有的hibernate的技术优势 
3、目前国内有成功案例在hibernate  shards上封装的商业软件 
4、能够快速开发 
缺点: 
1、暂不支持垂直分区 
2、list查询遍历所有表分片 


已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [最佳实践 大小] 推荐:

分库分表最佳实践大小结

- - 数据库 - ITeye博客
一、随着企业业务的增长,访问量和用户等数据的增加,传统的关系数据库已经不能满足需求,分表分库就成了节省成本、和良好扩展性的必然选择,网上也有很多开源的分表分库的软件,也公司自己开发实现 .     而终其原理和步骤都无外乎三步: .     即 首先sql解析路由,再根据路由确定分片,然后结果集合并 .

jQuery最佳实践

- andi - 阮一峰的网络日志
上周,我整理了《jQuery设计思想》. 那篇文章是一篇入门教程,从设计思想的角度,讲解"怎么使用jQuery". 今天的文章则是更进一步,讲解"如何用好jQuery". 我主要参考了Addy Osmani的PPT《提高jQuery性能的诀窍》(jQuery Proven Performance Tips And Tricks).

PHP最佳实践

- xiangqian - 阮一峰的网络日志
虽然名字叫《PHP最佳实践》,但是它主要谈的不是编程规则,而是PHP应用程序的合理架构. 它提供了一种逻辑和数据分离的架构模式,属于MVC模式的一种实践. 我觉得,这是很有参考价值的学习资料,类似的文章网上并不多,所以一边学习,一边就把它翻译了出来. 根据自己的理解,我总结了它的MVC模式的实现方式(详细解释见译文):.

MongoDB最佳实践

- - NoSQLFan
将 MongoDB加入到我们的服务支持列表中,是整个团队年初工作计划中的首要任务. 但我们感觉如果先添加一项对NoSQL存储的支持,而不是先升级已支持的关系型数据库,可能对用户不太好,毕竟目前的用户都使用关系型数据库. 所以我们决定将引入MongoDB这项工作放到升级MySQL和PostgreSQL之后来做.

文章: Grails最佳实践

- - InfoQ cn
我在IntelliGrape工作,这是一家专门使用Groovy & Grails进行开发的公司. 本文是我们Grails项目遵循的最佳实践的基本清单,收集自邮件列表、Stack Overflow、博文, 播客和 IntelliGrape的内部讨论. 它们分为控制器、服务、Domain、视图、TagLib、测试和其他.

PHP最佳实践(译)

- - CSDN博客Web前端推荐文章
原文:  PHP Best Practices-A short, practical guide for common and confusing PHP tasks. 译者: youngsterxyf. 本文档最后审阅于2013年3月8日. 由我, Alex Cabal,维护该文档. 我编写PHP程序已有很长一段时间了,当前我 经营着 Scribophile,由认真作家组成的一个在线写作团体,  Writerfolio,为自由职业者提供的一个易用写作工具集,以及  Standard Ebooks,一个图文并茂、无数字版权管理的公共领域电子书出版商.

Log4j最佳实践(原) - Mainz

- - 博客园_Mainz's Blog
本文是结合项目中使用 Log4j总结的最佳实践,非转载. 网上可以找到的是这一篇《 Log4j最佳实践》. 本来 Log4j使用是非常简单的,无需多介绍其用法,这只是在小型项目中;但在 大型的项目中使用 log4j不太一样. 大型项目非常依赖日志,因为解决线上问题必须依靠log,依靠大量的日志.

再谈RestAPI最佳实践

- - 企业架构 - ITeye博客
http://www.javacodegeeks.com/2014/05/rest-api-best-practices-reloaded.html ,仅供学习和参考,转载请注明出处. 近一年半,我参与了2到3个项目的工作,这些项目涉及到大量供“外部”使用的Rest API,稍后我们再来解释为什么要将“外部”这个词放在引号之中.

一些 REST 最佳实践

- - 鸟窝
原文: Some REST best practices, 作者: Pierre-Olivier Bourgeois. 译文: 一些REST最佳实践, 译者: yongx. 如今,REST APIs 已经非常普遍,几乎所有WEB应用都用到了它们. 提供简单,一致,实用的API是种义务,方便其它人很容易的使用.

Redis最佳实践 | kikoroc

- -
redis是一款开源的内存数据存储系统,可以用作数据库、缓存甚至是消息中间件(pub/sub)来使用. 与memcache相比,redis支持更多的数据结构,比如string,hash,list,set,bit map,sorted set甚至是geo等等,基本覆盖了日常开发中使用到的数据结构. 而且redis十分高效,当然是建立在合理使用的前提下.