面向对象视角的软件数据库

2016-09-10 22:26余英瀚
时代金融 2016年24期
关键词:管理信息系统事务视图

余英瀚

【摘要】存储和操作数据是早期计算机的应用焦点。第一个通用数据库管理系统是由通用电气(General Electric)的查尔斯·巴赫曼在20世纪6年代早期设计的,被称为集成数据存储。它形成了网络数据模型的基础,在20世纪60年代数据系统标准化协会强烈影响着数据库系统的发展。巴赫曼是第一个在数据库领域获得ACM图灵奖(相当于计算机科学诺贝尔奖)的人,他在1973年获得该奖项。IBM在20世纪60年代开发的信息管理系统(IMS)DBMS,即使在今天仍然有许多用户在安装使用。IMS形成了另一种称为层次数据模型的数据表示基础框架。由美国航空公司和IBM联合开发开发的用于机票预订的SABRE系统大约是在同一时间,它允许一些人通过计算机网络访问相同的数据。有趣的是,今天的SABRE系统是用于现在流行的基于web的旅行服务。创造一个良好的物理数据库设计,优化系统性能必须响应不断变化的用户需求,设计师需要理解DBMS的工作方式,尤其是索引和查询处理技术支持的DBMS。如果数据库将被许多用户并发访问,或者是一个分布式数据库,这个任务变得越来越复杂,和数据库管理系统发挥作用的其他特性。构建一个良好的数据库模型,优化系统性能必须响应不断变化的用户需求,设计师需要理解DBMS的工作方式,尤其是索引和查询处理技术支持的DBMS。如果数据库将被许多用户并发访问,或者是一个分布式数据库,这个任务变得越来越复杂,和数据库管理系统发挥作用的其他特性。

【关键词】管理信息系统 概念模式 视图 事务

一、数据库发展历史回顾

1970年,埃德加·科德在IBM的圣何塞研究实验室,提出了一种新的称为关系数据模型的数据表示框架。这被证明是一个在数据库系统发展中的分水岭。它引发了dbms关系模型的快速发展,建立在一个坚实的丰富的理论成果基础上。

在20世纪80年代,关系模型巩固了它作为DBMS范例的地位,数据库系统也继续获得广泛地使用。作为IBM系统R项目的一部分的关系数据库SQL查询语言成为了现在的标准查询语言。SQL的标准化是在20世纪80年代年代末,当前的SQL-92标准是由美国国家标准协会(ANSI)和国际标准组织(ISO)制定的。可以说,使用最广泛的并发编程形式是数据库程序的并发执行(称为事务)。

在20世纪80年代末和20世纪90年代,数据库系统已经在许多领域取得了进步。相当多的研究尝试了更强大的查询语言和更丰富的数据模型,并且在支持一个企业的所有复杂数据方面已经有了一个大的突破。几个供应商(如。IBM的DB2、Oracle8,Informix UDS)把他们的系统拓展到有能力存储新的数据类型,比如图像和文本。并且有能力响应更复杂的查询。

二、物理数据库设计

像所有其他方面的数据库设计一样。物理设计必须遵循数据的性质及其用途。尤其重要的是要理解典型数据库必须支持的工作负载;工作负载由一个混合的查询和更新组成。用户也对某些查询或更新有一定的要求,它们的运行速度是以每秒必须处理多少事务来衡量的。工作负载的描述和用户的性能需求是物理数据库设计决策的基础。

三、数据库工作负载

良好的物理设计的关键是到达预期的工作负载。一个工作负载描述包括以下要素:

第一,查询列表和他们的频率,所有查询和更新的一小部分。

第二,更新的列表及其频率。

第三,每个类型的查询和更新的性能目标。

对于每个查询工作负载中,我们必须确定:

访问的关系。

哪些属性需要保留(在SELECT子句)。

哪些属性有关于他们的选择或加入了条件表达(在WHERE子句中)和这些条件是如何选择的。同样的,对于每一个工作负载中地更新,我们必须确定:

