开源数据库选型指南_第1页
开源数据库选型指南_第2页
开源数据库选型指南_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、开源数据库选型指南文章摘选自来自开源技术选型手册第17章作者:何伟平如何选择数据库:从我自己工作这些年的经验来看,数据库选型基本上都是从如下几个方面进行考虑的:1) 稳定性,包括软件的运行稳定性和开发的稳定性,像老牌的Informix被收购导致Informix离开数据库提供商的列表的案例,就是开发不稳定的例子;2) 特性,包括标准兼容性、性能等;3) 可靠性,包括数据库的额数据类型校验、数据完整性、事物等对ACID(原子性、一致性、独立性和持续性)的支持;4) 应用定制,包括存储过程支持、数据库自身的扩展等;5) 成本,主要指许可证和商业支持;6) 用户经验,主要指用户群体,用户的使用经验,尤

2、其是大型用户;7) 开发者熟悉程度,针对应用开发商自身对相应数据库的熟悉程度。常见的开源数据库有PostgreSQL、MySQL、Firebird、SQLlite、Berkeley DB(此产品已被Oracle购买)。特性比较:1. 对SQL兼容性上,PostgreSQL和Firebird都做到了很大程度上兼容SQL2003,在SQL上兼容性上处于第一梯队,并且其ACID事物系统经历了相当长时间的考验。MySQL在很大程度上兼容SQL2003,但是仍然有不少目前还不兼容的方面,在将来的版本开发中还有一定的工作要做。SQLlite支持一个相当大的SQL子集,但是因为自身定位,还不是完全兼容SQL

3、2003,将来估计也不会全面兼容SQL标准。Berkeley DB是一种哈希(散列)数据库,本身不兼容SQL语意。MySQL、SQLlite、Berkeley DB都声称完全支持ACID事务系统,但在某种程度上都还比较新,需要一定的时间考验。2. 稳定性方面,各种数据库都自称非常稳定,并且都号称有长期运行的证明,但是从细节上来看,不同的数据库对待数据完整性等方面有各自不同的行为。就ACID的严谨上,PostgreSQL、Firebird做得最好,MySQL等需要用户有意识地进行控制。举例:在MySQL里,直到5.0.45版,默认的时候执行下列操作:Create table testsmalli

4、nt (f1 smallint);Insert info testsmallint(f1) values(9999999);Select * from testsmallint;后都会发现,MySQL会不做任何错误报告地将用户输入数据截断。这个问题虽然可以通过配置MySQL使用严格的SQL模式纠正,但是从ACID的严谨性上,必须承认这个环节是误导用户的。3. 在平台支持上,几乎所有前面提到的数据库都支持最主流的操作系统,比如Linux、BSD系列、Solaris、AIX、HP-UX、OS X和Windows等。其中PostgreSQL的支持范畴甚至包括VMS和OS 2等。除非用户自己的系统实在

5、罕见,否则,这些数据库都足以应对绝大部分用户。4. 在性能上,PostgreSQL和Firebird都是基于多版本机制(MVCC)实现大并发的读写支持。MySQL的并发是一种基于行锁的机制,而SQLlite和Berkeley DB基本上都属于锁机制。在读写相对均衡的并发环境里(经典的数据库类应用),PostgreSQL和Firebird要远胜于其他三种数据库,在面对大的并发均衡读写的时候,MySQL、SQLlite及Berkeley DB都需要在应用层上做更多的事情。在比较读写不均衡的场合,尤其是近乎只读的场合,Berkeley DB的性能最优,次之SQLlite,然后是MySQL,在这种场合

6、下,PostgreSQL和Firebird谈不上有性能优势。5. 从扩展性上来看,PostgreSQL因自身结构的优势,具有最高的扩展性,用户甚至可以通过扩展模块的方法自己扩展数据库核心功能,最著名的例子就是PostGIS;Firebird则拥有相当完整的存储过程支持,因此扩展性良好;而相比之下,MySQL的扩展能力一般,基本都只能围绕在客户端应用进行,对存储过程的支持只是最近一两年的事情,并且仍然非常受限制。其中SQLlite因为比较轻量,可以成为其他软件的扩展,与此类似,Berkeley DB作为一种键值对的库风格的数据库,也可以嵌入到其他软件中。6. 接口丰富性上,PostgreSQL、

7、Firebird和MySQL都支持近乎全部流行的客户端接口,包括C、C+、Java、Perl、Python、PHP等。而SQLlite和Berkeley DB更多的是支持C和C+层面的接口及各种语言的绑定。7. 在成本方面,SQLlite的许可证是公共域许可,也就是说出了免责之外,原作者没有任何要求。PostgreSQL用的是BSD许可证,其基本概念是只要产品中包含了该版权的声明,用户就可以做任何事情。Firebird的许可证与PostgreSQL类似,但增加了少许品牌权益条款,实质上和BSD许可证一样。MySQL、Berkeley DB是一种GPL许可证的变种。MySQL的担忧来自于预计会在

