现代数据库管理


 

 

 

数据库正变得越来越庞大、越来越复杂。数据库已不再仅仅存储传统上结构简单的数据类型如字符、数字、日期等,而且还存储结构复杂的数据类型如音频、视频、图象及混合文档等;对事务智能化处理的日益增长的需求也正导致数据仓库过度膨胀甚至失控,数据库因此变得愈加庞大了。今天的数据库不只是存储数据,还存储作用于数据的过程。数据库管理系统所控制的存储过程、触发器、用户自定义函数等已成为数据库管理中的新内容。数据库管理系统正被用于更多的场合, 并发挥着更多的功能。数据库被置于较以往更多样化的平台上,如大型机、中型机、工作站、个人电脑甚至掌上电脑中。同时,随着电子商务应用的不断推广,越来越多的数据库与互联网相连接。数据库管理因此变得愈加复杂了。这一切对从事数据库管理的现代数据库管理员提出了新的要求。

 

一、互联网对数据库管理的影响

 

在当代,互联网的应用无所不在,极少有商务活动不受到互联网技术飞速发展的影响。的确,电子商务与传统的商务活动相比其性质已发生了很大的改变;成功的电子商务应该总是在线的,全天候的,随时等待着为用户提供服务。这一切无一不是建立在与互联网紧密结合的强大的数据库管理系统的基础之上。

 

传统的数据库管理员只负责数据库的运行、性能的优化,并尽量保证实现其高可用性。与互联网的结合,无疑增加了现代数据库管理员的职责及其工作的难度。他们面临的第一个任务是最大限度地缩短数据库的停用期(downtime)。停用期分为计划外停用与计划内停用。计划外停用包括硬件故障、程序错误或病毒等;计划内停用则包括软件升级、数据库修改及日常维护。工业分析家推测计划外停用期高达80%是由应用软件的故障与人为的错误产生的,硬件的故障与操作系统的崩溃并不常见。这种停用期更频繁地发生于错误地输入事务、不恰当的批处理操作、用错误的输入文件或参数运行程序等情形下。这些问题可以通过使用日志及软件开发商提供的有关方案得到解决;采用高速事务恢复方案,可能使故障在不影响数据库的可用性前提下得以排除。与计划外停用相比,计划内停用发生得更频繁,对数据库的可用性影响更大,因而更需要得到数据库管理员的注意。

 

在线数据库管理应尽量缩短停用期、最好避免其发生。例如通常数据库进行重组时需要暂停运行;但对在线数据库而言,运用新的技术可将数据重组到一个镜象拷贝,完成后再交换拷贝,使数据库始终保持在线,避免了停用期发生。这些新的技术还包括数据库的在线备份和加载。有时还需修改在线数据库的系统参数;通常,改变这些参数后必须重新启动系统,但在电子商务活动中,这是不能接受的。现在应用新的技术,不须重启系统、再生地址空间即可完成对系统参数的修改。缩短停用期的另一个重要方法是数据库日常维护的自动化。例如,改变表结构不是一件容易的工作,常常导致停用期的延长。应用自动化的数据库修改工具,可在不产生大的干扰下对关系数据库进行任意修改。这种工具可自动地产生脚本。这种自动化避免了错误的发生,缩短了停用期,极大地提高了在线数据库的可用性。在停用期不能避免时,应尽快完成任务以尽力缩短停用期。尽可能应用速度最快的和出错最少的技术,例如,当来自第三方的恢复、加载和重组技术如果仅消耗传统数据库完成同样工作所需时间的1/3至1/2,则可以考虑移植这一技术。并非所有的停用期都可以避免,例如存储芯片或磁盘驱动器的故障。硬件故障的发生是无法预测的。通过冗余存储或自动备份可能会避免某些故障造成的损失,但难以完全消除此类问题的发生。此时,须尽可能采用恢复工具,尽快地缩短停用期。

 

停用期并非现代数据库管理员面临的唯一问题。他们还要求掌握Java。Java的主要优点是它的可移植性,可使开发者编写的程序在任何平台上运行而无需考虑硬件或操作系统的特性。Java适于制作动态与交互的Web页面。在Web上执行的Java程序,称为applets,可自动下载并自动执行。Java还是一种不依赖于Web的、可用于开发一般应用程序的全功能的编程语言。随着互联网应用日益广泛,Java将更加流行。Java近年来在应用上的日益增长几乎与电子商务的增长是同步进行的。用Java开发的Web应用程序,一般都与数据库的访问相关。所以作为数据库管理员至少必须掌握Java的基本知识。大多数数据库管理员都参与了数据库应用程序的设计或调试。成功的开发商在将软件产品推向市场前总是确保所有程序代码得到充分测试与评估。测试评估确保了程序的效率、效果和适用性。大多数专家认为数据库应用程序在运行中发生的问题有70-80%是因SQL书写不当和逻辑错误引起的。在程序转化为商品前进行评估是明智的。如果一个数据库管理员不懂Java,则无法参与程序的调试以优化应用程序与关系数据库的配合。

 