哪些属性有关于他们的选择或加入了条件表达式(在WHERE子句中)和和这些条件是如何选择的。

更新的类型(插入、删除或更新)和更新的关系。

更新命令,修改更新的字段。

请记住查询和更新通常有参数,例如,借记卡或信用卡操作涉及特定的账号。这些参数的值确定选择性的选择和加入的条件。

更新有一个查询组件用于查找目标元组。该组件可以受益于一个良好的物理设计和索引。另一方面,更新通常需要额外的工作来维护索引的属性修改。因此,虽然查询能受益于索引,索引可以加快或减缓给定更新操作的速度。当创建索引时设计师应该记住这trade-offer。

四、数据库调优的必要性

在做系统的初步设计时,准确,详细的工作负载信息可能很难获得。因此,数据库设计调优和部署之后我们必须根据实际使用模式来完善初步设计以获得最好的性能。

当初始概念模式设计和一组索引和聚类决策被制定以后我们可以认为设计过程已经结束。任何对概念模式或索引的后续修改,,就会被视为一个调优活动。或者,我们可以考虑把一些细化的概念模式(和受此影响物理设计决策细化)作为物理设计过程的一部分。

画出设计和优化的界线不是很重要。

五、数据库调优的概述

数据库设计的初始阶段后,实际使用的数据库提供了一个可用于完善初步设计的可贵详细信息,。原来关于预期工作负载的许多假设可以被观察到的使用模式所替代;在一般情况下,初始工作规范将被验证,它们中的一些将被证明是错误的。初始猜测的数据大小能被来自系统目录(尽管这信息会随着系统的发展变化)的实际统计数据所取代。仔细监控查询可以揭示意想不到的问题;例如,优化器可能不会使用一些索引产生良好的计划。

数据库持续调优获得最好的性能是很重要的。

六、调优的概念模式

在数据库设计的过程中,我们可以意识到我们目前的关系模式的选择不让我们满足我们给定的带有任意一组物理设计选择的工作负载的性能目标。如果是这样,我们可能不得不重新设计概念模式(和审影响我们做出更改的视物理设计决策)。

我们可能认识到,在初步设计过程中或之后,或者系统已经使用了一段时间后,系统有必要重新设计,。一旦数据库已经被设计和数据被存储进去后,改变概念模式和映射关系影响的内容需要很大努力的。尽管如此,有时在系统开发的过程中修改概念模式是必要的。我们现在从性能的角度考虑在概念模式(重新)设计中所涉及的问题。

调整概念模式时必须考虑的几个选项:

我们可以决定接受一个3nf设计而不是BCNF设计。

如果有两种方法可以将给定模式分解成3nf或BCNF,我们的选择应该依据工作负载来定。

有时我们可能会决定进一步分解一个已经存在BCNF的关系。

在其他情况下我们应该尽可能正规化。我们可以选择替换关系的集合,分解得到的更大的关系,尽管它可能会有一些冗余的问题。或者,我们可以选择添加某些域或某些关系加快一些重要的查询,即使这将导致一些信息的存储冗余。

规范化的讨论集中在技术分解,这相当于垂直分区的关系。另一个需要考虑的技术是关系的水平分区问题,这将导致我们的关系有两个相同的模式。但我们需要创建两个有区别的关系(可能带有不同的索引和限制)

顺便说一句,当我们为了原来的模式更自然而重新设计的概念架构时,特别是如果我们正在调整现有的数据库架构,考虑是否应该创建视图来封装这些用户的变化是值得的

七、查询和视图的调优

如果我们注意到一个查询运行比我们预期的要慢得多,我们必须仔细检查查询去解决这个问题。一些查询的重写与一些指数的调优,经常可以能碰到这些问题。当在某些视图上运行的查询比预期的慢时,类似的调整可能会被运用。

调优查询时,首先要验证的是你希望系统使用的调优计划。这可能是因为各种各样的原因系统没有找到最好的计划。一些常见的情况下,没有有效地处理许多优化:

