2006年03月01日 00:00 7293

  第一站 走进开源数据库
  
  10%的投入 实现90%的理想
  
  在Linux这种开放源代码的操作系统已经逐渐被越来越多的企业应用时,在基础软件平台的另一端,开源数据库开始显山露水。
  
  近2年来,美国一些大企业纷纷采用开放源码数据库,它们往往在总部采用商业数据库,而在分支机构的Linux服务器上采用开源产品。这些数据库除了费用便宜,还各有独到之处。与商业化产品相比,开源数据库结构简单,但功能不简单,读取操作快捷,易管理,甚至不需要全职的管理员。 由此吸引了像Cisco、Yahoo这样的大公司,以及众多的中小企业。而在国内,我们熟悉的新浪、网易等大型门户网站也是开源数据库的使用者。
  
  在开源运动的热潮中,我们随处可见开源数据库的身影。MySQL、PostgreSQL、MaxDB、Berkeley DB,开源数据库大家庭成员众多,其中不乏出类拔萃者。
  
  一些分析家称,“Oracle、微软和IBM的产品提供了非常强大的功能,但其功能只有40%被客户利用。”因为企业都在寻求“瘦身”,所以这60%的未用功能完全可以减掉,而开源数据库产品追求的目标是用10%的投入实现90%的理想。
  
  第二站 市场格局
  
  让数据库巨头忐忑不安
  
  目前的开源数据库还不太可能在功能和处理能力方面追上商业级产品,但价格的侵蚀力无法回避,开源数据库迅速增长的市场份额甚至让数据库领域的三巨头,Oracle、IBM、微软都感到忐忑不安。
  
  去年7月, 接受Forrester研究机构调查的企业中有一半称,正在考虑是否采用开源数据库产品。Forrester的分析师Noel Yuhanna称,到2008年,开源数据库的市场规模会由现在的1.2亿美元增长到10亿美元,这将引起传统数据库市场的骚动。
  
  从功能上来看,开源数据库与商业数据库擅长的领域并不相同,商业数据库在处理能力,集成工具环境等方面依然强大,而开源数据库强调的是在某几个单项功能上的突出表现,以及轻便、易用的特点。MySQL AB公司的CEO Mickos说:“别以为你能把Oracle干掉,我们需要考虑如何才能开发和服务一个新的市场。”
  
  MySQL关注的新市场目前还不错,根据Evans Data Corporation的调查,MySQL在开源数据库市场拥有40%的占有率,安装量超过500万套,紧随其后的是Firebird(39%)和PostgreSQL(11%)。
  
  Forrester预计,明年会有35%的开源数据库产品处理虚拟商务活动。MySQL强势的市场增长,不仅是在开源市场上独领风骚,更让人惊讶的是对商业数据库市场的入侵,这跟开源产品的价格与成熟度紧密相关。
  
  MySQL大约每2年进行一次大的版本升级,每几个月就会有一次小规模的升级,这种小步快跑式的升级逐渐拉近了与商业数据库产品之间的距离。据MySQL称,今年晚些时候推出的MySQL5.0正式版将具有更多的企业级特性。
  
  Yuhanna指出,MySQL的客户群体正在日益扩大,NASA、雅虎、GOOGLE、美联社以及 Suzuki就是其中的客户。他谈到,“MySQL花了很长的时间才从甲骨文手中争取到上述客户。与此同时,开源数据库产品日益成为客户值得信赖的产品,我认为,在未来几年内其客户数还会增加。”
  
  价格本来是一个敏感的话题,但由于数据库市场的三分天下,数据库这片“海洋”近几年显得波澜不惊,数据库产品的价格似乎也在大家的默契之下风平浪静,由而开源数据库用户数量的增长,则把价格问题的波浪推到了岸边,既然可以用非常低的价格、甚至是免费得到数据库产品,那么就有相当一部分用户从商业数据库的阵营被吸引到开源这边来。这导致了像IBM和甲骨文这样的公司要考虑产品降价的问题,Forrester研究机构的分析师Noel Yuhanna称:“商业厂商将会在未来12~24个月内降价产品价格。”
  
  比起IBM和甲骨文来说,更应该感到威胁的是微软。在上世纪90年代中期,凭借着一款低端数据库产品SQL Server,微软硬是在Oracle、IBM、Sybase、Informix把持的数据库市场中分了一杯羹。微软当时最成功的策略就是利用SQL Server与商用软件高度兼容,以及低廉的价格从低端市场逐步向上渗透,现在,已经有将近20%的全球市场占有率,中小企业是微软的大本营。
  
  而开源数据库有着与中小企业天然的亲密关系,它们与微软产品之间的相似之处在于软件的兼容性和开发环境,微软则在简易性方面一直都有着上佳的表现,但开源产品并不完全依赖于Windows,它能够运行在其他操作系统之上,随着产品的稳定和成熟,开源产品对中小企业更具吸引力。
  
  与开源数据库产品的频繁升级不同,SQL Server2000的推出已经是1999年的事情了,在每次SQL Server被黑客攻陷之后,才会出补丁软件,记者采访了多家网站的技术人员,他们表示用SQL Server会有这样的担心:“因为源代码不公开,问题出现时,损失已经造成了。”目前,国内的IDC有一个不成文的规矩,如果网站要把系统放到服务器上来时,要问一句数据库是不是SQL Server,还要亲自检看是否打了最新的补丁,如果用的是开源数据库就不会这样的问题。开源数据库的成长无疑动摇了SQL Server在中低端市场上的强者地位。
  
  另外一个有意思的地方就是,开源数据库厂商可能会成为被收购的对象,这主要是指MySQL这样的企业,尽管MySQL的用户绝对数量不大,但在份额相近的商业数据库市场上已经能够左右天秤的摇摆,此外,MySQL在中小企业和开发人员心目中的超强人气也很有商业价值。
  
  一些国外的分析人士曾预测,MySQL可能被像Red Hat这种开源操作系统厂商所收购,其中也不无道理,Red Hat收购MySQLl会成为数据库-Linux强者,如果Red Hat收购了MySQL,会为他的生产线增添一员大将,目前,很多企业在应用开源数据库的同时也使用开源操作系统,这种搭配本身也说明了市场的一种需要。
  
  日前,又传来了MySQL和Red Hat公司加强合作的消息,双方为客户提供整合的、协作的技术支持。Red Hat和MySQL公司也计划对MySQL数据库和Red Hat的Cluster Suite以及Global File System进行兼容性测试。
  
  第三站 这里有5大景点
  
  开源数据库各领神通
  
  在充满传奇色彩的软件行业,开源运动早已不再是一种哗众取宠的时尚,而是成为一种潜移默化的文化。这里包括“最受欢迎的开源数据库”MySQL、“最先进的开源数据库”PostgreSQL、“新世纪的关系型数据库” Firebird,此外还包括将嵌入式作为自己重要使命的精巧的Berkeley DB和曾经在ERP领域取得不俗业绩的SAP DB(MaxDB)。 更为可喜的是,伴随着Java技术而快速发展的功能同样出色的Apache 组织的Derby(由IBM著名的Cloudscape 10演化而来)、Hypersonic的HSQL等,凡此种种, 开源数据库阵营可谓“乱花渐欲迷人眼”。
  
  那么如何选择和自己的业务比较契合的开源数据库呢?本文将选择以下五种比较常见的开源数据库,从功能特性及应用等角度进行简要的评析,期望能够对用户有些帮助。
  
  MySQL的发展在一开始便定位于快速、稳定的大型关系型数据库的目标,因而在设计上当性能和标准不相协调时,更主要的是性能和稳定性的考虑,这也许可以解释为什么MySQL 4迄今还不支持如外键引用等数据库管理员们所钟爱的功能。
  
  如今的MySQL 4版本可以运行于多种操作系统平台,支持全文搜索,提供了常见开发语言的编程接口,最大可支持64TB的表空间……,而可伸缩的设计体系使得MySQL既能够提供企业级的客户机/服务器工作方式和复杂的集群工作方式, 也能够作为嵌入式的数据库引擎集成到其他的应用系统之中。
  
  对于那些需要海量数据的检索,不需要复杂的事务操作的用户来说,MySQL应该是一个比较理想的选择。
  
  MaxDB是2003年SAP公司和MySQL AB公司合作之后SAP DB新的名称。MaxDB是一款重量级的、获得SAP R/3认证,适宜于联机事务处理和联机分析处理等多种业务类型的高可用性、高可靠性和极具伸缩性的数据库,支持大容量的用户和并发业务操作,采用多线程多进程的服务器设计,支持多处理器的应用,并通过集群和热部署提供高可靠性,支持TB级的海量数据,支持企业级的数据同步和复制等复杂应用。
  
  上述的功能如此强大,就难怪Intel, Toyota,DaimlerChrysler, Yamaha等业界列强选择它了。应该说,对于开展ERP业务的用户,尤其是采用SAP ERP系统的用户,如果考虑较高的性价比,采用MaxDB应该是非常明智的选择。
  
  PostgreSQL自1986年发展迄今已有近20年的历史了。如今的PostgreSQL 8.0可谓身怀绝技,它支持一系列关键特性:支持分布式的事务处理;支持外键功能,以及所有的SQL 99的连接类型、触发器;支持用户自定义的对象数据类型和操作;支持子查询、部分索引和表达式索引;支持多种语言产生的存储过程,同时PostgreSQL提供了多种编程接口,拥有热备份和选择性备份恢复工具等……。如此奇妙的特性,无怪乎它享有“最先进”的美誉了,印度的农业信用社就使用PostgreSQL处理金融业务。
  
  但是,和MySQL相比PostgreSQL的性能一直被视为弱项。对于那些需要复杂业务操作,而对性能要求不是过于苛刻,同时期望系统的设计富于扩展性的用户而言,不妨采用PostgreSQL。
  
  FireBird数据库是Inprise(Borland)公司在自己的IDPL(Initial Developer's PUBLIC LICENSE)许可协议基础上,将Interbase 6.0数据库贡献给开源组织后的产品。
  
  FireBird全面支持SQL 92 Entry Level 1的功能和绝大部分的SQL 99功能,能够运行于Windows、Linux或其它Unix等多种平台上。但是由于未知的原因,Firebird的后续开发比较缓慢,迄今为止的1.5版本,仅仅是用C++重写原有的C代码,缺乏新的功能点,而且其开源部分似乎并不完全,如:缺乏企业级应用的复制机制。然而,作为一款成熟的起步级的数据库管理系统,Firebird还是值得被研究和分析的。如果你不更改FireBird的数据库引擎,那么你可以将FireBird任意应用到你的商业应用之中。
  
  最后我们来对Berkeley DB这一特殊的开源数据库进行评析。严格地讲,Berkeley DB并不是一个数据库管理系统,它是作为嵌入式的数据库引擎来设计的。例如MySQL的数据存储引擎便可以在Berkeley DB和InnoDB之间选择。Berkeley DB提供了一个可伸缩、高性能和能够进行事务处理的数据管理和数据访问服务库,通过应用编程接口的普遍支持, 可以很容易地嵌入到其他的应用之中, 所有数据库相关的底层操作都是由Berkeley DB的库函数来完成。最新的Berkeley DB也提供了对XML进行操作的服务。
  
  如果你需要在应用程序中嵌入数据库操作功能,而又追求较高的性能,那么Berkeley DB正对你的胃口。这也就是为什么Berkeley DB能够得到Cisco等设备巨头的青睐的原因。

  
  旅行提示:
  
  商业模式:除了中小企业,许多大企业也在使用开源数据库,这些大用户往往是通过交纳服务费来获取所用产品全面的技术支持,这将在一定程度上改变软件业的商业模式。
  
  在传统的软件商业模式之下,用户首先要支付价格不菲的许可证费用,但要获得技术支持还要另交服务费。相反,许多开源产品仅对技术服务收费。显然,这种低成本的模式极具吸引力。在未来,商业数据库厂商也许会对这种模式进行认真的研究,而对那些以许可证销售为主要收入来源的厂商来说,肯定会造成巨大的影响。
  
  第四站 体验应用
  
  中小企业的大餐
  
  花10%的费用达到90%的效果,由于价格低廉,开源数据库最为中小企业所青睐,并不是所有的中小企业都能够享受到这样的免费大餐,开源数据库还是有那么一点门槛。
  
  开源数据库最初大多是由开发团体或开发爱好者凭兴趣创作而来,产品中的很多设计针对了开发者的偏好,但没有照顾商业组织和技术力量薄弱的企业,例如,MySQL目前的版本就不支持存储过程、触发器,以及视图界面等功能。因此,要求中小企业有一定的技术力量,至少要有几名学过数据库的专业人才。
  
  除了这点门槛以外,使用开源数据库可算是一马平川了。开源数据库产品通常很容易上手,SQL(结构化查询语言)是通用的数据库语言,学过数据库的人就能使用,产品可以从网上免费下载,管理工具和技术资料同样可以网上下载,英语不好没关系,有热心人把产品自带的产品说明翻译成中文的,而且网上交流开源数据库产品使用经验的地方也不少,几个主流的产品很容易得到网上高手的指点。一些接受采访的中小企业用户告诉记者:“MySQL的维护很容易,任何工程师一经培训都能使用。”
  
  除了中小企业,很多网站也把开源数据库作为首选,论坛、BLOG、调查、搜索、邮件、发布系统,这些网站的主要应用系统都可以用开源数据库来支持。包括Yahoo、Google等大网站,使用的都是开源数据库,而国内的新浪、网易也是开源数据库的受益者 。
  
  典型应用
  
  网站是目前开源数据库应用最广的领域,这里面最典型的应用就是由全系列的开源产品搭建网站的所有业务系统,下面就是一个很有代表性的例子。
  
  www.ChinaUnix.net是目前中国最大的Linux/Unix技术专业社区网站,创办于2001年5月。ChinaUnix.net网站主要交流Linux/Unix操作系统及其下的各种软件技术及应用。截至2005年4月,网站的注册会员已经超过26万,平均每天同时在线人数为1500人左右,其中80%以上为系统管理员、网络管理员、软件开发者及IT专业技术和管理人员。从2001年创办开始,ChinaUnix.net就使用MySQL来支持网站的应用,负责ChinaUnix.net运营的优势时代公司总经理樊强告诉记者:“我们目前所有的网站应用都使用了开源数据库,而且整个应用系统都建立在开源软件产品之上,公司用了很小的投入就建立了自己的应用,也发挥了我们技术人员的特长,效果令人满意。”
  
  网站的软件环境:操作系统FreeBSD; 数据库MySQL; Web服务器Apache; 开发工具PHP、C/C++。
  
  1. 论坛系统的应用
  
  ChinaUnix.net(以下简称CU)的核心应用——论坛系统,就是建立在MySQL之上。CU目前共有两台硬件服务器,其中一台服务器放置MySQL的Master库,另一台服务器放置MySQL的Slave库;Master库给用户提供注册、发帖、编辑、删除等操作;Slave库提供给用户查看帖子等查询操作。
  


  Slave库与Master库保持数据同步,除了起到分流作用,也起到实时备份的作用。当将来用户量加大时,可以通过增加多个Slave库,做到多台服务器分布式的管理,因为用户的大部分操作都集中在查看论坛内容上,当多台Slave库同时工作时,可以分流用户,这样可以大大提高用户的访问速度和减轻服务器的系统负载。
  
  2.其他的应用系统
  
  在条件允许的情况下,为了达到很好的访问效果,可以让每种应用使用单独的一台服务器,单独用一个数据库,在CU目前只有两台服务器的情况下,为了使每一种应用都不互相影响,采取了在同一台服务器里,每种应用系统使用一个MySQL的方式,也就是同时启动三个MySQL进程,分别运行于不同服务器的端口。
  
  一般情况下,MySQL默认的端口是3306,CU在应用中重新定义了MySQL的启动文件,让其绑定在某个端口上,如BLOG系统的数据库运行于3310端口,内容发布系统的数据库运行于3311端口,论坛和内容搜索系统的数据库运行于3312端口,这样,一台服务器上就分别运行了三个互相独立的MySQL数据库,这样做的好处是,任何一个数据库出问题,都不会影响其它的服务,当然,这就要求提高服务器的硬件配置。
  
  3.技术应用亮点:静态页面访问
  
  从图中可以看出,作为整个应用中心的数据库采用了主机托管方式。MySQL的网络特性使得用户可以通过Internet在任何地方共享数据库,网站的应用系统基于浏览器/服务器的结构运行。
  
  为了减轻数据库的负载,CU论坛在很多页面都采用了定时更新的静态页面,静态页面由程序从数据库里读取数据,放在Web服务器上,并定时更新,这样,当用户访问一些实时交互要求不高的页面时,就可以不需要调用数据库,从而减轻数据库服务器的负载。
  
  旅行提示:
  
  安全问题:免费的产品是不是在安全方面隐患更多?这其实是一个一体两面的问题,源代码都公开了,容易被攻击,也容易被防范,不像闭源的产品,大家不知道漏洞在哪里,往往是造成了损失之后一段时间才能打补丁。开源产品的漏洞通常被发现后就会上传到互联网上,开源项目的维护者能够在较快时间内推出补丁软件。
  
  第五站 技术的前沿
  
  XML和自动化处理的呼声
  
  在与一些开源数据库使用者的接触中,记者发现管理工具的缺乏是开源数据库比较普遍的一个问题。很多开源数据库缺乏管理工具,需要借助第三方的工具。存储过程一直以来被认为是MySQL缺乏的基本功能,但一些开发人员并不这么认为,一些有经验的开发人员宁愿用函数,他们认为存储过程虽然提高了效率,却牺牲了一些灵活性,而且不一定是他们想要的。
  
  在开源数据库产品不断进化的同时,商业数据库产品近年来在实现XML以及自动化处理等方面再次将数据库技术向前推进,这是开源数据库下一步追赶的目标。
  
  强调XML特性
  
  今年出现的许多新技术可以提供一些特有的能力,能够将原生XML格式的数据存储在关系数据库中。
  
  由于法规遵从性的要求,越来越多的企业需要将电子邮件、Web日志,可能有一天还包括办公室中的每一次通话记录存储下来,而这些数据通常都不是以行和列的格式存在的,因此存储这类数据的能力也将是至关重要的。
  
  Oracle下一个版本的软件将支持XML Query语言(XQuery)。这将是一种用于原生XML访问的全新W3C标准。下一个版本的IBM DB2预计于2006年推出,而Microsoft SQL Server 2005也将于2005年下半年发布,它们都将支持XQuery。所有这些数据库都将在数据库内实现混合式的SQL和XML查询。
  
  Burton 集团的高级分析师Peter O'Kelly 认为,如果用户的关系数据库支持原生XML数据,那么就可以享受到XML数据格式带来的出色诚信特质,例如,可以在整个文档中插入电子签名,也可以将采购订单直接存储,无须进行任何的转换,这些特性都可以确保文档不会被篡改。”
  
  据Gartner集团的Feinberg 称,数据库厂商大动干戈的主要原因是,它们都相信,如果谁能控制、支持和存储所有类型的数据,那么这样的厂商也就有能力扩展自己其他产品和服务的市场空间。
  
  增加自动化处理
  
  多数分析师都赞同这样一个观点:降低数据库的支持成本将是促进变革的另外一股巨大动力。
  
  IBM公司信息管理软件战略主任Jeff Jones说,IBM正在DB2中投入大量的资源,目的是要实现性能改善的自动化,也就是说在不需要数据库管理员对SQL进行调整的情况下实现性能提升。在DB2 8.2版中就已经包含的自动性能优化、安装和建立数据库时的自动配置。未来的版本将着重自我诊断和自我修复功能。
  
  微软计划在SQL Server 2005中提供一些优化技术,利用所谓的“闭合回路系统”可以对查询进行优化,这种方法可以从查询中归纳出统计信息,并在下次用到这个查询时使用不同的优化方案。
  
  到现在为止,Oracle一直都将注意力放在了数据库的管理方面。Oracle 10g中就包含自动备份和恢复、内存管理、统计和存储管理能力。Oracle 公司数据库产品管理高级主任Mark Townsend指出,下一版中还将注重自我诊断、自我调节和自我修复等能力。
  
  第六站 项目的维护
  
  该由谁来推动?
  
  与其他开源产品一样,开源数据库产品的升级换代和技术服务是一个有共性的问题,对于这一问题就连开源产品的提供者也有不同的见解。
  
  一种观点认为,开源模式本身就是最好的质量保证。开源社区的联合资源可能远远超过一家传统软件厂商的资源。
  
  至少,这是Gluecode公司观点。该公司的产品Gluecode JOE是一种应用服务器的开源平台。虽然Gluecode的员工为该项目做出了重大贡献,但他们并没有做像其他公司(例如MySQL和CA)那样,担任其代码库的惟一管理人。
  
  相反,Gluecode JOE的许多主要组件(包括Geronimo应用服务器、Derby数据库和Pluto门户框架)是由Apache基金会负责维护的。
  
  该公司CTO Boynes说:“用户经常会问:这个产品5年后还能存在下去吗?”而依靠像Apache基金会这样得到广大合作伙伴认可,并拥有辉煌社区支持历史的组织,就意味着Gluecode JOE的技术寿命得到了保障。将开放源代码的开发过程交给Apache后,Gluecode可以将精力集中在如何增加基础产品线的商业价值上,这包括优化用户界面和提供全面的企业支持服务。
  
  当然,并不是所有人都赞同这种作法。JBoss公司创建人、CEO Marc Fleury就是这一观点的反对者。
  
  同Gluecode一样,JBoss也将目标瞄准建立在基于开源的门户和其他复杂的企业应用方面。不过,对于Fleury来说,仅凭社区推动产品开发是不够的。
  
  Fleury认为,JBoss不只是简单的再包装以及为已有的开源项目提供支持。它将明确地在项目中雇佣全职的项目负责人,并作为所有捐赠代码的最终管理人。
  
  Fleury说:“我们是自由软件的软件发布者,JBoss和MySQL等公司可以被视作第二代开源厂商。通过掌握更多的代码所有权,我们这些公司比传统开源厂商能够赋予自己的产品更多的可信性。”
  
  两家公司,两种非常类似的产品。虽然同是开源产品,但却采取了不同的方法。您会如何选择呢?我想,最后将取决于您到底信任谁。
  
  旅行提示:
  
  开源≠免费:开放源代码并不意味着完全免费,这里需要注意开源产品所遵守的相关开放协议,例如BSD协议、GPL协议、Apache协议等。但不可否认的是,即使是收费,开源产品的花费仍然极低。
  
  例如,MySQL虽然作为开放源代码数据库,但采用的是双重授权策略,对于不愿公开自己源代码的使用者,需要付费使用MySQL, 而对于开放源代码的使用者,可以基于GNU的公共许可协议GPL来使用。

编辑: 谌力 吴治电