作者文章: Fenng

2009年数据库技术领域回顾

简要回顾一下 2009 年数据库技术领域。过去的一年,差不多也可以说是过度的一年,数据库技术以及数据存储产品等都都或多或少发生一些方向上的转变。

Oracle 收购 Sun,MySQL 前途未卜

Oracle 收购 Sun 可谓一波三折。在获得美国司法部门的批准后,欧盟委员会又开始调查,Oracle 随后抛出一个”十条保证”,眼看着欧盟就要点头,没想到 MySQL 创始人 Michael Widenius(Monty) 则在这个当口不失时机的搞出来一个”拯救 MySQL”的抵制活动,让 Oracle 头疼不已。Monty 这人多少也有点上纲上线,现在已经将 MySQL 的命运和 “Internet Free”这个大话题绑在一起了。

没有人会相信 Oracle 会善待 MySQL,谁会干放虎归山的事情呢? 换了你也会把 MySQL 雪藏起来,毕竟商业公司就要逐利。但是,也很难说一旦收购完成后 ,MySQL 会在短期内消失,基于 MySQL 众多开源分支以及解决方案也都发展的不错,我相信最终决定权还是在用户的手里。就算没有 MySQL,也没准儿会有 YourSQL 出来的…

尽管口水战还在进行,MySQL 的开发者倒是没闲着,在年底发布了 5.5 第二个里程碑版本,原来站点上的 6.0 系列的信息全部撤掉。5.5 更像一个集成版本,将不少第三方贡献的功能改进(比如 Google 的 Patch)融合了进来。

而 Oracle 这一年在产品上的一个标志性事件是推出了 Exadata 存储第二版,与第一个版本不同的是,这一个版本在 OLTP 方面增强了许多。从这个版本开始,Oracle 正式拥有自己的存储硬件(第一版是和 HP 合作的产物)。RDBMS 上,除了发布 11g 第二版之外,也在做功能上的调整,这一次,面向的是数据中心。

NoSQL 的兴起

这是今年数据库领域最有趣的话题。NoSQL 的由来大约是这样的:当时还效力于 Last.FM 的 Johan Oskarsson (现在已经投靠 Twitter 了)组织了一个技术会议,话题是关于”open source, distributed, non relational databases”,为了方便一点,想出来一个 “NoSQL” 的术语。然后由 Rackspace 的 Eric Evans 引用,进而流传开来(refer)。NoSQL 在基于 Key-value 的存储解决方案上提倡去 SQL 化,尤其避免表连接,并且通过一些变通的办法提供 RDBMS 的 ACID 功能(如果需要的话)。

NoSQL 的理念能够短时间内被技术圈所接受,离不开基本的理论支撑:最终一致性BASECAP 这三大基石;一方面是基于 Key-Value 的数据存储解决方案更加成熟,

所谓 NoSQL ,是针对当前对关系型数据库的过度依赖与运用而言,不要将其当成万能药,也没必要过于激进的推行 NoSQL 的模式。在我看来,NoSQL 是针对争夺应用模式上的一种理念上的运用。对多数企业来说,仍属屠龙之技,没必要照搬解决方案。至于传统的 RDBMS 是不是已经走向末路,我认为不尽然。RDBMS 依然尤其广泛的应用场景,而NoSQL如果要有更大的作为也要有来自商业上的更大支持才会有所突破。

SSD 被更多企业接受

Jim Gray 在 2006 年的那句名言:Tape is Dead,Disk is Tape,Flash is Disk,RAM Locality is King ,现在正在被现实所验证。2009 这一年,用户已经开始进一步试水 SSD 产品,包括 MySpace、Last.FM 等网站已经开始在关键应用上部属 SSD(refer: 1, 2)。而国内也有很多企业对 SSD 进行尝试性的使用,这其中包括阿里巴巴、优酷。

更多的存储厂商已经在高端存储中兼容 SSD ,除了去年的 EMC 尝鲜之外,现在 IBM、HDS 、NetApp 都加入了这一阵营。