8、2008年上市(IPO)的MySQL AB,不知会对将来版本的许可证策略有何影响。Berkeley DB目前是Oracle公司的产品之一,因此也可能会在更新版本的区间内受到一定影响。用户组:各个用户有各自的用户群组,如果从用户数上面来书,拜互联网址各种应用所赐,MySQL无疑是用户数最为庞大的数据库版本。PostgreSQL在近几年的发展势头非常强劲,Berkeley DB和SQLlite也在不同的领域得到了相当多的重视。Firebird目前更多的是在传统的InterBase用户群中发展。并且,Firebird 2.0用C+改写了原本1.0的C代码。整个系统稳定下来预计也需要一到二个版本的积累

9、。因为各个系统的许可证不同,因此几个不同的库的商业支持也各有特点。就MySQL而言,基本上数据库核心级别的商业支持只有MySQL AB,而MySQL AB已经在2008年3月被SUN公司收购,在这种情况下,MySQL AB的商业支持策略可能会有所调整,尤其是收费策略。对比之下,PostgreSQL的商业支持公司比较多,在全球范围有七八家之多,并且支持的力度都相当强,都可以提供能够在数据库核心级别进行修改、定制等支持工作。在国内也有比较稳定的用户组和一些开发人员进行支持和服务活动。Firebird则在这两年开始表现出一个有前途的开源软件的气候,用户群体和开发人员都有了很大程度的增长。Berkel

10、ey DB和SQLlite更多的是在相对专业的领域里又相当固定的用户群体。比如,Berkeley DB在cache类应用中,SQLlite在嵌入的应用中。而开发者的支持则基本上上集中在各自的原作者或是所属的公司。相比之下,PostgreSQL拥有最庞大的数据库核心开发成员,代码提交者超过了百人的规模。其次是Firebird,再次是MySQL和Berkeley DB,而SQLlite很大程度上还是RHD一个人维护。各个数据库的活跃程度也不同。在这些数据库中,PostgreSQL应该说是最活跃的,每年至少一个主版本发布,目前主版本已经进入到了8.3,Firebird也经历了一次彻底的C+改写,从1

11、.x系列到了2.0。MySQL已经发布了两年多,正在向6系列进化。而目前使用MySQL4的数量仍然巨大。SQLlite则在嵌入领域得到了相当广泛的应用。Berkeley DB今年在国内的使用保持一贯的领域:主要还是cache的范畴。我个人认为,在最近两年,PostgreSQL在众多开源数据库中会是增长最快、受重视最多的一个品牌。这一方面是因为经过多年的发展,PostgreSQL在各个方面都打到了近乎完美的平衡:特性、性能、稳定性和扩展性等方面。另外一方面,也是因为其他各个品牌的开源数据库自身定位不同或者正在经历比较复杂的变化,需要一定的时间来稳定。比如,这些年MySQL在扩展ACID全面兼容方

12、面做了巨大的努力,但是仍然需要时间来完善。Firebird的大规模的代码基础的变化(从C到C+)更是需要时间来稳定。Berkeley DB和SQLlite关注的领域明显不同,因此至少目前并没有打算真正向全面的RDBMS数据库系统方向发展。综合起来,笔者的建议是在嵌入式领域,建议使用SQLlite,因为它本身只是一个库性质的部件,简单,且因为支持SQL语法,也很容易使用。除非原来的应用就是基于Berkeley DB,比如类似的cache这样的应用,否则不太推荐Berkeley DB,因为相比SQLlite而言,Berkeley DB无论在开发、易用和费用等环节都相对更高。在比较经典的RDBMS这

13、块,笔者的建议是:如果原来是使用MySQL很好的用户,继续使用MySQL。如果是新的用户或是从比较经典的ACID数据库转换过来的用户,或者不满足与类似MySQL的现有功能的用户,则建议采用PostgreSQL,因为这些年PostgreSQL的进步确实巨大。甚至在广为诟病的性能上都在很多场合超越了MySQL,成为了一个非常优秀的开发平台。对于Firebird,在近期内不推荐在相对重要的场合使用它,但是值得开始预研和替换一些相对简单地应用数据库。套句股市俗话,对MySQL采取持有或抛出的态度,对PostgreSQL是买进态度,而对Firebird持观望态度。还有一类用户,是需要定制数据库开发自己的特殊技术应用或软件产品的用户,比如搜索引擎开发商和特殊的企业应用软件(比如E

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论