关系数据库选型

选择一款合适的SQL数据库是一项艰巨的任务,因为可选的产品很多。这既有好的一面也有不利的一面,选项增加意味着做出错误选择的概率也在增加。为此,需独具慧眼,谨慎而全面地对比每家厂商技术的优缺点,通过衡量自身需求,正确地进行评估与选型,才能选中适合的数据库产品。

1 选型因素

我们的目标是选择最合适的数据库产品,通常从主流性、性能、可靠性、扩展性、安全性、数据库规模、跨平台、SQL特性、成本、服务质量、可用资源等多方面来考虑。对于不同的需求,考虑的侧重点有所不同:中心数据库和工作组数据库的会需更多地考虑性能、可靠性、扩展性、安全性和服务质量因素;而本地数据库需要部署在离线应用的每台机器,主要为单个用户使用,且需要部署很多机器,因此需更多地考虑成本、数据库规模因素。

1) 主流性

面对品种繁多的数据库产品,一一进行评估显然不太现实。我们可以把范围缩小为主流的几款数据库产品,因为能成为主流必然有综合的优势,是众多用户已经选型和实施的结果。在确定主流产品后,再结合自身的需求,对它们进行对比,从中选择适合的产品。

2) 性能

考虑性能一般是面向大量的操作和用户,在大型数据库产品上来考虑。大型数据库产品OracleDB2SQL Server 这三个中哪一个是性能最好、处理最快、可扩展性最好问题,在数据库领域也被讨论和争论很多年了,每个公司也会投入大量的资金来证明自己是最优的,在过去的这些年所获得的性能上的改进说明,这三个公司的中任何一个都有足够的能力来提供比大多数应用程序所需要的更好的速度、可扩展性以及性能。对于大多数的企业来讲,这三个产品的性能都已已经足够了。

3) 可靠性

数据库保存的是企业最重要的数据,是企业应用的核心,稳定可靠的数据库可以保证企业的应用常年运行,而不会因为数据库的宕机而遭受损失。企业的信息化可以促进生产力,但如果选择了不稳定产品,经常影响业务生产的正常运营,则实际效果很可能是拖了企业的后退。信息系统的稳定可靠是由多方面的因素构成的,包括网络、主机、操作系统、数据库以及应用软件等几方面,这些因素互相之间又有一定的依赖关系,因此,在企业信息化的选型中要通盘考虑这些问题。在数据库方面主要看数据库要具备灾难恢复、系统错误恢复、人为操作错误恢复等功能,同时要尽量降低数据库的计划内维护宕机时间。

4) 扩展性

企业的应用是不断深入和扩展的,数据量和单位时间的事务处理量都会逐渐增加。要求一次购置就足以满足未来若干年发展的需要显然是不恰当的,因为这意味着要多花很多钱而不能发挥信息设备的最大效能,造成资源的浪费。比较好的解决办法就是先购置配置较低系统,当未来业务有需要时可以方便的对系统进行扩展,使系统的处理能力逐步增加满足业务处理的需求。对数据库来讲就是要选择具有良好的伸缩性及灵活的配置功能的产品,无论是主机系统的内存或硬盘方面的扩展还是集群系统的扩展,都能够被数据库利用,从而提高系统的处理能力。

5) 安全性

数据库的安全性是指保护数据库以防止不合法的使用造成的数据泄露、更改或破坏。安全性问题不是数据库系统独有的,所有计算机系统都有这个问题。只是在数据库系统中保存着大量重要的数据,而且为许多最终用户共享使用,从而安全问题更为突出。系统安全保护措施是否有效是数据库系统的重要指标之一。数据库的安全控制主要通过用户标识与鉴别、存取控制、视图机制、审计、数据加密等机制完成。

6) 数据库规模

如果考虑的是中大型数据库产品,数据库规模不是问题,因为各家的企业版和标准版产品都在PB级以上或者无限制;而小型数据库产品则需加以考虑,数据库最大限制从GBTB级别的都有。

7) 跨平台

每个数据库产品与操作系统平台结合情况都不一样,操作系统的稳定对数据库是十分重要的。有的产品可以运行于主流的平台,而有的产品只限于Windows平台或Unix/Linux平台,平台受限具有一定的风险。

8) 特性

SQL92/99标准的支持,对于应用需支持多个数据库产品是尤为重要;面向对象的支持,可为数据模型提供多一种选择。

9) 成本

成本是一个很复杂的因素,因为不仅仅是指数据库产品的购买价格,还包括服务器配置、产品系统的维护、额外工具、开发成本以及技术支持等费用等总体拥有成本TCO(TotalCostofOwnership),特别是人力资源成本是企业需要提前预知的长期成本。

