周春华
(工业和信息化部电子第五研究所,广东 广州 510610)
系统数据库可靠性分析
周春华
(工业和信息化部电子第五研究所,广东广州510610)
摘要:近年来,随着计算机技术的发展和应用,数据库技术取得了迅速的发展,其可靠性也引起了人们越来越多的关注。首先,简单地介绍了数据库技术;然后,对导致数据库失效的主要原因进行了归纳总结;其次,对数据库的可靠性进行了分析,通过分析发现,将并联系统设计的思想融入到系统数据库的设计中,可以大大地提高系统数据库的可靠性;最后,对提高系统建设中数据库的可靠性的常见方法和技术进行了阐述和分析。
关键词:数据库;失效原因;可靠性分析;设计技术
在现今的计算机应用系统设计中,涉及到数据的存储和管理时基本上都使用到了数据库系统,特别是大中型和互联网应用系统,都是以数据库为基础进行设计建设的,因而数据库的可靠性是系统运行可靠、正常对外提供服务的基础性决定因素。
随着计算机技术的发展和应用的需要, 20世纪60年代末至70年代初出现了数据库技术,其目的主要是为了有效地组织与存储计算机信息处理过程中的大量的数据,在数据库系统中减少数据存储冗余、实现数据共享和保障数据安全,以及高效地检索和处理数据。数据库系统主要经历了层次数据库系统、网状数据库系统、关系型数据库系统和以面向对象数据模型为主要特征的数据库系统几个阶段[1]。近年来,云计算和大数据技术的飞速发展,非关系型数据库(NoSQL: Not Only SQL)取得了迅速的发展,成为了极其热门的新领域。
典型的应用系统模型如图1所示:
图1 典型的应用系统模型
典型的应用系统由应用服务器、数据库服务器和磁盘存储单元组成,通过网络提供服务。其中,跟数据库有关的是数据访问层、数据库服务器和磁盘存储单元,数据访问层主要实现对数据表的查询(Select)、插入(Insert)、更新(Update)和删除(Delete)等操作;数据库服务器一般由一台或多台计算机和数据库管理系统软件共同构成,为上层应用提供操作访问的服务;磁盘存储单元是数据的实际物理存储位置,部分系统使用数据服务器的硬盘,一般设计良好的系统采用磁盘存储阵列。
数据库的可靠性是指在规定的时间和条件下,数据库系统完成规定的数据存储与管理的能力。根据图1中应用系统的3个层次,可以将引起数据库失效的主要因素划分为3类,分别是: 1)应用失效,主要由于应用程序设计存在缺陷,在操作过程中因缺陷暴露而引起的数据库暂时性的错误,或者是由于应用负载超出了设计的阈值,致使数据操作失败;2)系统失效,指操作系统或数据库管理系统崩溃,重新启动后系统能正常工作,此类失效会导致内存数据丢失,但数据库中的数据不会遭到破坏;3)硬件失效,指计算机硬件发生故障,从而导致系统不能工作,可能发生故障的硬件主要包括磁盘、网络通信、处理器、内存和布线等。
根据图1,数据库系统可以分为数据访问层、数据库服务器和磁盘3个层次,每个层次既相互独立又相互依存,形成了一个整体并为应用提供服务。当系统中每一层都正常工作时,数据库才能正常工作,当系统中有一层或一层以上失效时,数据库就失效,因此数据库系统可以用串联系统可靠性模型进行分析。串联模型中每层内部存在独立失效,层与层之间存在共因失效和级联失效。串联模型的系统可靠性框图如图2所示[2]。
图2 串联系统可靠性模型
在串联模型中,设各层的可靠度分别为r1, r2, …, rn,串联系统的可靠度为Rs,则串联系统级联失效可靠度为:
由上式可知,系统的可靠性是各层模块的可靠性的乘积。因此,想要提高系统的整体可靠度,就必须提高每层模块的可靠度。串联模型的系统设计有一定的脆弱性,主要表现为当其中一层模块失效时,整个系统都会失效。但是由于其建设成本较低,因而仍在被大多中小型可靠性要求不高的系统使用。与串联模型相对应的是并联模型,其特点是系统中只要有一个模块正常工作,系统就能正常工作,只有当全部模块均失效时,系统才会失效。并联模型可靠性框图如图3所示:
图3 并联系统可靠性模型
设系统各模块的失效率(不可靠度)分别为f1, f2,…, fn,并联系统的失效率为Fs,则并联系统的失效率为:
并联系统的可靠度Rs为:
在进行系统数据库的设计时,融入并联系统设计的思想可以提高系统的可靠性。
从上面的分析中可以发现,可以通过提高各层模块的可靠性,降低各层模块的独立失效率,通过并联设计降低级联失效率的方式来提高系统数据库的整体可靠性,具体的设计技术主要包括以下几项。
3.1软件设计时的容错和预防
a)软件冗余
提供足够的冗余信息和算法程序,使系统在实际运行时能够及时地发现程序设计错误,采取补救措施,以提高软件的可靠性,保证整个计算机系统的正常运行。
b)故障-停止模块
不断地对自身进行检测,当检测到一个故障时就自动停止,缩短了故障检测的潜伏期。在软件设计中对异常进行捕捉,当捕捉到影响到系统运行的故障时便自动停止。
c)进程对
通过软件模块的双工可以实现容错。具体包括了2个进程:一个是主进程,另一个是备份进程。它们同时提供同样的服务,主进程和备份进程都是基于故障-停止模块实现的。
3.2分布式数据库系统设计
分布式数据库系统是分布在计算机网络的多个结点上,在逻辑上有内在联系的数据库集合。在物理上,数据分散存储在不同的数据库服务器上,每个子数据库系统都是一个独立的数据库系统,拥有各自的数据库、管理软件、硬件和存储单元,可以独立地工作。在逻辑上,分布式数据库系统可被视为一个完整的数据库,对于上层应用而言,分布式是透明的,用户不必关心具体的数据处理结构,可以像访问集中式数据库一样进行操作。
集中式数据库是指所有数据存储在一台数据库的服务器上,所有的数据处理集中在一台计算机上完成。集中式数据库中的数据库系统或服务器硬件一旦发生失效,整个应用系统就将无法工作,用串联可靠性模型来解释,就是当ri=0时,。从第2章的分析中可知,通过将串联系统改造成并联系统,可以大大地提高系统的可靠性。分布式数据库存在一定的数据冗余,同样的数据可能分布在两个或以上的节点中,任何单个节点上的崩溃、通信连接故障或数据出错都只会影响到一个或几个节点,不会导致整个系统失效[3]。虽然应用可能无法访问某些数据,但其他没有发生问题的节点仍然可以继续提供服务,从系统失效和硬件失效两方面都有效地提高了系统的可靠性。
分布式数据库的设计方法包括自顶向下法、自底向上法和混合设计法3种。常用的自顶向下法主要包括数据分片和数据分配。分片是指把一个全局的对象(关系或实体)细化,分成若干个逻辑片段;分配是指将各个分片映射到一个或多个节点[4]。分片可分为垂直分片和水平分片,垂直分片的原则是将业务紧密、表间关系密切的表划分在一起。若垂直划分后的数据片数据量大,数据增长速度快,则需要进行水平分片。
3.3硬件冗余
a)集群技术
数据库集群是指将两台或以上的数据库服务器连接起来,对外提供统一服务。数据库集群可以通过多台服务器共享存储和每台服务器专享存储2种方式来实现。多台服务器共享存储架构又分为单活和双活,双活即为集群中的每一个节点都可以同时对外提供服务,而单活为集群中只有一个节点可对外提供服务,集群中的其他服务器则作为冗余在“活”的节点出现故障时接替该服务器对外提供服务。服务器专享存储架构中,集群中的节点会被分为主节点和辅助节点,主节点向外提供服务,辅助节点则作为热备或暖备,同时有可能提供只读的服务。辅助节点数据和主节点数据保持同步或准同步,当搭配第三方仲裁后,可以实现自动的故障转移,从而实现了高可用性,辅助节点由于和主节点完全独立且数据同步或准同步,因此主节点出现数据损坏后,可以从辅助节点恢复数据,从而提高系统的可靠性。
b)磁盘阵列存储
磁盘阵列(RAID: Redundant Arrays of Independent Disks)技术是一种把多块独立的物理硬盘按照不同的组织方式组合起来形成一个硬盘组,通过RAID控制器将磁盘组虚拟成一个逻辑硬盘,从而实现快速、并行或交叉存取。一般磁盘阵列由价格比较便宜的硬盘组成,存储容量大,速度比单个硬盘快很多,同时可以提供数据冗余和备份功能。RAID支持自动检测故障硬盘、重建硬盘坏轨资料、不停机硬盘备援和不停机更换硬盘等功能,在数据遭到损坏后可以迅速恢复,数据能够极大地提高数据存储的可靠性。
c)SAN技术
存储区域网络(SAN: Storage Area Network)是一种通过光纤集线器、光纤路由器和光纤交换机等连接设备将磁盘阵列、磁带等存储设备与相关服务器连接起来的高速专用子网。SAN通常由接口、连接设备和通信控制协议3个基本的组件构成,这3个组件再加上附加的存储设备和独立的SAN服务器,便构成了一个SAN系统。SAN提供一个专用的、高可靠性的基于光通道的存储网络,且允许独立地增加储存设备存储容量,从而使得管理及集中控制(特别是当全部存储设备都集群在一起的时候)更加简化。而且,光纤接口之间的连线可长达10 km,这也使得远距离存储变得更加容易。
系统数据库的可靠性主要体现在软件和硬件两大方面,硬件是软件运行的基础,从软件到硬件可以看做是一个串联的系统。将串联的系统改造成并联或串并结合的表决系统可以有效地提高数据库的可靠性。计算机技术发展迅速,云计算、大数据等新技术促进了数据库技术的发展,同时硬件的性能和可靠性也进一步地提高,新技术和新硬件的采用进一步地提高了数据库的可靠性。
参考文献:
[1]吕玲玲.数据库技术的发展现状与趋势[J] .信息与电脑(理论版), 2011(8): 118-120.
[2]张增照.以可靠性为中心的质量设计、分析和控制[M] .北京:电子工业出版社, 2010.
[3]郭江.分布式数据库系统中的一些问题[J] .计算机系统应用, 1994(2): 29-33.
[4]左翔,姜文彪.分布式数据库系统的设计与优化[J] .赤峰学院学报(自然科学版), 2012, 28(10): 20-21.
[5]韩蕾,王海蛟. SQL Server数据库中数据完整性的实现[J] .科技信息, 2010(4): 229.
[6]潘博.计算机软件数据库设计的重要性以及原则研究[J] .计算机光盘软件与应用, 2013(8): 291-292.
Reliability Analysis of System Database
ZHOU Chun-hua
(CEPREI, Guangzhou 510610, China)
Abstract:In recent years, with the development and application of computer technology, database technology has made rapid development, and its reliability has attracted more and more attention. Firstly, the database technology is introduced. Next, the main causes of database failure are summarized. And then, the reliability of database is analyzed. Through the analysis, it is found that the design of parallel system can be integrated into the design of system database, which can greatly improve the reliability of the database. Finally, the common methods and techniques to improve the reliability of database in the system construction are described and analyzed.
Key words:database;failure cause;reliability analysis;design technology
作者简介:周春华(1987-),男,广东电白人,工业和信息化部电子第五研究所标准与信息研究中心工程师,硕士,从事企业信息化管理与运维工作。
收稿日期:2015-09-23修回日期:2015-11-23
doi:10.3969/j.issn.1672-5468.2016.01.011
中图分类号:TP 302.7;TP 311.13
文献标志码:A
文章编号:1672-5468(2016)01-0048-04