数据库系统
文章来源: | 发布时间:2009-09-02 | 【】 【】
在当今信息化社会中,数据无所不在,其规模正以惊人的速度增长。我们身边熟知的有银行、保险公司的帐目和客户数据;政府、机关、学校、医院的人事,财务和档案数据;公司、企业、工厂的生产和管理数据;报刊、杂志、电台、电视的文字和声象多媒体数据;购物中心、连锁店和大小商铺的商品物流数据,日常流水帐和客户数据;稍远一些,有气象分析和预报数据;地震勘探数据;人口调查数据;数字城市如数字北京数据;地球观测系统数据;数字图书馆数据;电子商务数据;电子政务数据;蛋白质分析和研究数据;人体基因组分析和研究数据;高能加速器实验数据等等。一个基因样本的数据量达t级(万亿字节),地球观测的年数据量逾一千万亿字节。这些数据规模庞大,这就是我们所处的环境!在这样的迫切需求面前,用计算机来储存和处理数据就成了必然选择。对这种需求提供服务的计算机软件系统就叫做数据库系统,它构成了当今信息化经济和社会生活的基础。
大量的数据按一定的格式储存起来,需要一种软件系统对其进行合适和有效的管理,以便向用户提供服务。被存储数据的总和构成了数据库,对数据库进行管理的软件系统叫做数据库管理系统。用户是通过数据库管理系统和储存在计算机的存储设备(如磁盘、磁带)中的数据打交道的。例如,考生通过考试数据库查询自己的分数;售票员通过票务系统出售机票。数据库(data base,简记为db)和数据库管理系统(data base management system>,简记为dbms)一起构成了数据库系统。
目前,市场上流行的主要数据库管理系统有oracle公司的oracle系统,ibm公司的db2系统及microsoft公司的sql server等。
现实世界的数据对象丰富多彩,多种多样,千差万别,要将它们存储到计算机中去必须先进行整理、过滤和抽象。要对现实数据对象进行描述,一种经典的行之有效的方法是通过数据模型。数据模型一方面从语义上描述了现实数据对象的含意,有利于人们简明扼要地加以理解;另一方面又便于在计算机中加以表示和存储。
三十多年来数据处理的历史经历了从文件系统到数据库系统的发展,数据模型也经历了从层次型(hierarchy)到网状型(network)到关系型(relation)到面向对象型(object oriented)的演变。
层次型数据模型是最常见的也是最易于被人理解的数据模型,它也叫树型模型,如国家政府的行政机构、公司的组织机构、军队的组织机构等都呈现一种层次型的树型结构。因此最早的数据库系统使用层次型数据模型就是顺理成章的事了。
层次型数据模型虽然直观、简单,但在描述较为复杂的数据对象的结构时就显得不够有力。于是,就有了网状数据模型的出现,它能轻松描述现实世界中较为复杂的关系,消除数据冗余,提高数据库系统的效率。网状数据模型的层次结构中,其下层结点的父节点可以不止一个,可以描述现实世界中更为复杂的结构。网状模型功能很强,但对用户的要求很高。在网状模型数据库中,要找到用户所需的数据,程序员必须象导航员一样了解查找的路径,这不是一件简单的事情。
20世纪70年代初,ibm的e. f. codd提出了关系数据模型,它把数据描述为一张张二维的表(table),表中的列称为属性,如姓名、年龄等;行称为记录或元组(record或tuple)。在关系模型中表的属性都应具有原子性,即不可再分了。
关系模型提出之后引发了十多年的关系模型理论和关系数据库管理系统实现技术的如火如潮的研究,直到现在,关系数据模型的理论基础已经扎实建立,关系数据库管理系统的实现技术已被全面系统地提出和构建起来,关系数据库管理系统的成熟产品也已陆续完成和推出。关系型数据库系统有牢固的数学基础,安全可靠,它为用户提供的使用语言是一种描述型语言,用户只须简单地指明要什么数据(what),有什么限制条件就可以了,剩下的工作都由关系数据库系统去自动完成,用户绝不需要去“导航”(how),这就极大地减轻了用户的负担。
上世纪八十年代由于应用需求的发展,如计算机辅助设计cad、计算机辅助制造cam、计算机辅助软件工程case、计算机集成制造系统cims等,使关系数据模型的描述能力感到不足,由此发展起来了面向对象模型。对象数据模型起源于抽象数据类型。在数据对象中不仅定义了数据结构,还定义了作用于此结构上的操作,对象外部只能通过操作接口来访问对象。面向对象程序语言典型的有smalltalk、c 等。面向对象的数据库管理系统在此前的十几年间成了国内外数据库系统领域的研究热点,取得了重大进展。纯面向对象的数据库系统虽然功能很强,能描述复杂的数据对象,但对于大量日常商务事务却显得过于累赘。此外,对已经存在的几乎无所不在的关系数据库系统,如何建立平滑的过渡也是纯面向对象数据库系统要解决的迫切问题。事实已经做了最好的回答,当今真正流行的,被人们广泛接受的不是纯面向对象数据库系统,而是对象—关系数据库系统,它兼有对象和关系数据模型的优点,取长补短,相得益彰。