注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

白鸟无言

Welcome to theWraith's space

 
 
 

日志

 
 

“The End of an Architectural Era”  

2009-02-19 19:18:46|  分类: 技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

开学以来一直魂不守舍的过日子,这礼拜终于振作起来,周一上午干了些活,下午加晚上共看了二篇半论文。前两篇也还罢了,第三篇论文实在是有点强悍,边看边翻阅相关资料,三个小时才看了一半。震撼之余提笔写下一些东西,供诸君分享。

本文作者是大名鼎鼎的Michael Stonebraker,作为数据库界一大超级偶像,此君当年是postgres的创始人,如今在MIT  Database任职(或许并非正式教授,因为MIT DB主页上没有他的详细资料)。前几年他搞的列存数据库C-Store风光一时,在ad-hoc应用中把传统数据库搞的灰头土脸。而这篇文章号称又搞出了H-Store(好像是MIT和耶鲁的联合研究项目),在传统数据库最强势的TPCC测试中,居然达到商业数据库的86倍!如果这个数据经的住考验的话(PS:经过这两天的阅读和思考,我不认为是这样),恐怕传统关系数据库的日子真的有点末日的迹象。

 文章的题目就牛B无比:“一个体系时代的终结!”比电影名还吸引人啊。文中更是对Oracle, Sql server和DB2的起源和局限性大肆评头论足,说实话我看了这么多年论文还真没见过这样写的,以前有拿它们做测试的也只敢写“某商业数据库系统”啊。本文可点击这里下载。

具体到文章内容,在毫不留情地鄙视了所有SYSTEM R的继承者们之后,Stonebraker认为,在当今的IT世界里,数据库系统有以下地方都过时了(以下部分大部分是原文观点,括号内是小弟的一点点看法):

1> 主存化:在关系数据库拓荒年代,主存有个MB级就很奢华了,而如今考虑到集群、网格等并行计算技术的盛行,一个数据库系统有个TB级的内存也不是神话(同意)。因此在不远的将来,可以认为数据库系统将可以完全容纳于内存中。"In summary, 30 years of Moore’s law has antiquated the disk-oriented relational architecture for OLTP applications."(这第一点就吓了我一跳,64位系统从理论上支持PB级内存是没问题。但且不说技术上的可行性,如果数据库——这一计算机领域中数据量上的统治者——都被认为可以完全内存化的话,那受到冲击的恐怕不是现在的数据库系统,而是整个计算机工业界了吧)

2> 多线程结构和资源控制:传统的关系数据库采用线程作为处理请求的基本单位,以满足高并发在线用户环境。(想到这里就心碎啊,并发问题这几年来困扰的我简直....)然而在如今的CPU速度和内存化前提之下,完成典型的SQL查询的时间通常小于1ms,同时SQL查询具有"user  stall"特性,也就是从发出查询到数据库系统返回不可能被中断。因此OLTP中的事务时间都是非常非常短的,所以应当把多个事务的查询放在一个线程里去处理!这同时也解决了多线程环境下的资源竞争问题,单线程不存在资源控制,计算机有多少资源你就用多少吧。(这第二条好像又在挑战计算机基本理论了吧,首先多CPU或者多核的机器在single-thread下如何完全发挥性能?除非线程不再是CPU调度的基本单位。其次这样做在数学上是合算的,10个CPU并行解决问题和1个10倍性能的CPU串行解决问题理论上是一样的,但这同样也挑战了计算机的基本概念。当然我可以理解为数据库层面不关心CPU调度,而由操作系统甚至硬件层来干这活,不过如果这个东西能完美做出来的话,那世界上就只需要一台超级计算机了,是不是^_^)

3> 网格计算和在线升级:传统关系数据库经历了从shared-memory multiprocessors到shared disk的体系结构调整,现在应当是面对shared-nothing computer systems的时候了(同意,并行计算是趋势,但这是不是和第二点是矛盾的?)。同时这种网格型的数据库系统应当支持在线调整,而不是停机调整(同意,Oracle, Sql Server这几年的开发在这方面都花了不小的气力)。(还有,本人对集群研究不深,文中频频提到shared nothing,不知道这里指的是和RAC并列的概念还是一个泛化称谓)。

4> 高可靠性:从当年关系数据库花了无数气力在可靠性上面(我又哭,恢复这几年又把我搞的....),到如今数据库应用无不使用复制、双机热备等技术来保证高可靠性。文章认为未来数据库的高可靠性完全由多机的网络环境来保证,而可以撇开老圡的日志-重做恢复手段了。文章直接指出:redo日志可以完全扔掉,undo日志事务一旦提交同样完全扔掉(要是现在就能这么干多好啊)。一个结点挂掉了,从其它结点拿数据恢复起来便是,文章里同样指名道姓:C.Moham同学,你的Aries恢复协议可以扔掉啦(我汗,这可是让我五体投地了这好几年的牛B东西啊),因为永不当机的年代将要到来。(关于这点我也很同意,但是这样一来,万一来个全球停电啥的小说中的情节,是不是世界末日就到了?)

5> No Knobs:不会翻译,意思就是现在数据库要调的东西太多,导致一个优秀的DBA往往比数据库本身要值钱的多(完全同意),所以新一代数据库应该是对外的“旋钮”很少很少(同意但是不认为能很快达到这一目标...)。

   最后是无关感叹一句,大牛写这样的文章能发VLDB,要是我写的话,估计会被评委拖进黑名单永不录用吧....

  评论这张
 
阅读(543)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017