|
|
|
|
移动端

2.4 DBMS的功能

《数据库系统:设计、实现与原理(基础篇)(原书第6版)》第2章数据库环境,本章的许多材料有关DBMS的重要背景信息。然而,对数据库系统领域不熟的读者可能会发现有一些材料在初次阅读时很难理解。不用太纠结,阅读了本书的大部分章节后可重读本章的这些内容。本节为大家介绍DBMS的功能。

作者:宁洪/贾丽丽/张元昭 译来源:机械工业出版社|2017-09-28 13:56

有奖调研 | 1TB硬盘等你拿 AI+区块链的发展趋势及应用调研


2.4 DBMS的功能

本节讨论DBMS应该提供的功能和服务的种类。Codd(1982)给出过完整的DBMS应该提供的八种服务,在此基础上,本书又增加了两种。

(1)数据存储、检索和更新

DBMS必须为用户提供在数据库中存储、检索和更新数据的能力。

这是DBMS最基本的功能。从2.1节的讨论知道,为了能够清晰地提供这个功能,DBMS应对用户隐藏内部物理实现的细节(例如文件的组织和存储结构)。

(2)用户可访问的目录

DBMS必须提供一个目录,内存各类数据项的描述并允许用户访问。

ANSI-SPARC体系结构的一个关键特点是要求提供一个集成的系统目录,目录中包含关于模式、用户、应用程序等信息的描述。这个目录对用户和DBMS都是可访问的。系统目录或者数据字典是描述数据库中数据的信息库,存储的是“关于数据的数据”或称为元数据。信息量以及信息的使用方式依DBMS而异。系统目录通常存储:

数据项的名字、类型和大小。

联系的名字。

数据的完整性约束。

授权访问数据的用户的名字。

每个用户能访问的数据项及访问的类型,如插入、修改、删除和检索访问。

外部、概念和内部模式及模式之间的映射,如2.1.4节所述。

各种统计量,例如事务的频率、对数据库中对象的访问次数。

DBMS系统目录是系统的基本组件。下一节将描述的多个软组件都依赖于系统目录中的信息。系统目录的优点有:

关于数据的信息可集中存放,这有助于将数据作为资源进行控制。

可以定义数据的意义,从而帮助其他用户了解数据的用途。

由于存储了信息的确切含义,所以能简化信息的通信。系统目录还可以确定拥有和访问数据的用户和用户群。

由于数据被集成,所以更容易识别冗余和不一致性。

可记录对数据库的修改。

由于系统目录记录了每个数据条目、其所有联系和所有用户,所以一个修改实际发生之前就可以确定它将产生的影响。

可以加强安全性。

确保完整性。

可以提供审计信息。

有些著作者区分系统目录和数据字典,认为数据字典中还应包含数据存放位置及存储方式等信息。国际标准化组织收录了一个关于数据字典的标准,称为信息资源字典系统(IRDS)(ISO 1990,1993)。IRDS是个软件工具,能用于对组织机构内的信息源进行控制和制定文档,它还给出了用于组织数据字典的表的定义以及对这些表的操作。本书使用术语“系统目录”指代所有的库存储信息。我们将在23.4.1节进一步讨论那些存在系统目录中用于查询优化的统计信息。

(3)事务支持

DBMS必须提供一个机制,确保给定事务的所有更新操作或者全部做完或者一个都不做。

事务是由用户或者应用程序执行的一系列动作,这些动作将访问或者修改数据库的内容。例如,DreamHome案例的一个简单事务可能是向数据库中添加一位新员工或更新员工工资,或者从注册表删除一处房产。相对更复杂的例子可能是,从数据库中删除一名员工,并且将他所管理的房产重新分配给其他员工。在这种情况下,需要对数据库进行多次修改。由于计算机崩溃,事务可能在执行过程中失败,这时数据库将处于不一致的状态:一些修改已经执行,而另外一些修改还没有发生。那么,已经执行的修改必须被恢复,使数据库重新回到一致的状态。22.1节将讨论事务支持。

(4)并发控制服务

DBMS必须提供一个机制,确保当多个用户并行地更新数据库时,数据库的更新是正确的。

使用DBMS的一个主要目的是使多个用户能够同时访问共享的数据。如果所有用户只是读取数据,则并发访问是相对容易的,因为这种情况下他们不会相互影响。然而,当两个或多个用户同时访问数据库,并且他们中至少有一个正在更新数据时,可能会产生相互影响,导致不一致性。例如,考虑图2-7中表示的两个并发执行的事务T1和T2。

