在现代社会里,数据库和数据库系统已经成为计算机信息系统的核心技术和重要基础,也是人们社会生活中不可缺少的一部分。从某种意义来讲,数据库的建设规模、数据库信息量的大小、使用频度和使用效果已成为衡量一个国家信息化程度的重要标志。
数据库是“按照数据结构来组织、存储和管理数据的仓库”,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合,它的存储空间很大,可以存放百万条、千万条、上亿条数据。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据外,图像、音乐、声音也都是数据。
一、数据库系统的基本原理
(一)数据库系统概述
数据库系统(DataBase System,DBS)是指引入数据库技术的计算机系统。一个完整的数据库系统不仅包含数据库,还包含支持数据库的硬件、数据库管理系统及相关软件、数据库管理员和用户。在不引起混淆的情况下,常常将数据库系统简称为数据库。
数据库技术研究的主要问题是如何科学地组织和储存数据及如何高效地获取和管理数据。数据库管理技术的发展过程和计算机软、硬件发展有着紧密联系。数据管理技术经历了以下三个阶段:
1.人工管理阶段(20世纪50年代中期以前)
当时的计算机在硬件方面没有磁盘等直接存取存储设备。计算机主要用于科学计算,数据量不大,一般也不需要将数据长期保存。而在软件方面没有操作系统和专门管理数据的软件。数据需要由应用程序自身进行管理,因此数据和程序紧密结合为一个整体,一组数据对应一个程序,数据不具有独立性,不能共享。
2.文件管理系统(20世纪50年代末至60年代中)
这个阶段计算机不仅用于科学计算,还大量用于数据管理。随着计算机软硬件的发展,出现了磁盘等直接存取存储设备,操作系统中有了专门的数据管理软件,即文件系统。
此阶段数据管理的特点是:程序和数据分离,数据以文件形式可以长期保存于外存上,由文件系统进行统一管理。数据文件基本上是对应于一个或几个程序,程序和数据具有一定的独立性,但数据共享性差,冗余度大,不易扩充。
3.数据库系统(20世纪60年代末以后)
随着数据管理规模的增大,数据量急剧增加,原有的文件系统管理数据的缺点暴露无遗,无法满足应用需求。为了解决多用户、多应用共享数据的要求,数据库技术应运而生。
(二)数据库管理系统
数据库管理系统(DataBase Management System ,DBMS)是位于操作系统与用户之间的一层数据管理软件,是数据库系统的核心。DBMS按照一定的数据模型科学地组织和存储数据,能够高效地获取数据,DBMS的主要功能包括数据定义、数据操纵、数据库建立和维护、数据库运行管理等。
1.数据定义
DBMS提供数据定义语言(Data Definition Language,DDL)。用户通过DDL可以对数据库中的数据对象进行定义。
2.数据操纵
DBMS提供数据操纵语言(Data Manipulation Language,DML)。使用DML,能够操纵数据,实现对数据库的基本操作,例如数据的查询、插入、删除和修改等。
3.数据库的建立和维护
数据库的建立和维护功能主要包括数据库初始数据的输入、转换、数据库的转储、恢复、数据库的重组织功能和性能监视、分析等。这些功能通常是由一些实用程序来完成的。
4.数据库的运行管理
数据库的建立、运用和维护等工作由DBMS统一管理、统一控制,以保证数据的安全性、完整性、多用户对数据的并发使用及发生故障后的系统恢复。
5.提供方便、有效存取数据库信息的接口和工具
编程人员可通过程序开发工具与数据库接口编写数据库应用程序。数据库管理员(DataBase Administrator, DBA)可通过相应的软件工具对数据库进行管理。
(三)数据库系统
数据库系统主要提供应用数据的组织、存储、维护、访问等数据管理功能。与人工管理和文件系统相比,数据库系统的主要特征有以下几个方面:
1.数据结构化
在文件系统中,相互独立的数据文件的内部结构通常表现为等长同格式记录的集合。例如,一个存放储户信息的文件,记录的结构格式如图 5-2所示。
采用结构化方式组织数据不仅节省存储空间,也为处理数据增加了灵活性。在文件系统中,尽管其记录内部的数据已经实现了结构化,但不同记录(型)之间没有联系。在数据库中,数据组织方式不仅要描述记录内部数据的构成,而且还要描述记录之间的联系。另外,数据库中往往存放着多个部门或组织、面向多种应用的大量数据,因此数据库中数据的组织方式是面向整体和全局的,实现整体数据的结构化。
在数据库系统中,数据的结构化是数据库的主要特征之一,是数据库系统与文件系统的本质区别。
2.数据的共享性高、冗余度低并且易扩充
由于数据库从整体角度描述数据,数据的组织不再面向某一应用,而是面向整个系统,因此数据库中的数据可以被多个用户、多个应用共享。数据的结构化和数据共享可以大大减小数据的冗余度,既降低数据的重复存储、节省存储空间,同时又可避免数据之间的不相容性和不一致性。另外,还容易增加新的应用,使得数据库系统具有弹性大、易扩充的特点。
3.数据的独立性高
数据的独立性包括两个方面:数据的物理独立性和数据的逻辑独立性。
数据的物理独立性是指用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的。由于数据库中的数据在磁盘上怎样存储由DBMS实现和管理,用户程序不涉及数据的存储结构,应用程序面向的是数据的逻辑结构,因此当数据的物理存储改变后,应用程序不用改变。
数据的逻辑独立性是指用户的应用程序与数据逻辑结构是相互独立的。即数据的逻辑结构改变后,应用程序也可以不变。
数据的独立性是由数据库系统的三级模式结构和二级映像功能来实现的,如图 5-3所示。
4.数据由DBMS统一管理和控制
数据在数据库中是并发复用,即多个用户可以同时存取数据库中的数据甚至可以存取数据库中的同一个数据,因此DBMS必须提供以下四个方面的数据保护和控制功能。
第一,数据的安全性(Security)保护。数据的安全性保护是指保护数据,以防止不合法的使用而造成数据的泄密和破坏,使每个用户只能按规定对某些数据以某些方式进行使用和处理,即保证只有赋予权限的用户才能访问数据库中的数据,防止对数据的非法使用。
第二,数据的完整性(Integrity)控制。数据的完整性是对数据的正确性、有效性和相容性要求,即控制数据在一定的范围内有效或要求数据之间满足一定的关系,保证输入到数据库中的数据满足相应的约束条件,以确保数据有效、正确。例如,确保“性别”的取值只能是“男”或“女”。
第三,并发(Concurrency)控制。并发控制是指当多个用户的并发进程同时存取、修改数据库时,可能会发生相互干扰而得到错误结果,并使得数据库的完整性遭到破坏,因而对多用户的并发操作加以控制和协调。
第四,数据库的恢复(Recovery)。计算机系统的软硬件故障、操作人员的失误以及故意破坏等,均可能影响数据库的正确性,甚至会造成数据库中的部分或全部数据丢失。因此DBMS必须提供数据库的恢复功能,使数据库从错误状态恢复到某一已知的正确状态。
(四)数据库系统结构
数据库是某个企业、组织和部门所涉及数据的综合,它不仅要反映数据本身的内容,而且要反映数据之间的联系。由于计算机不能直接处理现实世界中的具体事物,所以人们必须先把具体事物转换成计算机能够处理的数据。在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。因此数据模型是数据库系统的数学形式框架,是用来描述数据的一组概念和定义,包括数据描述、数据联系、数据操作、数据语义以及数据的一致性等概念,也是将现实世界转换为数据世界的桥梁。
通常数据模型应满足三个方面的要求:一是能比较真实地模拟和反映现实世界;二是容易为人所理解;三是便于在计算机上实现。一种数据模型要很好地满足以上要求目前还很困难,因此针对不同的使用对象和应用目的,会采用不同的数据模型。
数据模型中会有“型”(Type)和“值”(Value)这两类变量,型是指对某一类数据的结构和属性的说明,值是指对该型的一个具体赋值。通常会把仅仅涉及型的描述称之为模式(Schema),只是涉及数据的逻辑结构和特征,不涉及具体的值。模式的一个具体的值称为该模式的一个实例(Instance)。同一个模式可有很多实例。模式是相对稳定的,而实例是相对变动的。因为数据库中的数据是在不断更新的。模式反映的是数据库数据的结构及其联系,而实例反映的是数据库某一时刻的状态。
虽然实际的DBMS产品种类很多,各自支持不同的数据类型,但它们在体系结构上具有相同的特征,一般都采用三级模式结构,并提供了二级映像的功能,如图 5-3所示。
1.数据库系统的三级模式结构
(1)模式(Schema)
模式也称为逻辑模式、概念模式或全局模式。它是对数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。它位于数据库系统模式结构的中间层,既不涉及数据的物理存储细节和硬件环境,也与具体的应用程序以及所使用的应用开发工具及髙级程序设计语言无关。
一个数据库只有一个模式,数据库模式以某一种数据模型为基础,综合考虑所有用户的需求,从全局和整体角度将这些需求结合成一个逻辑整体。在模式中不仅要定义数据的逻辑结构,例如数据记录由哪些数据项构成,数据项的名字、类型、取值范围等,而且还要定义数据之间的联系,定义与数据有关的安全性和完整性要求。
DBMS提供模式定义语言(模式DDL)来定义模式。
(2)外模式(External Schema)
外模式也称子模式、局部模式或用户模式。它是对数据库用户使用的局部数据的逻辑结构和特征描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。外模式通常是模式的子集。根据用户和应用的不同,一个数据库中可以建立多个外模式。
外模式是保证数据库安全性的一个有力措施,每个用户只能访问所对应外模式中的数据,数据库中的其余数据是不可见的。
DBMS提供子模式定义语言(子模式DDL)来定义子模式。
(3)内模式(Internal Schema)
内模式也称存储模式或物理模式,它是对数据物理结构和存储方式的描述,是数据库内部的表示方式。
例如,数据记录采用什么存储方式,按照什么方式组织索引,数据是否压缩存储,是否加密等。一个数据库只有一个内模式。
2.数据库的二级映像
(1)外模式/模式映像
一个模式可以对应多个外模式。对于某一个外模式,数据库系统中就有一个外模式/模式映像,它定义了该外模式与模式之间的对应关系。
当模式改变时(比如增加新的数据或改变数据类型等),DBA对外模式/模式映像做相应的改变,可以使外模式保持不变。因为应用程序是依据外模式编写的,从而使应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
(2)模式/内模式映像
数据库只有一个模式和一个内模式,因此模式/内模式映像是唯一的,它定义了数据库全局逻辑结构与存储结构之间的对应关系。
当内模式改变时(比如数据库的存储结构改变等),DBA对模式/内模式映像做相应的改变,可以使内模式保持不变,从而使应用程序不必修改,保证了数据与程序的物理独立性,简称数据的物理独立性。
由于数据库采用三级模式结构和二级映像技术,保证了数据与程序之间的独立性,使得数据的定义和描述可以从应用中分离出去。另外,由于数据的存取由DBMS管理和完成,用户和应用程序不必考虑存取路径和存取方法,从而大大简化了应用程序的编制、维护和修改。
3.数据库系统结构实现方式
从数据库系统应用的角度来看,目前数据库系统常见的结构有客户/服务器结构和浏览器/服务器结构,这是数据库系统整体的运行结构。
(1)客户/服务器结构
在数据库系统中,数据库的使用者(如DBA、程序设计者)可以使用命令行客户端、图形化界面管理工具或应用程序等来连接数据库管理系统,并可以通过数据库管理系统查询和处理存储在底层数据库中的各种数据。数据库系统的这种工作模式采用的就是客户/服务器(Client/Server,C/S)结构。在这种结构中,命令行客户端、图形化界面管理工具或应用程序等称为“客户端”“前台”或“表示层”,主要完成与数据库使用者的交互任务;而数据库管理系统则称为“服务器”“后台”或“数据层”,主要负责数据管理。这种操作数据库的模式也称为客户/服务器(C/S)模式,图 5-4给出了这种工作模式的一般处理流程。
在客户/服务器(C/S)模式中,客户端和服务器可以同时工作在同一台计算机上,这种工作方式称为“单机方式”;也可以“网络方式”运行,即服务器被安装和部署在网络中某一台机器上,而客户端被安装和部署在网络中不同的一台或多台主机上。客户端应用程序的开发,目前常用的工具主要有Visual C++、.NET框架、Delphi、Visual Basic等。
(2)浏览器/服务器结构
浏览器/服务器(Brower/Server,B/S)结构是一种基于Web应用的客户/服务器结构,也称为三层客户/服务器结构。在数据库系统中,它将与数据库管理系统交互的客户端进一步细分为“表示层”和“处理层”。其中,“表示层”是数据库使用者的操作和展示界面,通常是用于上网的各种浏览器,由此减轻数据库系统中客户端的工作负担;而“处理层”也称为“中间层”,则主要负责处理数据库使用者的具体应用逻辑,它与后台的数据库管理系统共同组成功能更加丰富的“胖服务器”。数据库系统的这种工作模式被称为浏览器/服务器(B/S)模式,图 5-5给出了这种工作模式的一般处理流程。
目前,开发基于浏览器/服务器结构的数据库应用系统,主要使用的开发语言有PHP、Java、Peal、C#等。
目前,商品化的数据库管理系统以关系型数据库为主导产品,技术比较成熟,关系数据库具有简单灵活的数据模型,较高的数据独立性,能提供良好性能的接口,使用应用数学理论和方法来组织和处理数据库中的数据。国际国内的主导关系型数据库管理系统有DB2、Oracle、MySQL、Sybase和Informix。这些产品都支持多平台,如UNIX、Linux、VMS、Windows,但支持的程度不一样。关系型数据库管理系统采用结构化的查询语言(Structured Query Language,SQL),SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。微软的SQL Server也是成熟的关系型数据库,但是SQL Server只支持Windows操作系统。下面介绍这些数据库管理软件。
二、SQL Server软件
SQL Server 是一个关系数据库管理系统,它最初是由微软、Sybase和Ashton-Tate三家公司共同开发的,于1988年推出了第一个OS/2版本。在Windows NT推出后,微软与Sybase在SQL Server的开发上就分道扬镳了,微软将SQL Server移植到Windows NT系统上,专注于开发与推广SQL Server的Windows NT版本。Sybase则较专注于SQL Server在UNIX操作系统上的应用。
SQL Server的安全性及稳定性受操作系统限制,一般用于轻量级应用程序及非关键性系统。但是SQL Server提供了众多Web和电子商务功能,如对XML和Internet标准的支持,通过Web对数据进行轻松安全的访问,具有强大、灵活的基于Web的且安全的应用程序管理能力等。另外,由于其易操作性及其友好的操作界面,深受广大用户的喜爱。
(一)SQL Server软件产品
目前微软共提供了五种不同版本的SQL Server:
1.SQL Server Enterprise Edition(32位和64位)
SQL Server企业版,达到了支持超大型企业进行联机事务处理(OLTP)、高度复杂的数据分析、数据仓库系统和网站管理所需的性能水平。企业版全面的商务智能和分析能力及其高可用性功能(如故障转移群集),使它可以承担大多数关键业务的企业工作负荷。Enterprise Edition是最全面的SQL Server版本,是超大型企业的理想选择,能够满足最复杂的要求。
2.SQL Server Standard Edition(32位和64位)
SQL Server标准版,是适合中小型企业的数据管理和分析平台。它包括电子商务、数据仓库和业务流解决方案所需的基本功能。SQL Server标准版中集成的商务智能和高可用性功能可以为企业提供支持其运营所需的基本功能。SQL Server标准版是需要全面的数据管理和分析平台的中小型企业的理想选择。
3.SQL Server Workgroup Edition(仅适用于32位)
SQL Server工作组版,对于那些在数据库大小和用户数量上没有限制的小型企业,SQL Server工作组版是理想的数据管理解决方案。SQL Server工作组版可以用作前端Web服务器,也可以用于部门或分支机构的运营。它包括SQL Server产品系列的核心数据库功能,并且可以轻松地升级至SQL Server Standard Edition或SQL Server Enterprise Edition。SQL Server工作组版是理想的入门级数据库,具有可靠、功能强大且易于管理的特点。
4.SQL Server Developer Edition(32位和64位)
SQL Server开发人员版,允许开发人员在SQL Server顶部生成任何类型的应用程序。该应用程序包括SQL Server Enterprise Edition的所有功能,可用作开发和测试系统,而不用作生产服务器。SQL Server Developer Edition是独立软件供应商(ISV)、咨询人员、系统集成商、解决方案供应商以及生成和测试应用程序的企业开发人员的理想选择,用户可以根据生产需要升级SQL Server Developer Edition。
5.SQL Server Express Edition(仅适用于32位)
SQL Server学习版,是免费的,可以再分发(受制于协议),还可以充当客户端数据库以及基本服务器数据库。SQL Server Express是独立软件供应商、服务器用户、非专业开发人员、Web应用程序开发人员和创建客户端应用程序的编程爱好者的理想选择。如果你需要使用更高级的数据库功能,则可以将SQL Server Express无缝升级到更复杂的SQL Server版本。借助于Windows优良的图形界面,在当前成熟的关系型数据库中,SQL Server应该是最容易维护且最为简洁的数据库系统。但是要在SQL Server软件正常运行的基础上确保企业的应用程序能够稳定、高效、安全地运行,对运维人员也提出了较高的要求。
(二)SQL Server软件应用
针对不同的SQL Server应用,应该从以下几个方面进行研究:
1.安装部署
相对于其他数据库系统,受益于Windows的图形界面,SQL Server的安装过程较为简单,但是安装部署要考虑的事情也是不容忽略的。部署前应该考虑到操作系统的安全、账户的权限、系统数据库设置、字符集及时区的设置等。
2.内存管理
SQL Server在运行过程中使用的内存配置,将会对数据库的运行稳定性及性能产生较大的影响,因此对于SQL Server数据库的内存管理也要有深入的了解。其中包括数据页面、数据库组件、线程内存以及第三方代码消耗的内存。因此SQL Server内存使用情况的分析将是比较重要的工作内容。一般来说,内存监控有两种方式。一种是在分析系统内存情况时使用性能计数器,另一种是使用动态管理视图(DMV,只适用于SQL Server 2005和2008)。在此就不具体介绍这两种方式了。
3.数据库数据文件及日志文件
数据库的日常工作主要是对数据的增删改查,以及对各操作进行记录。这些工作最终都会落实到文件的读写操作上。因此,数据文件及日志文件的分布、配置以及存储类型将会影响到数据库的响应速度。因此,运维人员应该对存储设备及类型有一定的了解,并深入掌握文件及文件组的使用。
4.SQL编码
数据库系统是数据管理的平台,在日常工作中所有的数据库操作及交互都需要使用SQL。因此SQL的编写是运维人员必须具备的能力,在此基础上还要了解什么样的SQL可以让数据库引擎高效地执行。对于SQL Server的数据库引擎来说,复杂的SQL往往执行效率不高,调试困难,无法重复使用。复杂的存储过程同样面对阅读困难、复用性差以及不便维护的困境。因此,应该尽可能地使用较为简单的SQL,合理地将SQL或存储过程进行拆分,简化逻辑。此外,数据库引擎对于大批量数据的处理效率要优于行级数据,在维护过程中要多加注意。
5.性能提升
在软件系统的整个生命周期中,相对于规划设计阶段、编码阶段,运维阶段所做的工作对数据库的影响是最小的,也是对运维人员要求最高的。运维人员无法改变数据组成,甚至连查询语句都不能修改。这就需要运维人员使用索引、分区等对用户透明的手段,对数据库进行改造,以改善其性能,同时还要注意内存以及I/O的重新配置和规划。此外,还应该熟练地进行数据库监控,以及使用数据库锁。通过SQL Server Profiler(2000版本中称为事件探查器)可以监控到执行较差的查询、登录尝试、故障、连接或者断开,以及语句级别使用的CPU、死锁的问题、tempdb数据库的性能等。
6.容灾与备份
数据库的备份和恢复是运维人员必须要掌握的一项能力。容灾是在备份的基础上更高的一种可用性要求,容灾是保障数据不因人为因素丢失的高可用方案。备份是保障数据在任何情况下都能回滚到可接受的范围的手段,而且容灾不能代替备份。因此,运维人员应该了解并可以熟练进行数据库的备份恢复操作,并可以使用相关的容灾软件对数据库进行恢复(一些非关键性或小型企业的数据库系统可能对容灾没有那么高的要求)。
7.故障诊断
除了备份恢复之外,故障诊断应该是运维人员最重要的必需技能。SQL Server Profiler(2000版本中叫事件探查器)跟踪数据库的警告及报错信息,并根据跟踪信息进行诊断定位。对于24小时不间断运行的系统,还可以使用系统监视器来收集SQL Server的运行情况,进行系统诊断。
三、MySQL软件
(一)MySQL软件概述
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL所使用的SQL语言是用于访问数据库的常用标准化语言。MySQL软件采用了双授权政策,它分为社区版和商业版。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。
与其他的大型数据库(例如Oracle、DB2、SQL Server等)相比,MySQL有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余。另外,由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。以Linux作为操作系统,以Apache和Nginx作为Web服务器,以MySQL作为数据库,以PHP/Perl/Python作为服务器端脚本解释器,可以构建一个网站系统。由于这4个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花钱(除了人工成本之外)就可以建立起一个稳定、免费的网站系统。这4个软件被业界称为“LAMP”组合。它具有以下特性:
(1)使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。
(2)支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。
(3)为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
(4)支持多线程,充分利用CPU资源。
(5)优化的SQL查询算法,有效地提高查询速度。
(6)既能够作为一个单独的应用程序应用在客户端/服务器网络环境中,也能够作为一个库嵌入到其他软件中。
(7)提供多语言支持,常见的编码(如中文的GB 2312、BIG5,日文的Shift_JIS等)都可以用作数据表名和数据列名。
(8)提供TCP/IP、ODBC和JDBC等多种数据库连接途径。
(9)提供用于管理、检查、优化数据库操作的管理工具。
(10)支持大型数据库,可以处理拥有上千万条记录的大型数据库。
(11)支持多种存储引擎。
新版本中加入了表和索引的分区、行级复制、MySQL集群基于磁盘的数据支持、MySQL集群复制、增强的全文搜索函数、增强的信息模式(数据字典)、可插入的API、服务器日志表、XML/XPath支持、实例管理器、表空间备份、mysql upgrade升级程序、内部任务/事件调度器、新的性能工具和选项(如mysqlslap)等内容。
MySQL数据库是以“客户端/服务器”模式实现的,是一个多用户、多线程的小型数据库。MySQL因其稳定、可靠、快速、管理方便以及支持众多系统平台的特点,成为世界范围内最流行的开源数据库之一。
(二)数据库引擎
作为开源的数据库管理系统,MySQL拥有众多的存储引擎。根据不同的应用系统特点,运维人员要选择需要的存储引擎。这对运维人员的技术水平提出了很高的要求。常用的存储引擎为MyISAM、InnoDB、BDB、Memory、Archive、Merge、Federated、Cluster/NDB、CSV、BlackHole、Example。其中 InnoDB、BDB提供事务安全表,其他存储引擎都提供非事务安全表。
(1)MyISAM是MySQL 5.5之前的默认数据库引擎,最常用,拥有较高的插入、查询速度,但不支持事务。
(2)InnoDB是事务型数据库的首选引擎,支持ACID事务和行级锁定,从MySQL 5.5起成为默认数据库引擎。
(3)BDB源自Berkeley DB,是事务型数据库的另一种选择,支持提交和回滚等其他事务特性。
(4)Memory是所有数据置于内存的存储引擎,拥有极高的插入、更新和查询效率,但是会占用和数据量成正比的内存空间,并且其内容会在MySQL重新启动时丢失。
(5)Merge将一定数量的MyISAM表联合而成一个整体,在存储超大规模数据时很有用。
(6)Archive非常适合存储大量独立的、作为历史记录的数据,它们不经常被读取。Archive拥有高效的插入速度,但其对查询的支持相对较差。
(7)Federated将不同的MySQL服务器联合起来,逻辑上组成一个完整的数据库,非常适合分布式应用。
(8)Cluster/NDB是高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性能和安全性,适合数据量大并且安全和性能要求高的应用。
(9)CSV是逻辑上由逗号分隔数据的存储引擎,它会在数据库子目录里为每个数据表创建一个CSV文件。这是一种普通文本文件,每个数据行占用一个文本行。CSV存储引擎不支持索引。
(10)Blackhole是黑洞引擎,写入的任何数据都会消失,一般用于记录binlog,用作复制的中继。
(11)Example存储引擎是一个不做任何事情的存根引擎。它可以作为MySQL源代码中的一个例子,演示如何开始编写一个新存储引擎。Example存储引擎不支持编索引。
另外,MySQL存储引擎的接口定义良好,有兴趣的开发者可以通过阅读文档编写自己的存储引擎。
(三)数据库索引
索引是一种特殊的文件(InnoDB及其他关联型数据表上的索引是表空间的一个组成部分),它包含了数据表里所有记录的引用指针。索引不是万能的,索引可以加快数据检索操作,但会使数据修改操作变慢。每次修改数据记录,索引就必须刷新一次。为了在某种程度上弥补这一缺陷,许多SQL命令都有一个DELAY_KEY_WRITE选项。这个选项的作用是暂时使用MySQL在相关命令每次插入一条新记录和每次修改一条现有记录之后立刻对索引进行刷新。对索引的刷新将等到全部记录插入/修改完毕之后再进行。在需要把许多新记录插入某个数据表的场合时,DELAY_KEY_WRITE选项的作用将非常明显。另外,索引还会在硬盘上占用相当大的空间。因此应该只为最经常查询和最经常排序的数据列建立索引。注意,如果某个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果。
(四)数据库备份
MySQL主要利用mysqldump来备份数据库。数据量小的数据库直接用mysqldump来处理,数据量稍微大些的数据库在从服务器端使用mysqldump进行备份,也在有些场合考虑使用xtrabackup。对于数据库比较分散的系统,相对来说,备份校验的工作量有点大。对于小型数据库,还可以使用mysqlhotcopy进行备份。对于安全性较高的数据库,也可以使用主从复制机制实现数据库实时备份。
四、DB2软件
(一)DB2软件概述
1973年,IBM研究中心启动System R项目,为DB2的诞生打下良好基础。System R 是 IBM 研究部门开发的一种产品,这种原型语言促进了技术的发展并最终在1983年将 DB2 带到了商业市场。
DB2有一系列关系型数据库管理系统的产品,分别用在不同的操作系统平台上。DB2主要应用于大型应用系统,具有较好的可伸缩性,可应用于OS/2、Windows等平台下。DB2提供了高层次的数据利用性、完整性、安全性、可恢复性,以及小规模到大规模应用程序的执行能力,具有与平台无关的基本功能和SQL命令。DB2采用数据分级技术,能够使大型机数据方便地下载到LAN数据库服务器中,使得客户机/服务器用户和基于LAN的应用程序可以访问大型机数据,并使数据库本地化及远程连接透明化。它以拥有一个非常完备的查询优化器而著称,其外部连接改善了查询性能,并支持多任务并行查询。DB2具有很好的网络支持能力,每个子系统可以连接十几万个分布式用户,可同时激活上千个活动线程,对大型分布式应用系统尤为适用。
DB2数据库核心又称作db2公共服务器,采用多进程多线索体系结构,可以运行于多种操作系统之上,并分别根据相应平台环境作了调整和优化,以便能够达到较好的性能。关系数据库具备的常见功能如下:
(1)支持面向对象的编程。db2支持复杂的数据结构,如无结构文本对象,可以对无结构文本对象进行布尔匹配、最接近匹配和任意匹配等搜索。可以建立用户数据类型和用户自定义函数。
(2)支持多媒体应用程序。db2支持大二分对象(blob),允许在数据库中存取二进制大对象和文本大对象。其中,二进制大对象可以用来存储多媒体对象。
(3)备份和恢复能力。
(4)支持存储过程和触发器,用户可以在建表时,显示其定义复杂的完整性规则。
(5)提供GUI和命令行,在Windows和UNIX下操作相同。
(6)支持异构分布式数据库访问。
(7)支持数据复制。
(二)DB2软件产品
DB2为不同的作业环境提供了不同的软件产品。
1.DB2 Everyplace
DB2 Everyplace主要用于移动计算。移动计算的真正力量并不在于移动设备本身,而在于它能够利用来自其他资源的数据。DB2 Everyplace不仅是一种移动计算基础设施,它还是个完整的环境,包含了构建、部署和支持强大的电子商务应用程序所需的工具。DB2 Everyplace提供了一个“指纹”引擎(大约200KB),其中包含了所有的安全特性,比如表加密和提供高性能的高级索引技术。
它可以在当今各种常见的手持设备上顺利地运行(提供多线程支持)常见的手持操作系统,包括如 Palm OS、Microsoft Windows Mobile Edition、任何基于Windows的32位操作系统、Symbian、QNX Neutrino、Java 2 Platform Micro Edition(J2ME)设备(如RMI的 Blackberry pager)、嵌入式Linux发布版(如BlueCat Linux)等。
2.DB2 Personal Edition
DB2 Personal Edition(DB2 Persona)是单用户RDBMS,运行于低价的商用硬件桌面计算机上。DB2 Personal Edition包含DB2 Express的所有特性,但是有一个例外:远程客户机无法连接运行这个DB2版本的数据库。
3.DB2 Express-C
DB2 Express-C其实不算是DB2系列的一个版本,但是它提供了DB2 Express的大多数功能。2006年1月,IBM发布了这个特殊的DB2免费版本,它可以用于基于Linux和Windows的操作系统。它是IBM专门针对开发者社区提供的完全免费的DB2版本,可以在此版本的DB2上不受限制地开发、部署以及分发自己的数据库应用程序。
4.DB2 Express Edition
DB2 Express Edition(DB2 Express)是一种支持Web的客户机/服务器RDBMS。DB2 Express可以用于基于Windows和Linux的工作站。DB2 Express提供一个低价的入门级服务器,主要用于完成小型企业和部门的计算任务。
5.DB2 Workgroup Edition
DB2 Workgroup Edition(DB2 Workgroup)和DB2 Express Edition功能相同,只是在服务器上可以安装的内存和价值单元(相当于一个服务器处理器内核的功能)数量方面有区别。
6.DB2 Enterprise Edition
DB2 Enterprise Edition(DB2 Enterprise)是一种支持Web的客户机/服务器RDBMS。它可以用于所有支持的UNIX、Linux和Windows版本。DB2 Enterprise适合作为大型和中型的部门服务器。DB2 Enterprise包含DB2 Express和DB2 Workgroup的所有功能,还添加了其他功能。
7.Data Enterprise Developer Edition
Data Enterprise Developer Edition(DEDE)是为应用程序开发人员提供的特殊版本。这个版本提供了几个信息管理产品,使应用程序开发人员可以对应用程序设计、构建和建立原型,产生的应用程序可以部署在任何IBM信息管理软件客户机或服务器平台上。在DB2 9中,这个软件包已经取消了,由DB2 Express-C取代。
DB2相较于其他几个数据库系统(SQL Server除外)是比较封闭的,但是也是最易于维护的。虽然环境变量、全局变量、实例参数、数据库参数加起来有上百个,运维人员根据实际环境设置它们,但是IBM丰富的说明文档可以简明扼要地让所有初学者知道其各自的作用。正是拥有这些自由的选择,才使得DB2具有强大的伸缩性和扩展性。
(三)DB2软件特点
IBM DB2在以下几方面有自己的特点,运维人员应重点关注和学习,并掌握其使用和维护方法。
1.高可用HADR(高可用性灾难恢复)
DB2发行版中,一个HADR(High Availability Disaster Recovery)环境需要两台数据库服务器:主(primary)数据库服务器和备用(standby)数据库服务器。当主数据库中发生事务操作时,会同时将日志文件通过网络传送到备用数据库服务器。然后,备用数据库对接收到的日志文件进行重放(Replay),整个过程类似于前滚恢复,进而保持与主数据库的一致性。当主数据库发生故障时,备用数据库服务器可以接管主数据库服务器的事务处理。此时,备用数据库服务器作为新的主数据库服务器进行数据库的读写操作,而客户端应用程序的数据库连接可以通过自动客户端重新路由(Automatic Client Reroute)机制转移到新的主服务器。当原来的主数据库服务器被修复后,又可以作为新的备用数据库服务器加入HADR中。
2.数据库分区
DB2的企业版提供数据库分区功能,即DPF。这一功能主要用来为大规模数据处理提供支持。DB2分区采用Share-nothing体系结构,数据库在一个非共享的环境中被分解为独立的分区。每个分区都具有自己的资源,例如内存、CPU和磁盘以及自己的数据、索引、配置文件和事务日志。通过它可以在物理或逻辑上将数据库负载分流,处理海量数据。
3.DB2 pureScale
DB2 pureScale是DB2的一个新特性,它允许用户通过“双机”(active-active)配置将数据库扩展到一组服务器上,以便交付高水平的可用性和可伸缩性。在这种配置中,运行于各主机(或服务器)上的DB2副本可以同时读取和写入相同的数据。共享DB2的一台或多台DB2服务器被称作数据共享组。数据共享组中的DB2服务器是该组的成员。目前,数据共享组支持的最大成员数量是128。
4.数据库并发
DB2在做数据修改时,在日志中既记录了修改前的数据(也就是UNDO日志),也记录了修改后的数据(即REDO日志)。对于DB2 V9.7之前的版本,在读取数据的应用程序遇到正在被其他应用程序修改的数据时,将会进行锁等待(除非使用UR隔离级别)。对于DB2 V9.7及以后版本,由于引入了“当前已落实”的功能,读取数据的应用程序将不需要等待锁释放,而是会从日志中读取数据修改前的版本。当请求加锁时,DB2会检查锁列表,看数据对象上是否已加锁,以及请求的锁与已加的锁是否兼容。DB2强调“读一致性”,在读数据行时,会根据隔离级别的不同而加S或IS锁。只有在使用UR隔离级别时,才不加S或IS锁。这保证了不同应用程序和用户读取的数据是一致的。DB2默认的隔离级是CS。对于大多数应用来说,默认的CS级别可以满足需要。在UR隔离级别下,如果DB2遇到正在被更改的数据,它就会读最新的且没有提交的脏数据。
5.SQL优化器
DB2通过优化器来分析SQL,生成它认为最优的执行计划。DB2的优化器实际上是一个标准规则集合。DB2的优化器是基于成本的优化器,也就是CBO(Cost Base Optmizer)。DB2优化器会应用查询成本公式,该公式对每一条可能的存取路径的4个因素(CPU成本、I/O成本、DB2系统目录中的统计信息和实际的SQL语句)进行评估和权衡。DB2系统目录中的统计信息是让DB2优化器正确工作的一个重要依据。这些统计信息向优化器提供了与正在优化的SQL语句将要访问的表状态相关的信息,因此应该保证数据库的统计信息是准确的。
6.备份恢复
DB2数据库的备份和恢复是比较简单的,只需要一条明确的关键指令,备份工作就可以顺利进行。当然,不同的生产环境可能需要一些前期工作要做。根据应用系统的需要,从数据块到数据库级,从delta到增量备份再到全备份,从联机备份到脱机备份,甚至实时备份,DB2提供了完备的各种备份方案供运维人员选择。当然,想要很好地运用这些不同的备份方案,还需要深入的学习。在高可用方面,数据库分区以及数据库复制,也应该是运维人员应该关注的地方。
7.故障诊断
DB2软件提供了管理通知日志、诊断日志、事件日志、转储文件、陷阱文件等日志信息帮助运维人员监控和记录数据库发生的问题过程,具体这些文件所处的位置及作用如下:
(1)管理通知日志(“instance_name.nfy”)
该日志适用于所有的操作系统,只是根据操作系统的不同展现方式有所区别。
对于Linux和 UNIX操作系统,该日志位于diagpath 数据库管理器配置参数所指定的目录中。
对于Windows操作系统,使用事件查看器工具(在控制面板中依次选择“管理工具”→“事件查看器”)。
该日志在创建实例时自动创建。发生重大事件时,DB2 将信息写入管理通知日志,供数据库和系统管理员使用。记录在此文件中的消息类型由 notifylevel配置参数确定。
(2)DB2 诊断日志(“db2diag.log”)
该日志位于 diagpath 数据库管理器配置参数所标识的目录中。
此文本文件包含关于实例遇到的错误和警告的诊断信息。此信息用于问题确定及IBM软件支持。记录在此文件中的消息类型由diaglevel数据库管理器配置参数确定。
(3)DB2 管理服务器(DAS)诊断日志(“db2dasdiag.log”)
该日志同样适用于所有的操作系统,根据操作系统的不同展现方式如下:
对于Linux和 UNIX操作系统,该文件位于DASHOME/das/dump中,其中DASHOME是DAS所有者的主目录。
对于Windows操作系统,该文件位于DAS主目录的“dump”文件夹中。例如,C:\Program Files\IBM\ SQLLIB\DB2DAS00\dump。
该日志在创建 DAS 时自动创建。文件包含关于DAS遇到的错误和警告的诊断信息。
(4)DB2事件日志(“db2eventlog.xxx”,其中xxx是数据库分区号)
事件日志与诊断日志一样位于diagpath数据库管理器配置参数所指定的目录中。在创建实例时自动创建。
DB2 事件日志文件是数据库管理器中发生的基础结构级事件的循环日志。该文件大小固定,并且充当在实例运行时记录的特定事件的循环缓冲区。每次停止实例时,就会替换先前的事件日志,而不是追加。如果实例捕获,则还会生成db2eventlog.xxx.crash文件。这些文件供IBM 软件支持使用。
(5)DB2调出脚本(db2cos)输出文件
位于diagpath数据库管理器配置参数所指定的目录中。出现应急启动、陷阱或分段违例时自动创建。还可以在使用db2pdcfg命令所指定的特定问题情况期间创建。缺省db2cos脚本将调用db2pd命令以打开方式收集信息。根据db2cos脚本中包含的命令,db2cos输出文件的内容会有所不同。
(6)转储文件
该文件位于diagpath数据库管理器配置参数所指定的目录中,出现特定问题情况时自动创建,对于某些错误情况,会将附加信息记录在以失败进程标识命名的二进制文件中,这些文件可供IBM 软件支持使用,对其分析定位问题有帮助。
(7)陷阱文件
位于diagpath数据库管理器配置参数所指定的目录中。实例异常结束时自动创建,还可以使用db2pd命令创建。如果数据库管理器由于陷阱、分段违例或异常而不能继续处理,则会生成陷阱文件。
(8)核心文件
核心文件是一个二进制文件,它包含类似于DB2 数据库产品生成的陷阱文件的信息。核心文件还可能包含已终止进程的完整内存映像。核心文件位于diagpath 数据库管理器配置参数所指定的目录中。DB2 实例异常终止时由操作系统创建。
五、Oracle软件
(一)Oracle软件概述
Oracle Database,又名Oracle RDBMS,或简称Oracle,是美国Oracle公司的一款关系数据库管理系统,是目前最流行的客户/服务器(Client/Server)或B/S体系结构的数据库之一,在数据库领域一直处于领先地位。比如,SilverStream就是基于数据库的一种中间件。Oracle数据库是目前世界上使用非常广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。只要在一种机型上学习了Oracle数据库的知识,就能在各种类型的机器上使用它。
Oracle数据库最新版本为Oracle Database 12c。Oracle Database 12c 引入了一个新的多承租方架构,使用该架构可轻松部署和管理数据库云。此外,一些创新特性可最大限度地提高资源使用率和灵活性,如Oracle Multitenant可快速整合多个数据库,而Automatic Data Optimization和Heat Map能以更高的密度压缩数据和对数据分层。这些独一无二的技术进步再加上在可用性、安全性和大数据支持方面的主要增强,使得Oracle Database 12c成为私有云和公有云部署的理想平台。
到目前Oracle数据库仍然是市场份额最大的数据库系统。由于Oracle数据库安装介质完全免费,所以其同代产品中没有过多的版本。作为市场占有量最大,从业人员最多的数据库管理系统,其创新和升级也走在了其他数据库管理系统的前面。业内使用的版本从8i、9i到10g、11g、12g版本的升级都引入了大量的新功能,并对各项功能进行了增强。
(二)Oracle软件特点
Oracle数据库在以下几方面有自己的特点和特性,运维人员应重点关注和学习,并掌握其使用和维护方法。
1.高性能
Oracle数据库的群集软件RAC的特点包括如下几点:
(1)双机并行
RAC是一种并行模式,并不是传统的主备模式。也就是说,RAC集群的所有成员都可以同时接收客户端的请求。
(2)高可用性
RAC是Oracle Database产品高可用性的解决方案,能够保证在集群中只要有一个节点存活,就能正常对外提供服务。
(3)易伸缩性
RAC可以非常容易地添加、删除节点,以满足系统自身的调整。
(4)低成本
能使用较低廉的服务器来实现高可用性、高吞吐量的集群环境,这要比通过对某台高端服务器增加硬件实现高可用性、高吞吐量花费的成本低很多。
(5)高吞吐量
随着节点数的增加,整个RAC的吞吐量也在不断增长。
2.高可用性(容灾)
Oracle DataGuard是一种数据库级别的HA(高可用性)方案,最主要功能是冗灾、数据保护、故障恢复等。当然根据配置的不同,DataGuard还可以具备以下特点:高可用、性能提升、数据保护以及故障恢复等。
DataGuard可以分为物理STANDBY和逻辑STANDBY两种。二者的最大差别在于,物理STANDBY应用的是主库的归档日志,而逻辑STANDBY应用的是主库的归档日志中提取的SQL语句。由于二者这一点的区别,决定了物理STANDBY无论从逻辑结构和物理结构都是和主库保持一致,而逻辑STANDBY则只需保证逻辑结构一致,且逻辑STANDBY在应用SQL语句的时候,数据库可以处于打开的状态。
DataGuard的保护模式,可以分为三种不同类型:保护最大化、可用最大化、性能最大化。
3.灵活性
Oracle 独家具有提供网格计算优势的功能,可以利用它来提高用户服务水平、减少停机时间以及更加有效地利用IT资源,同时还可以增强全天候业务应用程序的性能、可伸缩性和安全性。网格计算是一种新的IT体系结构,它能够适应不断变化的业务需求。网格计算还为IT经济带来了革命性的变化。通过企业网格计算,可以使用可随需应变的灵活成本结构构建一个功能强大的数据中心。
简单来讲,网格计算就是将所有IT资源集中到一组共享服务中,用于满足所有的企业计算需求。网格计算基础架构将不断分析资源需求,并对供应做出相应调整。
Oracle Database还具有带 Oracle闪回数据归档的 Total Recall,使使用者可以在选定的表中查询以前的数据,从而提供了一种简单实用的向数据中添加时间维度的方法以便于更改跟踪、ILM、审计和合规。
4.管理自动化
利用管理自动化提高 DBA(数据库管理) 效率,其中包括以下几个方面:
(1)自动存储管理(ASM),增删硬盘不再需要操作系统管理员设置的镜像、负载均衡、物理卷、逻辑卷、分区、文件系统,只要打一条Oracle命令,ASM会自动管理增加或删除的硬盘。支持滚动升级,自动坏块检测和修复、快速镜像重新同步。自动存储管理的性能增强使得大型数据库可以更快地打开并减少SGA内存消耗。这些增强还允许 DBA增加存储分配单元大小以加快大型序列输入/输出(I/O)。
(2)内存自动化,根据需要自动分配和释放系统内存。在该特性之下SGA与PGA将会根据需要自动地扩展与收缩。
5.数据库并发
Oracle数据库在日志中记录修改后数据,而将修改前的数据记录到“回滚段”(rollback segment)中。UNDO撤销信息也会记录在REDO重做日志记录中,也就是说Oracle会把修改前的数据及其修改后的数据都记录在REDO中,以便实例失效的时候进行恢复。
当一个应用程序对表以Insert、Update和Delete操作进行修改时,另外一个应用程序在读取该表时,会从回滚段中读取该表修改前的数据。Oracle数据库利用数据行上的标志位来实现锁机制。同一时刻不同的应用程序有读不一致的现象,这是因为Oracle数据库认为一致性指的是在开始读的时候的断片应该保持一致,也就是说,在事务的生命周期里,总是能读到一致的内容。Oracle数据库默认的隔离级别类似DB2的UR,读取数据和更新不会互锁(如果提高Oracle数据库的隔离级别,也会产生互锁问题),但只能读到已提交的数据,无法得到最近修改(但暂时未提交)的版本。Oracle数据库在其所有的隔离级别(即read committed、serializable以及read-only隔离级别)下都不会读取脏数据,只有在read committed级别下,会从回滚段中直接读取修改前的曾经提交过的数据。在一些应用里,需要读到最新的数据,也就是脏数据。
在旧的DB2里(DB2 9.7以前)是靠锁来解决并发问题的,这是一个阵营。而Oracle数据库在另一个阵营,使用MVCC。实践检验,MVCC胜出。读脏数据没有太大用处。对于并发控制,无论是DB2还是Oracle数据库,都有自己的特色,只要合理地设计应用并配置好数据库参数,就能够满足绝大多数的需求。
6.数据库备份恢复
当使用Oracle数据库时,总希望数据库系统的数据是可靠的、正确的,但由于计算机系统的故障(硬件故障、网络故障、进程故障和系统故障)影响数据库系统的操作、数据的正确性,甚至破坏数据库,使数据库中全部或部分数据丢失。因此,当发生上述故障后,希望能重新建立一个完整的数据库,该处理称为数据库恢复。恢复子系统是数据库管理系统的一个重要组成部分,恢复处理随着所发生的故障类型所影响的结构而变化。Oracle数据库除了可以进行物理备份之外还可以进行逻辑备份。相对于DB2的备份来说,Oracle数据库的备份有点让人烦躁,但得益于rman的应用,Oracle数据库的备份开始变得越来越人性化。
7.故障诊断
Oracle数据库中内置了大量的视图,为性能及故障诊断提供丰富的数据。在此基础上,根据数据库诊断日志中的警告信息,参照Oracle文档,可以解决Oracle数据库运行过程中的大部分故障。Oracle数据库的高开放性使得Oracle数据库的每一个运作机制都展现在我们面前。使得我们从参数设置不合理而造成四大主要文件(控制文件、日志文件、数据文件、参数文件)损坏时,都可以通过技术手段恢复Oracle数据库。
六、Informix软件
(一)Informix软件概述
Informix在1980年成立,目的是为Unix等开放操作系统提供专业的关系型数据库产品。公司的名称Informix便是取自Information和UNIX的结合。
Informix是IBM公司出品的关系数据库管理系统(RDBMS)家族,第一个真正支持SQL语言的关系数据库产品是InformixSE(StandardEngine)。作为一个集成解决方案,它被定位为作为IBM在线事务处理(OLTP)旗舰级数据服务系统。IBM对Informix和DB2都有长远的规划,两个数据库产品互相吸取对方的技术优势。InformixSE的特点是简单、轻便、适应性强。它的装机量非常之大,尤其是在当时的微机UNIX环境下,成为主要的数据库产品。它也是第一个被移植到Linux上的商业数据库产品。
Informix动态服务器采用的是一种多线索体系结构(Oracle、Sybase也属于多线索数据库,DB2的情况较为复杂),这就意味着一个进程利用自己的多个线索可以同时完成多个任务,因而整个系统只需要较少的进程就足以完成DBMS的任务。
(二)Informix软件构成
Informix动态服务器系统由三个主要组件构成:共享内存、进程和磁盘。
1.共享内存
共享内存包括三个段:驻留段、虚拟段和消息段。驻留段主要用作磁盘数据的缓存。虚拟段主要用作内存池以支持进程及相关的会话(session)和线索。当客户与服务器利用共享内存进行通信时,消息段将用作两者之间的消息缓冲区。系统中还包括若干构成数据库服务器的UNIX进程,称为oninit。这些进程被称为虚拟处理器(Virtual Processor,VP),每一VP隶属于某一虚拟处理类,而每一虚拟处理器类都负责完成一类特定的任务。
2.进程
在动态服务器中,线索是在oninit中的一段被执行的指令流。通过多线索机制,可以让一个进程同时为多个任务服务而不必生成多个OS级进程。进程oninit可以启动多个线索,各线索顺序执行,并在适当的时候把控制权转移给其他线索。在多线索进程中每一线索都有自己的执行环境,包括自己的代码空间和自己的局部变量。一个多线索进程负责多个线索间的正文切换。
3.磁盘组件
系统的磁盘组件由多个原始磁盘空间组成,称为chunk,chunk以页(page)为基本单位,多个chunk集合逻辑上构成了数据空间(dbspace),数据空间用于存储数据库、表、系统信息以及物理日志和逻辑日志,一个数据空间至少包括一个chunk。
七、Sybase软件
Sybase是美国Sybase公司研制的一种关系型数据库系统,是一种典型的UNIX或Windows NT平台上客户机/服务器环境下的大型数据库系统。Sybase提供了一套应用程序编程接口和库,可以与非Sybase数据源及服务器集成,允许在多个数据库之间复制数据,适用于创建多层应用。系统具有完备的触发器、存储过程、规则以及完整性定义,支持优化查询,具有较好的数据安全性。Sybase通常与Sybase SQL Anywhere用于客户机/服务器环境,前者作为服务器数据库,后者为客户端数据库。
(一)Sybase数据库的特点
1.基于客户/服务器体系结构的数据库
一般的关系数据库都是基于主/从式的模型的。在主/从式的结构中,所有的应用都运行在一台机器上。用户只是通过终端发命令或简单地查看应用运行的结果。而在客户/服务器结构中,应用被分在了多台机器上运行。一台机器是另一个系统的客户,或是另外一些机器的服务器。这些机器通过局域网或广域网连接起来。客户/服务器模型的好处是:它支持共享资源且在多台设备间平衡负载;允许容纳多个主机的环境,充分利用了企业已有的各种系统。
2.真正开放的数据库
由于采用了客户/服务器结构,应用被分在了多台机器上运行。更进一步,运行在客户端的应用不必是Sybase公司的产品。对于一般的关系数据库,为了让其他语言编写的应用能够访问数据库,提供了预编译。Sybase数据库,不只是简单地提供了预编译,而且公开了应用程序接口DB-LIB,鼓励第三方编写DB-LIB接口。由于开放的客户DB-LIB允许在不同的平台使用完全相同的调用,因而使得访问DB-LIB的应用程序很容易从一个平台向另一个平台移植。
3.一种高性能的数据库
Sybase真正吸引人的地方还是它的高性能。体现在以下几方面:
(1)可编程数据库
通过提供存储过程,创建了一个可编程数据库。存储过程允许用户编写自己的数据库子例程。这些子例程是经过预编译的,因此不必为每次调用都进行编译、优化、生成查询规划,因而查询速度要快得多。
(2)事件驱动的触发器
触发器是一种特殊的存储过程。通过触发器可以启动另一个存储过程,从而确保数据库的完整性。
(3)多线索化
Sybase数据库的体系结构的另一个创新之处就是多线索化。一般的数据库都依靠操作系统来管理与数据库的连接。当有多个用户连接时,系统的性能会大幅度下降。Sybase数据库不让操作系统来管理进程,它把与数据库的连接当作自己的一部分来管理。此外,Sybase的数据库引擎还代替操作系统来管理一部分硬件资源,如端口、内存、硬盘,绕过了操作系统这一环节,提高了性能。
(二)Sybase数据库的构成
Sybase数据库主要由3部分组成:
1.Sybase SQL Server
Sybase SQL Server是整个Sybase产品的核心软件,起着数据管理、高速缓冲管理、事务管理的作用。
2.Sybase SQL Toolset
Sybase SQL Toolset是支持数据库应用系统的建立与开发的一组前端工具,主要有以下3个工具:
(1)ISQL是与SQL Server进行交互的一种SQL句法分析器。ISQL接收用户发出的SQL语言,将其发送给SQL Server,并将结果以形式化的方式显示在用户的标准输出上。
(2)DWB是数据工作台,是Sybase SQL Toolset的一个主要组成部分,它的作用在于使用户能够设置和管理SQL Server上的数据库,并且为用户提供一种对数据库的信息执行添加、更新和检索等操作的简便方法。在DWB中能完成ISQL的所有功能,且由于DWB是基于窗口和菜单的,因此操作比ISQL简单,是一种方便实用的数据库管理工具。
(3)APT是Sybase客户软件部分的主要产品之一,也是从事实际应用开发的主要环境。APT工作台是用于建立应用程序的工具集,可以创建从非常简单到非常复杂的应用程序,它主要用于开发基于表格(Form)的应用。其用户界面采用窗口和菜单驱动方式,通过一系列的选择完成表格(Form)、菜单和处理的开发。
3.Sybase Open Client/Open Server
Sybase Open Client/Open Server是把异构环境下其他厂商的应用软件和任何类型的数据连接在一起的接口,通过Open Client的DB-LIB库,应用程序可以访问SQL Server;而通过Open Server的SERVER-LIB,应用程序可以访问其他的数据库管理系统。
八、非关系型数据库(NoSQL)
随着近些年技术方向的不断拓展,大量的NoSQL数据库如MongoDB、Redis、Memcache出于简化数据库结构、避免冗余、影响性能的表连接、摒弃复杂分布式的目的被设计。
NoSQL数据库指的是分布式的、非关系型的、不保证遵循ACID原则的数据存储系统。NoSQL数据库技术与CAP理论、一致性哈希算法有密切关系。所谓CAP理论,简单来说就是一个分布式系统不可能满足可用性、一致性与分区容错性这三个要求,一次性满足两种要求是该系统的上限。而一致性哈希算法则指的是NoSQL数据库在应用过程中,为满足工作需求而在通常情况下产生的一种数据算法,该算法能有效解决工作方面的诸多问题但也存在弊端,即工作完成质量会随着节点的变化而产生波动,当节点过多时,相关工作结果就无法那么准确。这一问题使整个系统的工作效率受到影响,导致整个数据库系统的数据乱码与出错率大大提高,甚至会出现数据节点的内容迁移,产生错误的代码信息。但尽管如此,NoSQL数据库技术还是具有非常明显的应用优势,如数据库结构相对简单,在大数据量下的读写性能好;能满足随时存储自定义数据格式需求,非常适用于大数据处理工作。
NoSQL数据库适合追求速度和可扩展性、业务多变的应用场景。对于非结构化数据的处理更合适,如文章、评论,这些数据如全文搜索、机器学习通常只用于模糊处理,并不需要像结构化数据一样,进行精确查询,而且这类数据的数据规模往往是海量的,数据规模的增长往往也是不可能预期的,而NoSQL数据库的扩展能力几乎也是无限的,所以NoSQL数据库可以很好地满足这一类数据的存储。NoSQL数据库利用key-value可以大量地获取大量的非结构化数据,并且数据的获取效率很高,但用它查询结构化数据效果就比较差。
目前NoSQL数据库仍然没有一个统一的标准,它现在有四种大的分类:
1.键值对存储(key-value)
代表软件Redis,它的优点能够进行数据的快速查询,而缺点是需要存储数据之间的关系。
2.列存储
代表软件Hbase,它的优点是对数据能快速查询,数据存储的扩展性强。而缺点是数据库的功能有局限性。
3.文档数据库存储
代表软件MongoDB,它的优点是对数据结构要求不特别的严格。而缺点是查询性的性能不好,同时缺少一种统一查询语言。
4.图形数据库存储
代表软件InfoGrid,它的优点是可以方便地利用图结构相关算法进行计算。而缺点是要想得到结果必须进行整个图的计算,而且遇到不适合的数据模型时,图形数据库很难使用。
九、数据库软件维护技能
数据库运维服务是指针对用户数据库开展的软件安装、配置优化、备份策略选择及实施、数据备份恢复、数据迁移、故障排除、预防性巡检等一系列服务。其具体要求如下:
1.数据库安装与配置
主要指定制数据库安装配置方案,检查软件安装环境,安装数据库软件,完成数据库配置,并测试之。
2.权限管理和配置
确保数据库管理的安全和数据的安全,数据库软件都设置了不同的用户、不同的角色和不同的权限,需要确定建立哪些用户,这些用户充当什么角色,这些角色都有什么权限。与权限相关的总原则是以最低粒度控制权限。
3.数据库日常监控
数据库监控主要包括数据库系统的性能、事物、连接等方面的数据,如数据库工作状态、数据库表空间的利用情况、数据文件和数据设备的读写命中率、数据碎片情况、数据库的进程状态、数据库内存利用状态等。
4.数据库备份与恢复
主要是指本地、异地、同步、实时的分级备份与恢复方案及实施。
5.数据库性能优化
主要是指核心参数调优,SQL语句调优,性能评估方案的提供。
6.故障排除
通过远程、上门等方式按服务级别实施故障排除。
7.数据迁移
不同版本、不同厂商、不同结构数据库间的数据迁移。
8.预防性巡检
定期提供预防性巡检,并完成系统参数、配置调优,及补丁分发、安装服务。