10)         服务质量

在现今信息高度发达的竞争中,数据库厂商完全靠产品质量打动用户的年代已不复存在,各数据库产品在质量方面的差距逐渐缩小,而用户选择产品的一个重要因素就是定位在厂家的技术服务方面。因为在你购买了数据库系统之后,你面临着复杂的软件开发,数据库的维护,数据库产品的升级等等,你需要得到数据库厂商的培训,各种方式的技术支持(电话、用户现场)和咨询。数据库厂家的服务质量的好坏将直接影响到企业信息化建设的工作。

11)         可用资源

部署一套完整的用户解决方案,需要有一系列的配套支持资源,如服务器(应用程序服务器、数据库服务器)和人力资源,人力资源包括系统操作用户和系统维护人员,其中维护人员包括应用程序维护人员以及数据库管理员。故在资源系统中,涉及到跟数据库相关的是数据库服务器和数据库管理员,对于一般的系统而言,会考虑现有的服务器是否能够满足新系统的需求?现有的维护人员是否能够满新系统的需求?如果原系统的相关配套在满足系统现有需求的基础上还有一定的可发展空间的话,是可以考虑沿用原有的数据库系统的。

2 主流数据库

Gartner20143月发布的调查报告,2013RDBMS全球市场份额中,Oracle 47.4%MicrosoftSQL Serever19%IBMDB217.7%,即主流的前三甲商业化大型数据库为OracleMS SQL ServerDB2

小型数据库和开源数据库暂无市场份额数据,我们可以从流行榜来考察:

20164月前 10名流行榜(含非关系型数据库)

上述流行榜数据来自数据库知识网站DB-engines.com其排名主要根据5个因素来进行:Google以及Bing搜索引擎的关键字搜索数量、GoogleTrends的搜索数量、Indeed网站中的职位搜索量、LinkedIn中提到关键字的个人资料数以及Stackoverflow上相关的问题和关注者数量。

从流行榜可以看出,主流的中大型关系型数据库为OracleMySQL(开源)、MS SQL ServerPostgreSQL(开源)、DB2,与商业化部分与市场份额的排名一致;小型关系型数据库为MS AccessSQLite(开源)。

3 数据库对比

中心数据库和工作组数据库显然应使用中大型数据库,本地数据库应使用小型数据库,而中大型数据库与小型数据库不适宜放一起对比,因此分成两组进行对比。

3.1 中大型数据库对比

由于中心数据库和工作组数据库承载企业的重要数据资产,支撑大量用户的业务处理,可靠性和安全性尤为重要。而开源数据库,因为免费、面向大众的、通俗的解决方案,吸引了大量的企业用户和开发用户,多应用在小型的 Web 网站应用系统上,但是不太合适大规模、要求高可靠性的应用系统;并且出现问题是得不到厂商的有力支持,虽然可以从第三方厂商得到一些支持,但非产品的开发方,所能提供的支持也有限。
因此,建议中心数据库和工作组数据库只从主流的三大商业化产品OracleMS SQL ServerDB2中选择。

1) 主流性
市场份额和流行性排名为OracleMS SQL ServerDB2

2) 性能
Oracle:性能最高,保持WindowsNT下的TPC-DTPC-C的纪录。
SQL Server:老版本多用户性能不佳,新版本的性能有了明显的改善,各项处理能力都有了明显的提高,保持了多项TPC-C纪录。
DB2:适用于数据仓库和在线事物处理,性能较高。

3) 可靠性
Oracle:其数据卫士技术可以提供故障移功能,它的管理、监控和自动化软件可以创建并维护一个或多个备用数据库,从而维护关键应用的高可用性。
SQL Server:通过“即开即用”的数据库镜像以及备份恢复来实现故障转移支持,且没有额外的支出。
DB2:使用了不同的方法进行故障转移。DB2 UDB 同微软的集群服务器(MSCS)进行整合,在Windows操作系统环境下可以提供高可用性支持。

4) 扩展性
OracleOracle RAC可以支持24 x 7 有效的数据库应用系统,在低成本服务器上构建高可用性数据库系统,并且自由部署应用,无需修改代码。在Oracle RAC环境下,Oracle集成提供了集群软件和存储管理软件,为用户降低了应用成本。当应用规模需要扩充时,用户可以按需扩展系统,以保证系统的性能,可扩展性好。
SQL Server:以前版本SQL Server并行实施和共存模型并不成熟,很难处理大量的用户数和数据卷,扩展性有限。新版本性能有了较大的改善,在Microsoft Advanced Servers上有突出的表现,超过了他的主要竞争对手。
DB2:具有很好的并行性。DB2把数据库管理扩充到了并行的、多节点的环境。数据库分区是数据库的一部分,包含自己的数据、索引、配置文件、和事务日志。数据库分区有时被称为节点或数据库节点。