T1正在从一个账户中(余额balx)提取10英镑,而T2正在向同一个账户中存储100英镑。如果这两个事务被顺序地执行,一个做完再做另一个并且没有交叉,则无论哪一个先执行,最后的余额都将是190英镑。然而,此例中的T1和T2两个事务几乎是在同一时间开始,它们两个读取到的余额都是100英镑。T2将balx从100英镑增加到200英镑,并将这个更新存储到数据库中。同时,事务T1将balx从100英镑中减去10英镑,剩下90英镑,也将这个值存储到数据库中,覆盖了前面的更新,因此就“丢失”了100英镑。

DBMS必须确保当多个用户同时访问数据库时,一定不能发生冲突。22.2节将详细讨论这个问题。

(5)恢复服务

DBMS必须提供一个机制,无论数据库因何原因受到破坏时,都能恢复数据库。

讨论事务支持时曾述,如果事务执行失败,数据库必须返回到一个一致的状态。失败可能是由于系统崩溃、介质失效或由于软硬件的错误导致DBMS终止,也可能是由于用户在事务过程中检测到一个错误,从而强迫事务终止的结果。在所有情况下,DBMS必须提供一个机制,将DBMS恢复到一个一致的状态。22.3节将讨论数据库的恢复。

(6)授权服务

DBMS必须提供一个机制,确保只有经过授权的用户才可以访问数据库。

不难发现这样一种情形,数据库中存储的数据不希望被所有的用户看到。例如,与全体员工的工资相关的信息可能只允许经理看到,而其他的用户禁止访问这些数据。此外,要保证数据库不被未授权的用户访问。术语“安全性”就是指保护数据库不被未授权者访问。一般要求DBMS提供一个机制,能够确保数据的安全。第20章将讨论安全性问题。

(7)支持数据通信

DBMS必须能够与通信软件集成。

大多数用户是从工作站访问数据库的。有时这些工作站直接与DBMS主机相连,而另外一些情况下,这些工作站存放在异地,需要通过网络与DBMS主机进行通信。无论哪种情况,DBMS将访问请求作为通信消息接受,并且以同样的方式进行回复。所有这些转换都是通过一个数据通信管理器(Data Communication Manager,DCM)处理的。尽管DCM不是DBMS的一部分,如果期望DBMS系统能够商业化,就有必要使DBMS能够与各种各样的DCM集成。即使是用于个人计算机的DBMS,也应该能够在一个局域网上运行,这样可以建立一个集中的数据库供所有用户共享,而不是创建一系列分离的数据库再分别归属每个用户。这并不意味着数据库必须在网络上分布,而是要求用户应该能够从远程访问一个集中的数据库。一般将这种类型称为分布式处理结构(参见24.1.1节)。

(8)完整性服务

DBMS必须提供一种方法,确保数据库中的数据和对数据的修改遵循一定的规则。

“数据库完整性”指的是所存储数据的正确性和一致性,它可以被看成是另外一种类型的数据库保护。虽然完整性与安全性是相联系的,但它还具有更广的含意:完整性与数据本身的性质有关。完整性通常是通过约束的形式表示,给出数据库不能违反的一致性规则。例如,可能需要这样一个约束,任何员工都不能同时管理多于100处房产。因此,当给某位员工分配房产时,DBMS就检查这个约束,确保不超过此限制,若分配的数量超过此限制则终止这次分配。

除了以上八项服务以外,还可以要求DBMS具备下列两个服务。

(9)提高数据独立性的服务

DBMS必须提供机制,使程序独立于数据库的实际结构。

在2.1.5节中已经讨论过数据独立性的概念。数据独立性通常是通过视图或者子模式的机制得到。物理数据独立性较容易获得:在不影响视图的情况下,可以对数据库的物理特性进行多种修改。然而,完全的逻辑数据独立性很难达到。新增实体、属性或联系尚可以接受,删除则不同。在一些系统中,对逻辑结构中任何成分的修改都是不允许的。

(10)实用服务程序

DBMS应该提供一组实用服务程序。

实用程序可以帮助DBA高效地管理数据库。一些实用程序所做工作发生在外部层,因此可由DBA完成。其他工作发生在内部层,只能由DBMS供应商提供。后一种类型实用程序的例子有:

输入机制,即从平板文件中装载数据库;输出机制,即将数据库卸载到平板文件中。

监控机制,用以监测数据库的使用和运作。

统计分析程序,用以检查性能或者统计数据。

重新组织索引的机制,用以重新组织索引并处理溢出。

无用单元收集和重新分配机制,用于从存储设备中物理地删除记录,回收已释放的空间并重新分配给需要者。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

Linux编程技术详解

本书全面介绍了Linux编程相关的知识,内容涵盖Linux基本知识、如何建立Linux开发环境、Linux开发工具、Linux文件系统、文件I/O操作、设备文...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