选择条件涉及空值。

选择条件涉及算术或字符串表达式或选择条件涉及链接。例如,如果我们有一个条件。年龄=2*D。年龄在WHERE子句中,优化器可能会正确地初始化一个可用指数E在年龄字段上,但是无法在D.age上使用一个可用的索引。用E.age/2=D取代这个条件将会扭转局面。

无法识别诸如一个唯一索引扫描的聚合查询涉及一个GROUP BY子句的复杂计划。

如果优化器是不足够聪明去制定最好的计划(使用访问方法和评估策略支持的DBMS),一些系统允许用户通过提供优化的提示来指导计划的选择;例如,用户可以强制使用一个特定的索引或选择连接顺序和连接方法。用户希望以这种方式来指导优化应该全面了解优化和给定的数据库管理系统的功能。

八、其他话题

(一)移动数据库

便携式电脑和无线通信的可用性催生了新一代的游牧数据库用户。在某种程度上这些用户仅仅是通过网络访问数据库,这是类似于分布式dbms。在另一个层面,网络以及数据和用户特征现在有了一些新颖的特性,这些特性影响一个数据库管理系统的许多组件的基本假设,包括查询引擎、事务管理器和恢复管理器。

用户通过一个无线链路连接其带宽是以太网的十分之一,不到ATM网络的百分之一。沟通成本因此比I/O和CPU成本更高。

用户的位置在不断变化,移动计算机有一个有限的电池寿命。因此,真正的沟通成本是连接时间和电池的使用加之传输的字节数,变化不断地取决于位置。数据频繁地被复制为了最大限度地减少从不同的地点访问它的成本。

用户移动时,数据可以在一个事务中从多个数据库服务器访问。失去联系的可能性也比在传统的网络更大。因此集中事务管理可能不切实际,尤其是一些数据是在移个人的移动电脑上。我们可能不得不放弃ACID事务并为用户程序开发替代的一致性概念。

(二)主存数据库

内存的价格已经足够低,对于许多应用程序来说,我们可以买到足够的内存来容纳整个数据库,带有64位寻址的现代的cpu也有非常大的地址空间。一些商业系统现在有几个g的内存。这一转变提示我们重新审视一些基本的数据库管理系统的设计决策,因为磁盘访问不再主宰内存数据库的处理时间:

内存不能从系统崩溃中幸免,所以我们仍然需要实现日志记录和恢复来确保事务原子性和持久性。日志记录在提交时必须必须被写入稳定的存储,这个过程可能成为一个瓶颈。为了最小化这个问题,而不是每个事务完成后提交,我们可以收集已经完成的事务和批量提交;这就是所谓的组提交。恢复算法也可以进行优化,因为网页很少有被写出来,为其他页面的空间。

内存操作的实施不必再那么仔细因为磁盘访问不再是性能的限制因素。

在优化查询时,必须考虑一个新的标准,即所需的空间来执行一个计划,即执行一个计划所需的空间量。最小化空间开销是很重要的,因为超过可用物理内存会导致把页面交换到磁盘(通过操作系统的虚拟内存机制),这样大大减慢执行速度。

参考文献

[1]蒋秀英.SQL Server 2000数据库与应用[M].北京:清华大学出版社,2006.

[2]龚小勇.关系数据库与SQL Server 2000[M].北京:机械工业出版社,2007.

[3]萨师煊,王珊.数据库系统概论(第三版)[M].北京:高等教育出版社,2000.

[4]李中华.基于NET的模式实现与应用[D].四川:四川大学,2006.

[5]任开银,黄东.在NET上架构公司级应用程序[J].微型机与应用2003,1.

[6]叶春阳.基于Web服务的流程协作研究[D].北京:中国科学院研究生院,2003.

猜你喜欢
管理信息系统事务视图
基于分布式事务的门架数据处理系统设计与实现
河湖事务
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
基于B/S结构的学生公寓管理信息系统的设计与实现
SQLServer自治事务实现方案探析
移动实时环境下的数据一致性研究