5) 安全性
Oracle:获得最高认证级别的ISO标准认证。
SQL ServerMicrosoft Advanced Server 获得最高安全认证,服务器平台的稳定性是数据库的稳定性的基础,新版本的SQL的安全性有了极大的提高。
DB2:获得最高认证级别的ISO标准认证。

6) 数据库规模
Oracle:无限制
SQL Server524 PB,也相当于无限制
DB2:无限制

7) 跨平台
Oracle:支持多平台操作系统,并且提供较低风险的移植。
SQL Server:致力于为 Windows 操作系统提供最优解决方案,不支持其他平台。
DB2:占领了大型机的市场,也能在所有主流平台上运行(包括windows)。

8)  SQL特性
Oracle:支持SQL92/99;支持面向对象特性,包括Reference TypeNUMBER字段,类似FK)、Row Type(自定义结构类型字段)、Array Type(自定义结构类型的Nested Table字段);支持XML数据类型字段。
SQL Server:支持SQL92/99;不支持面向对象特性;支持XML数据类型字段。
DB2:支持SQL92/99;支持部分面向对象特性,包括Reference TypeNUMBER字段,类似FK)、Row Type(自定义结构类型字段),无Array Type(自定义结构类型的Nested Table字段);支持XML数据类型字段。

9) 成本
Oracle:产品购买价格比较高的;服务器配置要求比较高;管理比较复杂,但由于Oracle的应用很广泛,经验丰富的Oracle数据库管理员可以比较容易的找到,从而实现Oracle的良好管理。
SQL Server:产品购买价格比较低,但是在License的购买上会抬高价格;服务器配置要求相对低;基于Microsoft的一贯风格,SQL Server的图形管理界面带来了明显的易用性,微软的数据库管理员培训进行的比较充分,可以轻松的找到很好的数据库管理员,数据库管理费用比较低。总体来说SQL Server的成本在商用数据库中是最低的。
DB2:产品购买价格很高;服务器配置要求很高;管理员少,在中国的应用较少,运行管理费用都很高。

10) 服务质量
OracleSQLServerDB2的厂商都是的名列前茅的软件和数据库厂商,在全球和国内都设有很多分支机构,服务质量都很好。

11)可用资源
Oracle:得益于广泛地应用,经验丰富的数据库管理员和开发人员都很容易找到。
SQL Server:得益于广泛地应用,经验丰富的S数据库管理员和开发人员都非常容易找到。
DB2:在国外巨型企业得到广泛的应用,国内的经验丰富的人员很少。

根据上述对比,总结如下:

 

Oracle

MS SQL Server

DB2

主流性

★★★

★★

性能

★★★

★★

★★★

可靠性

★★★

★★★

★★★

扩展性

★★★

★★

★★★

安全性

★★★

★★

★★★

数据库规模

★★★

★★★

★★★

服务质量

★★★

★★★

★★★

跨平台

★★★

★★

★★★

SQL特性

★★★

★★

★★

成本

★★

★★★

可用资源

★★

★★★

(合计)

31

27

26

上表只是比较粗略的评估,而非精确的评比打分,因为那样需要考虑更详细更复杂的因素,还需考虑各因素针对不同的需求所占的权重,而各产品的详细信息不能完全得到,得到信息还带有厂商或提供者的倾向性。尽管如此,通过多方面对比得到的结果,对数据库选型仍具有参考意义。

3.2 小型数据库对比

主流的小型关系型数据库为MS AccessSQLite(开源),MS SQLServer LocalDB虽未直接出现在排名中,但由于它是SQL Server轻量版(Express)的一种简化版本,中大型的 SQL Server 编程模型一致,因此也把它纳入考虑。

Access:单文件数据库,显著缺点是功能较少;不支持事务等常用功能;数据库最大虽然可以到2GB,但达到100MB左右的时候性能就会开始下降,在没有压缩的前提下,如果大批量的进行数据操作(新增/修改),一般连续增长100多万行的数据就不能再插入数据。最大优点是简单、多数开发者都很熟悉,部署也很方便。
支持SQL92
由于其数据库大小和性能下降,不能满足要求,不予以考虑。

