2.3 关系型数据库的优势

从前面的分析可以看出,关系模型数据结构简单,容易理解和掌握,对实体与实体之间的联系描述简明、精确,给用户使用数据库提供了很大的方便。关系操作功能强大,从20世纪70年代初诞生以来,经过40多年的发展,其应用体系结构也由主机/终端的集中式结构发展到网络环境的分布式结构,随后又发展成三层或多层C/S、B/S结构、物联网以及移动环境下的动态结构。多种数据库应用体系结构满足了不同应用的需求,适应了不同的应用环境,具有数百万甚至数十亿字节信息的数据库已经普遍存在于科学技术、工业、农业、商业、金融、证券、交通、服务业、政府部门以及以Web为基础的电子商务等信息系统中,成为计算机科学技术中发展最快的领域之一,也是应用最广的技术之一。编程语言、架构、平台、开发工具等技术都在改变,唯一不变的是人们依然使用关系型数据库来存储和管理数据。事实表明,关系型数据库在数据库领域中牢牢雄踞霸主地位。

2.3.1 持久存储大量数据

数据库的最大价值是持久存储大量数据。在大多数的计算机系统架构中有两个存储区域:一个是速度快但是数据易丢失的“主存储器”(main memory),另一个是存储量大但速度较慢的“后备存储器”(backing store)。主存储器的空间较为有限,一旦断电或操作系统出错,那么全部数据将丢失。因此,为了保存数据,人们要将它写入后备存储器。最常见的后备存储器是硬盘、磁带、CD等。

后备存储的形式多种多样。许多应用程序(application)将数据作为一个文件,保存在操作系统的文件系统之中。然而,大多数组织将小型数据库作为后备存储。在数据量较大时,数据库比文件系统更灵活,它能让应用程序快速而便捷地获取其中一小部分数据,也可以快速地统计计算,还可以快速地进行比较筛选。

2.3.2 通过事务保证数据的强一致性

关系型数据库必须遵守ACID(原子性Atomicity、一致性Consistency、隔离性Isolation、持久性Durabi1ity几个单词首字母的缩写)特性,以控制并发中错误的产生,确保数据的强一致性。在企业级应用中,多个用户会同时访问同一份数据体,并且可能要修改这份数据。大多数情况下,他们都在不同数据区域内各自操作,但是,偶尔也会同时操作一小块数据。这样,就必须引入一些机制进行协调,以免出现诸如两人同时预订某一餐厅的同一包间的情况。关系型数据库通过“事务”(transaction)来控制对数据的访问,以便处理此并发问题。事务机制可以在并发情况下良好运行,能够应付各种麻烦事情。通过事务更改数据时,如果在处理变更的过程中出现错误,则可以通过回滚(roll back)这一事务保证数据不受破坏。

通过这种机制,确保了数据的强一致性,这对于现实社会中的银行转账、股票交易等非常重要。比如,银行账户资金的转入转出处理,账户张三向账户李四转出10万元,如果不能保证交易处理立即在数据库中得到体现,并严格保证数据一致性,可能出现已经从张三账号中转出而没有被转入到李四账号中的中间状态,这将会引发极其严重的后果。正是关系型数据库具备这种ACID特性,使得其能够被广泛应用。

2.3.3 通用性好和高性能

关系型数据库具有非常好的通用性和非常高的性能,就连积极倡导NoSQL的包括大数据公司和组织(例如谷歌、Facebook、Cloudera和Apache)在内的几乎所有公司和组织都在使用关系型数据库。毫无疑问,关系型数据库对于绝大多数应用来说都是最有效的解决方案。

2.3.4 以标准化为前提

由于以标准化为前提,数据更新的开销很小(相同的字段基本上只有一处),同时能够满足复杂SQL操作功能,尤其是多表关联查询,通用的SQL语言使得操作关系型数据库非常方便,用户只需使用SQL语言在逻辑层面操作数据库,而完全不必理解其底层实现。

SQL能够加强与数据的交互,并允许对单个数据库设计提出问题。这是很关键的特征,因为无法交互的数据基本上是没用的,并且增强的交互性能够带来新的见解、新的问题和更有意义的未来交互。

SQL是标准化的,使用户能够跨系统运用他们的知识,并对第三方附件和工具提供支持。尽管各种关系型数据库之间仍有差异,但其核心机制相同,不同厂商的SQL方言相似,“事务”的操作方式稍有差异。

SQL对数据呈现和存储采用正交形式,一些SQL系统支持JSON和其他结构化对象格式,比NoSQL具有更好的性能和更多功能。

在这其中,能够保持数据的一致性是关系型数据库的最大优势。在需要严格保证数据一致性的情况下,无疑关系型数据库是最佳的选择。