Archive for January, 2011
NoSQL or Relational ?
Thursday, January 20th, 2011
随着数据存储技术的迅猛发展,随着各种 NoSQL 技术的产生,无论是我们同事之间还是整个互联网行业,都出现关于“分布式 数据 存储/处理 解决方案”方面的选择分歧。就我目前所了解到的主流意见主要有以下三种:
去关系型,NoSQL是王道
NoSQL靠边站,关系型才是王道
以关系型为核心,NoSQL为补充
三种意见中前面两种观点较为极端,都是“非对即错”的选择,当然也有更为理性的第三种方案。
如果作为开发人员,从我目前所了解的信息来看,主要还是倾向于第一种思路。因为在他们看来,分布式的 NoSQL 系统是一个非常美的架构,不仅仅解决了扩展性的问题,同时也解决了可靠性问题,同时还可以让程序开发免去关系型模型的约束,不选择他才是傻子呢!
从我个人的角度来看,我目前更倾向于第三种思路,至少在现阶段是如此。
Why?
但是如果是从运维的角度出发,所考虑的风险点可能完全不一样。作为一个存储数据的核心组件,在需要对其数据进行人工订正维护的时候是否方便操作?在需要抽取其中某部分数据到线下给开发/测试部门使用的时候是否方便?最重要的是,当他整个 Crash 之后我们可以怎么恢复?当我们面对这些问题的时候,我们是否有合适便利的手段来避免或者解决?
确实,理念很完美,架构很完美,但目前的NoSQL产品的实现是不是真的也如此完美呢?我想没有哪个产品敢拍着自己的胸脯说他们的产品不会Crash,就像没有厂商向我们保证他们的硬件在达到标称的使用寿命之前不会损坏一样。既然存在整个 Crash 的可能,那就必须考虑如何应对。我们不能只是考虑这个听上去完美的分布式系统在某个节点 Crash 之后可以很好的”自愈”,不能只考虑当目前整个集群资源达到瓶颈之后仅仅只需要在线增加一个节点就可以”自我完成负载/数据重分布”。我们还需要考虑他的整体可靠性,还需要考虑更为恶劣的环境更为残酷的场景下,他是否还能生存。
关系型数据库在刚开始产生的时候,同样面临了各种各样的问题,同样受到过大量的质疑。但是,当他在风风雨雨中走过了这么多年之后,通过不断的完善和适应,不论在灾难恢复方面还是在可操作性和可维护性方面都做了大量的工作。当然,在这么多年的市场需求下,也培养出了大量的专业技术人员。但 NoSQL 发展到现在,才经历了很短的时间,缺少在恶劣环境下的磨炼,缺少复杂环境下的检验,更缺少有丰富经验的专业技术人员。在这种情况下,你还敢轻易决定将一个公司最为核心的资本(数据)轻易从关系型数据库中迁移出来吗?
当然,我们并不一定要一个完美的产品,就像我们无法让我们自己成为一个完美的人一样。但我们必须清楚一个产品的可能存在的风险和缺陷,并且清楚如何做能避免这些风险和缺陷,同时还要让我们自己有能力避免这些风险和缺陷。只有在这样的前提下,我们才会在比较重要的场景下使用。但要积累这些经验,积累这些信任,培养专业技术人员,都需要一定的时间。
所以在我个人看来,在近几年,NoSQL 暂时还不可能成为数据管理软件领域的主角,仍然只能作为特定场景下的数据存/取解决方案的补充,即使在互联网行业也是如此。至于在未来,比如五年十年以后会是什么样子,我就无法预测了。
注:文中观点仅代表个人,基于个人目前的认知,欢迎大家拍砖!
原文出自: NoSQL or Relational ?
单个MySQL Instance 接多个 Master 的一点想法
Thursday, January 20th, 2011
时常遇到一些希望从多个 MySQL 实例将数据复制到单个MySQL 实例上的需求场景,又苦于原生的 MySQL 并不支持这样的实现方案,开源社区中也没有哪位大拿提供解决这方面需求的插件。 有时候就想,要不公司里面组织力量修改一下 MySQL 代码来搞定这个问题得了。可转念一想,后面如果需要升级版本的时候怎么办呢?再修改一次代码?这样的成本有多大呢?如此的问题让人很是纠结。 最近突然想明白了:为啥非要在现在代码中来实现这个需求呢?为啥不能通过在外部想办法呢?我们需要的不是看上去的美,而是最终的结果。看上去漂亮完美的架构方案并不一定就是最好的。 如是就有了下面这样的想法:
通过在 Master 和 Slave 之间增加一层复制代理服务
多个线程连接上多个 Master 上请求 Binlog(完全模拟 Slave 上的IO线程)
多个线程连接上单个 Slave 实例,直接以类似于应用程序的方式并行应用 Binlog中的Event(部分模拟Slave 上的SQL线程)
由于很清楚业务场景,在应用线程方面可以在一些特定规则约束下实现并行应用以改善 Slave 端延时
由于 MySQL 开源的特性,实现上述功能其实很简单,还可以保持原生 MySQL 不会被动任何手术即可完成我们的需求,看来是该动手的时候了。
BTW: 我的需求中,各个 Master 中的数据是不会有任何重叠的。
原文出自: 单个MySQL Instance 接多个 Master 的一点想法
OOW 分享的 PPT
Thursday, January 20th, 2011
前几天,受 Oracle 所遥,在 OOW 上的 OTN Lounge 分享了一下最近一年来在利用MySQL 在高可用可扩展架构方面的一些心得,这里贴上 PPT,供大家拍砖。
内容方面,前面的部分可能有不少朋友以前有看到过,可能是听我介绍过,也有可能本身自己就对这些架构很了解。无所谓,只要能对一少部分人有用,那也欣慰。不过,最后两页 PPT 的内容,我想肯定没有人在其他渠道见过,因为这两张图片是我第一次在公开场合展示。
废话少说,上 PPT 吧,呵呵!
高可用可扩展数据层 - MySQL架构实践
View more presentations from Sky Jian.
原文出自:OOW 分享的 PPT