SQLite:单文件数据库,支持事务,C编写的,可以跨操作平台,支持大部分ANSI SQL 92;它是嵌入式的轻量级关系形数据库引擎,只需要一个DLL,零配置,零配置;可以把它嵌入你的程序中。数据库最大2TB
它允许多个读,但是一次只允许一个写,写锁会在写期间排他地锁定数据库,其他人在此期间不能访问数据库(通常锁只保持几毫秒)。
SQLite 3 支持绝大部分的 SQL92 ,不支持部分如下:
     存储过程:不支持
     触发器:SQLite支持几乎所有的标准触发器功能,包括递归触发器和INSTEAD OF触发器。但只支持FOR EACH ROW支持FOR EACH STATEMENTANSI SQL92也说明了当前不支持FOR EACH STATEMENT)。
     表结构修改:前只支持RENAME TABLEADD COLUMN类型的ALTER TABLE命令。其他类型的ALTER TABLE操作,例如DROP COLUMNALTER COLUMN以及ADD CONSTRAINT还未实现。
     右外连接与全外连接:左外连接(LEFT OUT JOIN)已经支持,但是右外连接(RIGHT OUTER JOIN)和全外连接(FULL OUTER JOIN)还未实现。所有的右外连接在语义上都有相同的左外连接,相反也成立。通过简单逆向表的顺序和修改连接限制,左外连接可以作为右外连接的实现。全外连接可以通过组合左外连接和UNION以及在WHERE子句中进行恰当的NULL过滤实现。
    可更新的视图:SQLite的视图使只读的,不能在视图上执行DELETEINSERT或者UPDATE语句。但可以创建一个启动对视图进行DELETEINSERT或者UPDATE的触发器,在触发器内完成需要执行的操作。
    窗口功能:ANSI SQL99的新功能之一就是窗口功能。该功能提供结果集的后处理分析,例如排序、平均移动以及超前和滞后计算等。SQLite目前支持ANSI SQL92的一部分,因此,它不支持像RANK()ROW_NUMBER()等。
     授权和撤销:由于SQLite能读写普通的磁盘文件,因此,唯一可以应用的访问权限就是所在操作系统的普通文件的访问权限。授权(GRANT)和撤销(REVOKE)命令一般是在高端系统中使用的,这些系统中有多个用户,不同用户对数据库中的数据有不同的访问级别。SQLite模型中,应用程序是主用户,能够访问整个数据库。这种模型中的访问明确定义为应用程序级--具体地说,就是应用程序可以访问数据库文件。

SQL Server LocalDB:是SQL Server 2012 Express 系列中新增的一种轻型版本的 Express,该版本具备所有可编程性功能,但在用户模式下运行,并且具有快速的零配置安装(MSI安装程序)和无需管理的特点。可与 Visual Studio 之类的应用程序和数据库开发工具捆绑在一起,也可以与需要本地数据库的应用程序一起嵌入。
    显著缺点是数据库最大10GB,最大优点是和服务器端的SQL Server 编程模型一致,开发便利。
    支持SQL92/99

根据上述对比,总结如下:

 

SQLite

SQL Server LacalDB

说明

主流性

★★★

★★

 

性能

★★★

★★★

 

可靠性

——

——

不适用于小型数据库

扩展性

——

——

不适用于小型数据库

安全性

★★

SQLite无用户管理

数据库规模

★★★

★★

SQLite 2TBLocalDB 10GB

服务质量

——

——

免费,都无服务

跨平台

★★★

★★

SQLite跨平台,LocalDB限于Windows

SQL特性

★★

★★★

 

成本

★★★

★★★

都无购买成本,都安装简单、零配置、零管理。

可用资源

——

——

由于都很简单,可视为一样

(合计)

18

17

 

4 数据库选型建议

根据上述对比,数据库选型建议如下:

1) 中心数据库
中心数据库对数据库的性能、可靠性、安全性和可扩展性要求很高,建议选择Oracle 11G或以上版本的企业版,采用RAC部署双机集群。

2) 工作组数据库
工作组数据库对数据库的性能、安全性和可扩展性要求相对不是很高,需部署多套,可选择成本较低的SQL Server 2012或以上版本的标准版。

3) 本地数据库
选择SQLite: 数据库大小肯定满足本地数据库需要,且其跨平台性,长远考虑是个优势。
SQL Server LacalD: 如果其数据库最大10GB足以满足本地数据库需要(待逻辑数据模型完成后估算),SQL Server LacalDB,其带来的好处就是可同工作组数据库SQL Server 保持同型。

本地数据库和工作组数据库只用于业务数据处理,使用标准的SQL就可以满足。虽然中心数据库与工作组数据库采用的数据库产品不同,但由于它们都支持标准SQL,业务数据处理应用也可部署在中心数据库上。

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值