Java流行的另一原因是其可增强应用程序的可用性。编写好的Java程序需要编译,但编译器输出的不是纯粹的可执行代码,而是Java字节码。Java字节码由Java虚拟机解释执行,不同的平台具有各自的Java虚拟机。Java代码可作为应用程序的一部分运行,不会因为Java代码的变化而对应用程序产生影响。正是以这种方式,Java增强了应用程序的可用性。此外,Java简化了应用程序复杂的更新过程,并使客户/服务器应用程序中动态链接文件(DLL)的发布和管理变得易于进行。

 

由于Java程序需实时解释才能执行,其速度无疑要慢于编译型程序。采用即时编译器技术(JIT)或高性能Java编译器(HPJ)可提高Java程序的执行速度。应用JIT技术,字节码可在选定的平台上先编译为机器码,这可加速Java程序的运行。但JIT技术仍是一种解释过程,所以慢于编译型程序的速度。应用HPJ编译器可将字节码转换成真正的机器码,避免了运行时解释字节码的消耗。但是JIT 或HPJ尚未得到Java完全的支持。

 

现代数据库管理员还须了解怎样用Java访问数据库。用Java访问数据库有JDBC 和 SQLJ两种方式。JDBC是Java访问关系数据库的应用编程接口,类似于ODBC,包含一系列类和接口。任何熟悉应用编程和ODBC的人都可很快学会JDBC。JDBC提供了动态的SQL访问关系数据库。用JDBC为一种平台编写的应用程序,可应用于其他平台。采用正确的JDBC驱动程序,应用程序应该是可移植的。SQLJ为Java提供了内植的静态的SQL。翻译器必须用SQLJ处理Java程序。对DB2的管理者来说,这就如同预编译COBOL程序。所有的数据库提供商计划采用同一通用翻译器。翻译器从Java代码中分离SQL语句并使其优化入数据库要求的模块中。也可在Java程序中增加Java代码以替代对SQL的调用。现在整个程序都可编译为字节码,并通过绑定为SQL生成包。

 

应根据具体情况选择采用JDBC或SQLJ。SQLJ能通过使用静态的SQL增强程序执行的效率,这对Java而言可能具有重要的意义。SQLJ类似植入的SQL程序,JDBC则类似于调用级的接口程序。开发者对方法的熟悉程度也是需要考虑的因素。应用Java开发前,数据库管理员必须掌握Java,并理解JDBD与SQLJ的区别。

 

二、数据库的过程性管理

 

现代数据库管理系统除了发挥存储、管理和访问数据等核心作用外,还提供了额外的功能,整合了过程性逻辑。典型的过程性逻辑包括存储过程、触发器、用户自定义函数,它们与数据库管理系统结合非常紧密。数据库管理员需要对这些新的功能进行管理、设计、操作。有时数据库管理员也承担编码这些对象的任务,但这不总是最佳的解决之道。

 

存储过程可被认为是数据库管理系统中活的程序。存储过程将应用程序代码从客户工作站转移到了数据库服务器。一个SQL存储过程可以包含多个SQL语句。通过使用变量和条件,能够用存储过程建立非常巨大而复杂的查询,以非常复杂的方式更新数据库。存储过程执行速度快,且在第一次执行之后,它们在数据库中经过了优化和编译并存储在高速缓存之中,当客户再次发出执行存储过程的请求时,可以直接从高速缓存中执行,省去了优化和编译阶段,节省了执行过程的大量时间,并减少了网络通信量。触发器是存储在数据库管理系统中的事件驱动的过程,隶属于特定的表。触发器可被看作是用过程逻辑书写的规则或约定的高级形式。它不能被直接调用或执行,而是作为行为的结果由数据库管理系统自动执行的。一旦某一触发器被创建,总是在满足更新、插入、删除等事件发生的条件时执行。用户自定义函数是可代替标准的、内置的SQL函数执行的程序。用户自定义函数提供基于一系列输入值的结果,可象任何内置的SQL函数一样被用于SQL语句中。存储过程、触发器、用户自定义函数如同表、索引等其它数据库对象一样由数据库管理系统控制。但它们是过程性的而非声明性的,所以又与后者有所不同。这些对象是否物理地驻留于数据库管理系统中,依据数据库管理系统的不同而不同。但它们总是被注册于数据库管理系统,并保持与其的关联。

 

应用过程性逻辑的主要原因是为了提高复用性。它们可代替多个应用程序中的重复代码,驻留于数据库服务器的同一位置。这可能使开发新的应用程序的工作量有所减少,并保持了应用程序的连贯性。如果对数据库多次操作都应用过程性逻辑而非多个重复的代码段,则可确保每次操作都在执行同样的代码。

 

存储过程、触发器、用户自定义函数等提供的功能无疑是重要的,但它们也给管理带来了困难。管理员需要知道何时及怎样对它们进行测试。管理数据对象是管理员的基本任务,但不能期望数据及数据库专家会调试用C、 COBOL 甚至SQL编写的函数与程序。虽然许多公司要求数据库管理员同时也是SQL专家,但常常他们并非如此。但现代数据库管理员必须适应对过程性逻辑的管理,这要求具有数据库及编程的两方面的知识,虽然不要求参与编程,但至少应领导对代码的评价并对数据库过程性逻辑的使用进行管理。

 

