RT,为了提高自己在数据库方面的知ci识hui储备,我决定做一点翻译,用作练习。
第一部分 导论
数据库管理系统(DBMS)是相互关联的数据的集合以及一套用于访问那些数据的程序。数据集合,通常指的是数据库,包含和企业相关的数据。DBMS的基本目标是提供既方便又高效的存储和检索数据库信息的方式。
数据库管理系统被设计用来管理大量的信息。数据的管理涉及到定义信息的存储结构和提供操作数据的机制。此外,数据库系统必须确保数据存储的安全,即便是在系统崩溃或者尝试未授权访问的情况下。如果数据在几个用户间共享,系统必须避免可能的异常结果。
因为在绝大多数机构中,信息是很重要的,计算机科学家发展出了大量用于管理数据的概念和技术。这些概念和技术组成了这本书的焦点。本章简要地介绍了数据库系统的原理。
第二部分 关系数据库
数据模型是用于描述数据、数据关系、数据语义和一致性约束的概念工具。在这部分,我们关注关系模型。我们将于第二章学习的关系模型,它使用表集合代表数据和数据之间的关系。概念上的简单性使关系型数据库得到了广泛的采纳应用;今天绝大多数数据库产品都是基于关系模型的。关系模型在逻辑和视图的层面描述数据库,抽象于低层的数据存储细节。将在第七章(第二部分)讨论的实体-关系模型,是一个更高层次的关系模型,广泛用于数据库设计。
为了让关系型数据库中的数据对用户可用,我们不得不解决某些问题。最重要的问题是用户如何指定检索和更新数据的请求;人们发明了几种查询语言用以执行该任务。第二,也是最重要的一点,是数据的完整性和保护。数据库需要保护数据免于受到用户操作的伤害,无论是有意的操作还是无意的操作。
第三、第四和第五章涵盖了SQL语言的内容,SQL语言是当今最常用的查询语言。第三章和第四章提供了介绍和初级和中级水平的SQL语言描述。第四章也包含了数据库的强制完整性约束和权限检查机制,它们控制用户会实施的访问和更新行为。第五章包含更多高级主题,其中有在编程语言中访问SQL和使用SQL进行数据分析等。
第六章涵盖了三种形式查询语言,关系代数,元组关系演算和域关系演算,是建立在数学逻辑上的三种声明式查询语言。这些形式语言基于SQL。还有另外两种用户友好的语言,QBE和Datalog,会在附录B(可以通过db-book.com在线访问)中描述。
第三部分 数据存储和查询
虽然数据库系统提供数据的高层级视图,数据最终还是必须在一个或多个设备上存储为比特。当今的绝大多数数据库将数据存储于磁盘(以及越来越多的固态硬盘)上并且将数据抓取到内存中进行处理,或者把数据复制在磁带和其它的备份设备上存档。存储设备的物理特性在数据存储方式上起到了主要作用,特别是因为随机访问硬盘上的一块数据会比在内存中进行同样的操作慢太多:磁盘访问花费数十毫秒,而内存访问只需要数十微妙。
第十章从物理存储没接的概览将其,包含用于减少因为设备失败造成数据丢失的机制。接下来这章描述记录如何映射到文件中,这种映射是按顺序映射到硬盘上的。
很多查询只参考了一个文件中的小部分记录。索引是一种可以帮助快速定位需要的记录的关系的结构,通过它就不需要检查所有的记录。这部教材中的索引例子不是像数据库中的索引,而是用于人的使用。第十一章描述了集中数据库中使用的索引类型。
用户查询必须在数据库内容上运行,数据库的内容位于存储设备上。通常,把查询分割为更小的操作,即对应的关系代数操作。第十二章描述了查询被处理的方式、实现单独操作算法,和有关这些操作如何同步执行以处理查询的概述。
处理查询的时候,有不少方式可以选用,它们的成本相当不同。查询优化的用处是在评估一个给定的查询时找出最小成本。第13章描述了查询优化的工作过程。
第四部分 事务管理
术语“事务”指的是工作中一系列操作的集合形成的单一逻辑单元。例如,将金钱从一个账户转移到另一个的行为就是一个包含两个更新的事务,每个账户都有一个更新。
一个事务的所有行为都被完全执行,或者,为了防止某些失败,每个不完全事务部分的效果需要可以被撤销,这是很重要的。这个属性叫做“原子性”。进一步地,一旦一个事务成功执行,他的效果必须在数据库中保持着——系统错误不应该导致数据库忘记曾经成功完全执行的事务。这个属性被成为持久性。
在一个当前正在执行多个事务的数据库系统中,如果更新共享数据的行为不受控制,就会有潜在的可能性使得事务们看到其它事务创建的更新导致的不一致的中间状态。这样的情节可能会导致对数据库中存储的数据进行错误的更新。因此,数据库系统必须提供一个机制来使得每一个事务不受其它正在执行的事务的效果影响。这个属性叫做孤立性。
第十四章描述了事务原理的细节,包含原子性,持续性,孤立性和其它由事务抽象提供的属性。特别地,本章通过被称为可串行化的概念来精确说明了孤立性的原理。
第十五章描述了多个用于实现孤立性的并发控制技术。第十六章描述了数据库的恢复管理组件,它实现了原子性和持久性的属性。
总的来说,数据库系统的事务管理组件允许应用开发者聚焦于各自的事务实现,可以忽视并发和容错问题。
第五部分 系统架构
数据库系统架构收到其运行所在的底层计算机系统的深刻影响。数据库系统可以是集中式的,在一个服务器上运行数据库操作。数据库系统也可以设计为利用并行计算机的架构。分布式数据库跨越了多个地理上分离的机器。
第十七章首先概述了在服务器系统上运行的数据库系统的架构,这是使用了集中式的和客户端-服务器的架构。多种共同实现了数据库功能的过程也在这里得到了描述。接下来该章节概述了并行计算机架构,和为了各种类型的并行计算机设计的并行数据库架构。最后,该章概述了建立分布式数据库系统时的架构问题。
第十八章描述了数据库的各种行为——特别是查询过程——可以通过利用并行处理来实现。
第十九章提出了一系列在分布式数据库中出现的问题,描述了处理每个问题的方法。这些问题包括如何存储数据,如何确保运行在多地点的事务的原子性,如何执行并发控制,以及如何在失败发生时提供高可用性。这章也描述了一个基于云的数据存储系统、它的分布式查询处理和字典系统。
第六部分 数据仓库,数据挖掘和信息检索
数据库查询通常用于提取特别的信息,比如账户余额和一个客户的账户余额之和。然而,用于帮助制定企业战略的查询通常需要访问源于多种来源的大量数据。
数据仓库是将不同来源搜集的数据以一个共同的、统一的数据库模式存储的库。存储在数据仓库的数据被一系列复杂的聚合和静态分析所分析,通常利用我们第五章讲过的SQL构建数据库分析。更进一步地,知识发现技术也可能用于尝试发现数据中的规则和模板。例如,一个零售商也许会发现某些商品更容易放在一起销售,并且也许会用这种信息来制定市场战略。这种从数据中发现知识的方式被成为数据挖掘。第二十章解决有关数据仓库和数据挖掘的问题。
到目前为止的讨论中,我们关注过关系简单、结构良好的数据。然而,互联网上、企业的内部网中和个人用户的计算机中有巨大数量的非结构化文本数据。用户希望找到这些体积巨大的、绝大多数都是文本化内容中的相关信息,并且是通过简单的查询机制,比如关键词查询。信息检索领域可以处理这种无结构数据的查询,并且特别关注查询结果的分级。虽然相关领域的研究已经有几十年的历史,它还是随着万维网的发展经历了巨大的成长。21章提供了信息检索领域的介绍。
第七部分 特殊数据库
数据库系统的几个应用领域受着关系数据模型的约束的限制,因此,研究者发展了多种基于面向对象方法的数据模型,以处理这些应用领域。
对象-关系模型,在第二十二章中描述,它结合了面向对象模型和关系模型的特点。这个模型提供了面向对象语言的富类型系统,同关系结合在一起,作为数据存储的基础。它应用了关系的继承,而不仅仅是类型。对象-类型数据模型提供了和关系数据库之间的平滑迁移路径,这对关系数据库供应商们很着吸引力。因此,从SQL:1999开始,SQL标准的类型系统包含了一系列的对象-关系特征,同时也在继续使用关系模型作为底层模型。
属于面向对象数据库用于描述支持直接从面向对象编程语言访问的数据库系统,而不是需要一个关系查询语言作为数据库界面。第二十二章也提供了面向对象数据库的简单概览。
XML语言最早用于添加文本文档的标记信息,但是却因为其在数据交换中的应用变得重要起来。XML提供了一种通过嵌套结构表示数据的方法,并且也进一步地允许数据结构中的大量的可伸缩性。这对于某些类型的非传统数据来说是很重要的。第二十三章描述了SML语言,包含XQuery XML查询语言,和SQL/XML,一种SQL的扩展,它允许创建嵌套的XML输出。
第八部分 高级主题
第二十四章涵盖了应用发展中的大量高级主题,从用于改善应用速度的性能调优开始。接着讨论用于作为商业数据库系统性能测量的标准基准。接下来是应用发展中的问题,比如应用测试和应用迁移。这章总结了标准化过程和现有的数据库语言标准概览。
第二十五章描述空间和时间数据类型,以及多媒体数据,还有在数据库中存储这些类型的数据时的问题。和移动计算机操作系统相关的数据库问题也会在这章描述。
最后,第二十六章描述了几个高级事务处理技术,包含事务处理监测器,事务流,和电商中的事务处理问题。这章接下来会讨论主内存数据库系统和实时交易系统,并以一个关于长事务的讨论作为结束。