目前市场上有些什么样的数据库管理系统(DBMS),它们都有什么特点?它们之间的优缺点有什么?它们的使用场合分别是?
1 要求
目前市场上有些什么样的数据库管理系统(DBMS),它们都有什么特点?它们之间的优缺点有什么?它们的使用场合分别是?
1.1 目前市场上有些什么样的数据库管理系统(DBMS)
目前市场上的数据库管理系统(DBMS)常见的品牌有:Oracle、Sybase、Informix、Microsoft SQL Server、Microsoft Access、Visual FoxPro、PostgreSQL、mySQL、DB2、Ingres、MongoDB、达梦(DM)数据库。
1.2 它们都有什么特点?它们之间的优缺点有什么?
整体上可以把这些数据库分为商业数据库和开源数据库两类。当前主流的商业数据库有Oracle、微软SQL Server、IBM DB2和SybaseAdaptive SQL Server。而在开源方面,主要有三家主流数据库:MySQL、PostgreSQL和Ingres。这两类数据库都已经证明了自己可以胜任数据存储和管理的需要。但相对于商业数据库,开源数据库可能是比较低的数据处理数量、缺少的功能、受限制的图形化管理,较低的安全性、或者是一些其他商业数据库有而开源数据库不具备的的东西。
2 商业数据库和开源数据库总览
2.1 商业数据库之Oracle
Oracle是商业数据库的代表,具有非常丰富的功能、广泛的平台支持和大量的附加功能。在IDC的一个调查中,Oracle占据了数据库市场的44%,增长了14%。
Oracle的功能从表分区和大量的统计功能,到一些高可用功能,诸如本地复制、数据镜像和应用集群(Real Application Clusters,RAC)等。
Oracle另一个强大的功能是在线表和索引重建。在很多数据库中,需要离线进行重建,也就是说当索引被重建的时候,不允许访问数据,因为这个操作要求独占性访问对象。当然,这不是Oracle的全部功能,只是其所能提供的高级功能的一些示例。
2.2 商业数据库之IBM DB2
在2004年,DB2数据库的销售主要集中在IBM大型机和它们自己的AS/400系列系统中。尽管根据2006 IDC的调查报告,DB2的市场占有率高居第二位,但是与Oracle相比,它的销售额和市场占有率都要低很多。
现在除了IBM的专有操作系统外,DB2可以运行在Windows、Linux和Unix平台上。新版的DB2 V9在XML处理方面具有较大的改进。在我最近的一个使用了其他数据库的项目中,在规划XML方面我们做了大量的额外工作。如果我们所使用的数据库具有 DB2 V9的相应功能,或许就不会有这么多麻烦了。
另外,IBM正在通过其DB2 Everyplace进入移动领域,目前支持PDA和智能手机。
2.3 商业数据库之微软SQL Server
一直以来,微软的SQL Server都只可以运行在其Windows操作系统平台上,但是在上一年的今天,也就是2016年的3月8日,宣布推出可运行在 Linux 系统下的 SQL Server 数据库。SQL Server的市场份额将会更快的增长。
根据IDC的统计,微软的SQL Server是市场份额增长最快的数据库,市场份额仅次于DB2,排名第三。
在最新版本的SQL Server 2005中,增加了许多新的功能,使其进一步对Oracle够成威胁。其中包括表分区、在线索引操作和很多其他管理功能。从下文中你将看到,很多用户对SQL Server的直观、易用的管理界面深表支持。
2.4 商业数据库之Sybase
最新版本的Sybase Adaptive Server与以前的版本相比,具有更丰富的功能设置,但是与上面Oracle和DB2两个商业数据库相比还是少很多,举个例子来说,它缺少对高可用群集和在线索引重建的支持。这或许是为什么在IDC的一次调查中,它仅排名第四,只有可怜的3.2%的市场份额。
Sybase比较强大的地方在于它对资源的低占有率上。在这一方面,Sybase 15还引入了新的“专利查询过程技术”,显示了增强的性能和降低的硬件资源消耗。另一方面,Sybase正在通过其SQL Anywhere数据库服务器进入移动领域。SQL Anywhere功能之一就是其常驻内存的数据库管理系统,可以运行在Windows Mobile、Windows、Palm OS和Symbian上。
关于Sybase还有一个很有意思的历史插曲,微软的SQL Server是从Sybase开发而来的。微软和Sybase签订了一个合约,微软被授权可以销售一个重新包装的Sybase,或在它的基础上开发一个它自己的版本。尽管微软已经对其进行了很多修改,你依然可以在SQL Server的命令组成中看到两者之间的渊源。
2.5开源数据库之MySQL
MySQL是开源数据库中的佼佼者,它的用户数是在同类开源数据库中是最多的,它既可以被小的新兴公司所使用,也可以被采用了操作系统集群的大型Web站点所使用。
MySQL拥有很多插入式的存储引擎,用来给用户提供不同的所需功能,而不是默认具有全部功能。这也是为什么MySQL会在数据恢复操作中具有最佳表现的另一个原因。
自从MySQL第一版发布以来,就提供一个存储引擎接口。它让用户来根据需要选择数据存储引擎。MySQL既有事务安全(ACID兼容)的存储引擎(诸如InnoDB、Falcon),也有不支持事务处理的存储引擎(MyISAM)、日志引擎(不能被更新或删除,Archive)和通过无共享体系结构实现高可用性的群集技术, MySQL还有专有的第三方引擎,例如InfoBright和Nitro。
MySQL拥有很多实现特定功能的存储引擎,但是并不建议你全部安装它们。而像Google这样的公司则编写了自己的存储引擎来加速它们的常用操作。
MySQL与Oracle相比的一个优势就是它对资源的占用非常少。MySQL是实现数据恢复方面最快的数据库,但是它的确缺少一些在Oracle中的功能。
MySQL从来没有想过与其他数据库在功能数量上一较高下,MySQL的目标是易用、稳定和性能。MySQL现在具有丰富的功能,已经得到了很多开发者的支持。
2.5开源数据库之PostgreSQL
在开源数据库中,PostgreSQL以其丰富的功能而显得格外突出,其中包括存储过程、表分区(partitioning)、多过程语言支持和多种数据类型和索引的支持。另外,PostgreSQL的标准兼容性和严格的安全功能也被众多用户所称道。PostgreSQL的在线事务处理(OLTP)是其最受欢迎的功能,在开源数据库中,它的数据仓库方面也是表现最好的。
由于PostgreSQL是一个被不同公司支持的社区控制型开源项目,很多公司提供对它的支持,诸如Sun、Fujitsu、SRA和Red Hat和很多新兴公司和顾问公司。PostgrefSQL在日本的市场情况很不错,仅次于Oracle。
2.7开源数据库之Ingres
在Ingres 2006版中引入了很多新功能,其中一些功能是关于大规模部署方面的,例如键范围表分区(key range table partitioning)和并行查询支持。另外,诸如存储过程、触发器和视图功能早已被Ingres所支持,不过Ingres现在还不支持内部任务。
2.8嵌入式数据库应用
数据库的一个比较特别的应用案例是嵌入式应用程序,在这方面应用中,低资源占用成为一个必需的要求。
MySQL由于其设计理念,在这一方面被应用的比较多。微软的SQL Server 2005 Express版也被做为嵌入式数据库使用,它被认为是微软数据库引擎(MSDE)的下一版本,而且它也是完全免费的。而Oracle则又通过收购得来的 TimesTen内存数据库来满足嵌入式应用程序。
Linux是开源数据库的首选操作系统,因为它们都是开源而且完全免费的产品。现在的消费电子产品市场中,Linux变种已经被广泛应用。而这也使得开源数据库们在嵌入式应用程序受益。
3对这些数据库管理系统的使用场合分别是什么?
这个问题,我想以“如何选择适合自己的数据库的方式?”来回答。
3.1按需求来选择
事实上,现在没有完美无缺的数据库,无论是商业数据库,还是开源数据库。我们发现,选择一个数据库的主要理由就是它的功能是否可以很好地支持你的应用程序。人们通常使用数据库来完成的任务有:支持Web、事务处理、文本搜索,有的情况下复制也是一个重要的要求。在事务处理方面,Oracle看上去更有领先优势,接下来是微软的SQL Server。没有一个开源数据库具有可以与Oracle相媲美的事务处理功能。
在那些要求功能丰富的情况下,开源数据库们并不比商业数据库有什么优势。人们经常提到的商业数据库的优势功能有存储过程、触发器和一些安全功能。
不过,正如我们上面提到过的,自从Ingres问世以来就支持触发器和存储过程。PostgreSQL对这些功能也早已支持。在MySQL的新版中最近也增加了存储过程和触发器功能。对于支持Web应用程序,MySQL看上去要比其他对手表现好。Web应用程序主要是对数据库进行读取操作。MySQL在这方面以速度快而见长。一些用户表示,在快速阅读操作方面,MySQL至少不比Oracle差。但是,当任务从阅读数据库转向处理一个客户购买操作的时候,用户则可能更倾向于选择Oracle而不是MySQL。在复制和群集功能上,MySQL给人的印象差别很大。MySQL中的单向复制表现惊人,但是,MySQl的群集功能被应用的不多,因为它只是基于内存的。
3.2按易用性和管理来选择
开源数据库们主要是以命令行工具中管理。尽管也有一些图形工具可用,但是与Oracle等商业数据库自带的图形管理工具相比,它们还显得不够灵活和稳定。在图形化管理方面的赢家无疑是微软。微软的SQL Server管理工具不是基于浏览器的,而是自带的一个终端平台。这使得它有能力完成一些Web浏览器所不能实现的强大功能。一些用户希望Oracle中的管理功能也和SQL Server中一样好。
3.3按支持性来选择
当讨论开源软件的时候我们听到最频繁的问题是:“我们从哪儿能得到支持?”MySQL为它自己的客户提供24*7、30分钟响应时间的支持。在其Unlimited服务中还有很多不同的付费支持级别。正如上面所提到的,PostgreSQL的支持来自于不同的平台厂商,支持的内容、成本、地区和要求因厂商不同而不完全一样。由于开源数据库的源代码可以被任何人查看和修改,这导致了几个潜在的问题。一个合法客户对数据库进行了修改会发生什么?Sun公司不会对这种情况提供支持,而MySQL公司将提供支持,但是需要满足一些特定条件和情况。事实上,能对这些开源产品进行修改的客户的数量是非常少的——这与产品的复杂度有关系。另一个开源软件的问题是,任何人可以对产品进行修改的现实会带来一些潜在的漏洞或安全问题。诸如此类的事情已经发生过,客户需要确信从熟悉的网站下载这些产品,并且确认它们可以通过MD5校验。
3.4按成本因素来选择
数据库中成本因素是非常简单的。对于开源数据库,你可以免费得到授权,但是同时也牺牲了一些功能。而对于商业数据库,你可以使用更多强大的功能,但是你需要按每个拷贝或每个CPU来支付授权费用。对于开源数据库,在维护成本方面,尽管看上去你可以选择不从厂商那儿购买支持合同,因为你拥有源代码,但是实际上并不如此简单。
虽然你可以选择修改源代码,但是当新版数据库出来后,你所做的修改不得不重新进行实施,而且你曾经所做的修改可能已经没有必要,因为新版中增加了相应的功能。对我们来说,唯一比较实际的做法就是成为这个数据库开发社区中的一员,这可能需要你投入大量的时间,其成本或许会超过购买一个支持合同。对于商业数据库,你只有面临一个选择,如果你想得到来自它们的维护支持,那么就购买它们的支持合同。
4结论
总体来说,选择什么样的数据库要看你的应用程序的需要。如果它是以阅读数据库为主的Web应用,MySQL无疑是最佳选择。而如果需要那些事务处理和复杂的数据库功能,那么可能是Oracle和微软的SQL Server的地盘。如果你需要一些商业数据库的高级功,但又不想支付授权费用,那么看一下PostgreSQL或Ingres。对于嵌入式数据库应用, MySQL和Sybase所占有的系统资源最少。