三、数据库管理的自动化智能化

 

现代数据库的发展呈现四大趋势,即数据库容量的极限化、数据库设备的个人化、数据库管理的异质化、数据库升级的快速化。

 

数据库容量的增长已持续了多年。许多年来,数据库专家一直用巨大数据库(VLDB, very large database)这一术语来描述最大的数据库。一些数据库已逼近千兆兆字节,被称为极限数据库(VHDB, very huge database)。 影响这种空前增长的因素很多。首先是音频、视频、图象等多媒体非结构化数据的存储数量大大增加。大多数关系数据库提供了对多媒体数据的扩展支持。非结构化数据需要的存储空间较结构化数据大得多,如1小时的视频数据约需1GB,1分钟音频约需1MB,图象则依据其类型和质量需要20KB至60MB不等的存储空间。因此,存储多媒体无疑大幅度增加了数据库的大小。其次是是数据仓库的建立。为了便于快速访问数据仓库,同时还需创建大量相关的索引,这些都对存储空间提出了更高的要求。数据保存时间也在延长,数据库复制的次数也相应增加了。因此进一步增加了数据库的大小。

 

对数据挖掘的需求正在快速增长。数据挖掘是应用启发式算法通过抽取、转换、分析等模型化处理从已有的大量数据中发现过去未知的新数据的过程。所存储的数据越多,挖掘得到的数据质量可能越高。影响数据挖掘质量的因素还涉及总体的数据质量、挖掘算法。数据挖掘也因占据存储空间可导致数据库变大。

 

硬件的提升也刺激了数据库容量的增长。创建存储数十亿字节信息的极限数据库已成为现实,但对数据访问的速度未能与存储容量同步增加。这一缺陷虽然通过增加内存大小以缓存数据、并行数据访问技术等方法得到弥补,却也增加了数据库管理的复杂性。

 

数据库增大的结果导致即使采用最好最昂贵的工具也无法使其管理变得简单。一些管理任务可能不再有意义。例如当能更快地重建一个完整的数据库时,则无需采用备份和恢复策略。

 

个人数字助理(PDA)的出现是数据库设备个人化的代表。主要的数据库管理系统提供商正争相将其产品改造并移植到PDA中,例如IBM 的 DB2 Everyplace, Oracle 的 Oracle8i Lite 以及 Sybase的 Adaptive Server Anywhere等。 PDA数据库都以“小”为特点,表现为低成本、低能耗、小体积。总体思想是先在PDA中存入少量关键数据,随后再实现与其它完整、长期的存储数据的同步化。数据库管理员的工作无疑将受到这一趋势的影响。PDA数据库并不要求复杂的调试管理。对PDA而言,数据库管理员面临的主要问题有两个,第一个问题是需要参与PDA数据库的初始设计以确保手持设备性能的最优化;第二个问题是如何使成百数千的PDA保持同步化,后者当然更为重要。

 

现代数据库的异质性也表现得十分鲜明。一般用户都拥有多个来自不同提供商的产品。据统计大多数中大型用户拥有3至10种不同的数据库管理系统。这使数据库的管理变得更加尴尬。虽然现在大多数数据库管理系统的开发都采用了相关的技术,仍存在采用分层hierarchical (IMS)及网状network (IDMS)数据库管理系统的产品。例如,对Oracle 的透彻了解无助于对分层数据库的管理。当遇到不同模式的数据库时,数据库管理员可能不得不做执行完全不同的任务的准备。不同的数据库产品的具体操作方法也不同。一个精通DB2的数据库管理员面对Oracle数据库可能会表现得束手无策。不同的数据库在数据定义语言(DDL),结构查询语言(SQL)及运行机制等方面也存在许多差别。例如锁在DB2中的实现与Oracle相比就存在很大的不同,这还只是一个小例子。可以想象要同时理解并掌握多个数据库的管理有多么困难。虽然可通过利用一些管理工具掩盖其中的一些差别,但作为数据库管理员仍应理解所使用的各种数据库管理系统之间的细微的区别。

 

至于数据库管理系统升级换代的速度更是有目共睹。大多数用户无法紧跟提供商推出新版本的步调。例如,仅2000年内,就有微软公司的SQL Server 7升级为2000,IBM的DB2 UDB V6 升级为V7,Oracle 8i 升级为9i。升级并不仅仅意味着增加投资,对数据库管理员而言,还将面临大量移植、测试甚至重新编程的工作。

 

显然,作为现代数据库管理员必须掌握更多的专业技能。解决该问题的途径之一是数据库管理的自动化智能化。日常单调的数据库管理任务自动化,可使我们节省更多的时间去学习新的知识与技术。但是,仅仅简单的自动化操作是不够的,应该运用智能化的管理技术,并能对收集的数据进行复杂而全面的优化和分析。通过自动化智能化,数据库潜在的复杂性可能得到一定的简化,使数据库管理员能卓有成效地实现对现代数据库的科学管理。

 

(本文根据美国著名的数据库专家Craig S. Mullins发表于2001年DM Review 周刊上的多篇文章编译而成,并参考了其它杂志上的部分文章)