随着 SSD 的价格迅速下降,很多存储厂商已经开始调整硬件架构,现在有个看似可行的趋势是在 Cache 层与磁盘层之间多构建一个 SSD 存储层,在成本与性能之间做一个折衷。

在去年年底的回顾中,我曾大言不惭的说”相信2009 年会是 SSD 爆发的一年”,总体来看,2009 年对 SSD 的部属还谈不上”爆发”。中规中矩而已。

Amazon EC2 对 MySQL 企业版的支持

尽管我不愿意谈云计算,不过 Amazon 这一年在云计算方面还是做了很大的突破,Amazon EC2 上面现在已经可以跑 MySQL 企业版了,采取按照增长付费 (‘Pay-as-we-Grow’) 的模式让初创公司有更多的选择,这比 SimpleDB 可以说是前进了一大步。 这种模式在国内是否可行,考虑到当前内容审查的问题,还有待商榷。

国内 Key-Value 产品

这一年来国内对 Key-Value 产品的研究与运用和国外基本没太大的距离,豆瓣网先作出了不错的表率,发布了 BeansDB 存储系统,这是一个豆瓣风格的 Dynamo 实现,采用类似 Memcached 的去中心化结构。而最近得到的消息说人人网也要将其内部使用的存储系统 Nuclear 开源。相信在新的一年可供参考的 Key-Value 会层出不穷。

其它方面

Hadoop 过去一年中没有太大的变化,上了一点规模的网站都在用,快成了 Web 数据分布式计划的标准组件了。Doug Cutting 出走 Yahoo! 还是带来了一定的影响 ,不知道今后 Yahoo! 在 Hadoop 方面的支持力度会如何。至于面向列的 DB 发展情况,在过去的一年中进展不大。SQL Server 和 DB2 等方面似乎没什么可圈可点的大事,倒是 PostgreSQL 因为 MySQL 的不确定性而取得了不小的增长。

有一点要补充的是,假以时日,Open Data 或许也将成为一个趋势。

当然,这份回顾有浓郁的个人色彩,有不同意见请留言探讨吧。

EOF

本文发表在《程序员》杂志,不过这里的有些许更新。本文写作时,Oracle 收购 Sun 还没有尘埃落定,现在看起来,一切都变化太快。

借助 Complemento 测试 DoS 攻击风险

前几天从 Sourceforge 上的一篇文章了解到 Complemento 这个工具包,其中的 LetDown 用来做网站网络的压力测试,预防 DoS (拒绝服务)攻击还是不错的,起码可以熟悉一些常见的场景。另外,这个工具可以比较方便的嵌入到 Python 脚本中,用来做更大规模的压力测试(注意随意测试是有风险的)。

Complemento 的 HowTo 文档比较完备,可以用作参考。这个工具包现在也已经内置到 BackTrack 这个用作安全渗透的 Linux 发行版中了。

最近一两年,DDoS 攻击在国内现在更加”流行”而且商业目的明显,经常用做打击竞争对手的武器。当然现在也不只是打Web服务器,也可能会打打 DNS 什么的…

其实我非常好奇各个公司的技术人如何应对 DDoS 的,除了拼硬件,拼带宽,或许饭桌和钱是最好的防御手段。

EOF

BTWNessus 仍然是扫描系统漏洞的最佳工具,居家旅行…必备…

编程语言的选择并非无关紧要

且说前一段时间听淘宝的黄裳讲解淘宝网站架构发展的时候,说起 2004 年底淘宝为何从 PHP 向 Java 转移的事情。为何转换,他阐述了几个理由,其中一个是非常有趣的:当时的 PHP 缺少一个 IDE。而合适的 IDE 能够有效提升规模化软件开发的效率。

我们知道 eBay 在 2002 年的时候也在 Sun 技术团队的帮助下,将整个应用架构从 C++ 迁移到 J2EE 。也就是 eBay 内部所说的 V3 版本(refer)。

最近一件有趣的事情是,据说腾讯的财付通在招聘 Java 方面的高手,”参与系统架构选型”,要把底层架构从 C/C++ 迁移到 Java 架构上来。另外,百付宝的后台技术据说也是基于 C++ 的(最开始的时候只是一两个人写核心代码)。我相信,现在百付宝或许规模还比较小,总有一天,也要面临向 Java 的迁移。这和阿姆达尔定律有点类似,要得到更大的计算能力,就要尽量减少整个系统中的非并行的环节。只是一两个人能搞定的地方,再加入更多的开发人员也是无济于事的,除非,改变协作的模式。

去年接触到的一些国内的电子商务公司,有些已经在进行技术架构上的变迁,当然,多数是从 Windows 平台迁移到 LAMP 平台,究其原因,也无非是成本与效率,而后者,更为大家所看重。当然,也有一些顽固派,比如京东,仍然固守原来的手工作坊技术模式。

如果单兵作战的话,很多程序高手会说,”用什么语言都是无所谓的”。但是如果是团队协作开发的话,用什么语言,影响则是不一样的。对于电子商务网站来说,语言的选择意味着不同的架构路线、不同的开发框架、不同的测试框架、不同的部署流程,最后更为主要的是不同的开发效率,意味着可以把更多的开发资源并入到当前的环节中。

事实上,对于一个高速发展中的网站,每隔18 或 36 个月,几乎总要有一次架构上变革的阵痛。没有这种变革的勇气,意味着以后也不会有人敢做这个尝试。没有这种阵痛,就不会有成长。

变化的节奏最后影响一切。编程语言的选择并非无关紧要,短期看来似乎影响不大,从长期来看,决定最终的竞争结果。这就是我要说的。

EOF

大象跳舞

最近看了不少以前不愿意看的书,《谁说大象不能跳舞?》是其中之一。这是一本教科书,讲述的是如何挽救一家走向衰败的大公司。

所处的位置不同,不同的人阅读这本书会有不一样的体会。给我印象最深的是郭士纳初入 IBM 所采取的策略,”我们只有很少的时间用来找出问题,大部分时间、精力和关注点都将用于解决问题和采取行动上。”

问题本质

新的 CEO 上任之前从众多人的建议中就已经抓住了问题的本质(收到众多建议的时候如何过滤重点?):IBM 不缺乏能人和天才,公司也不缺致胜战略,新领导人要从”战略”和”文化”等方面推行改革入手。这个改革,体现在具体行动上,是后面的”热烈拥抱”计划,说白了,也就是”拥抱用户”,倾听用户的声音,解决用户的问题,赢取客户信任。然后才是财务方面的止血,最后才涉及到远景规划。能从千万重关系中抓住这些关键点,这是核心能力的提现。

对待人才的策略,也就是如何对待现有管理层,郭士纳也是自有一套。在第一次会晤管理人员的时候就主动传递了这样的信号: “IBM 历来是个人才济济的地方…只有如果有必要的时候,才会从外部引入人才”。但是我相信,这样的策略恐怕只有针对 IBM 等少数公司才会有效。多数公司不能照搬–如果问题的本质抓不住的话。(实际上,郭士纳后来还是招聘了不少曾经和他合作过的管理人员进来。)

对于这只管理团队,也不是真的没有问题 ,当时的 IBM 比较严重的官僚气是存在更多关心公司内部部门之间利益争夺而不是关注竞争对手的情况。任何一家大公司都会有既得利益者,这一点大家都会有共鸣吧。

“大象跳舞”

这本书的书名有多重隐喻。其命名或许和 TIME 杂志的这篇 Can This Elephant Dance? 有关。”大象跳舞”是什么意思? 对于 IBM 这样的庞然大物来说,跳舞意味着优雅、协调,意味着摆脱笨拙。而一旦大象能够做到以这一点,那么竞争对手自然不足为惧,因为问题来自自身而不是外界。

“Elephant Dance” 应该是个证券行业常用语,大致是”大盘股活跃,反复上涨”之意,从这个角度上来说,郭士纳也做到了,IBM 股价在他的任内也是一路上涨。

EOF

乱翻书,不求速进,但求有所得。