RT,为了提高自己在数据库方面的知ci识hui储备,我决定做一点翻译,用作练习。
第一部分 导论
数据库管理系统(DBMS)是相互关联的数据的集合以及一套用于访问那些数据的程序。数据集合,通常指的是数据库,包含和企业相关的数据。DBMS的基本目标是提供既方便又高效的存储和检索数据库信息的方式。
数据库管理系统被设计用来管理大量的信息。数据的管理涉及到定义信息的存储结构和提供操作数据的机制。此外,数据库系统必须确保数据存储的安全,即便是在系统崩溃或者尝试未授权访问的情况下。如果数据在几个用户间共享,系统必须避免可能的异常结果。
因为在绝大多数机构中,信息是很重要的,计算机科学家发展出了大量用于管理数据的概念和技术。这些概念和技术组成了这本书的焦点。本章简要地介绍了数据库系统的原理。
第二部分 关系数据库
数据模型是用于描述数据、数据关系、数据语义和一致性约束的概念工具。在这部分,我们关注关系模型。我们将于第二章学习的关系模型,它使用表集合代表数据和数据之间的关系。概念上的简单性使关系型数据库得到了广泛的采纳应用;今天绝大多数数据库产品都是基于关系模型的。关系模型在逻辑和视图的层面描述数据库,抽象于低层的数据存储细节。将在第七章(第二部分)讨论的实体-关系模型,是一个更高层次的关系模型,广泛用于数据库设计。
为了让关系型数据库中的数据对用户可用,我们不得不解决某些问题。最重要的问题是用户如何指定检索和更新数据的请求;人们发明了几种查询语言用以执行该任务。第二,也是最重要的一点,是数据的完整性和保护。数据库需要保护数据免于受到用户操作的伤害,无论是有意的操作还是无意的操作。
第三、第四和第五章涵盖了SQL语言的内容,SQL语言是当今最常用的查询语言。第三章和第四章提供了介绍和初级和中级水平的SQL语言描述。第四章也包含了数据库的强制完整性约束和权限检查机制,它们控制用户会实施的访问和更新行为。第五章包含更多高级主题,其中有在编程语言中访问SQL和使用SQL进行数据分析等。
第六章涵盖了三种形式查询语言,关系代数,元组关系演算和域关系演算,是建立在数学逻辑上的三种声明式查询语言。这些形式语言基于SQL。还有另外两种用户友好的语言,QBE和Datalog,会在附录B(可以通过db-book.com在线访问)中描述。
第三部分 数据存储和查询
虽然数据库系统提供数据的高层级视图,数据最终还是必须在一个或多个设备上存储为比特。当今的绝大多数数据库将数据存储于磁盘(以及越来越多的固态硬盘)上并且将数据抓取到内存中进行处理,或者把数据复制在磁带和其它的备份设备上存档。存储设备的物理特性在数据存储方式上起到了主要作用,特别是因为随机访问硬盘上的一块数据会比在内存中进行同样的操作慢太多:磁盘访问花费数十毫秒,而内存访问只需要数十微妙。
第十章从物理存储没接的概览将其,包含用于减少因为设备失败造成数据丢失的机制。接下来这章描述记录如何映射到文件中,这种映射是按顺序映射到硬盘上的。
很多查询只参考了一个文件中的小部分记录。索引是一种可以帮助快速定位需要的记录的关系的结构,通过它就不需要检查所有的记录。这部教材中的索引例子不是像数据库中的索引,而是用于人的使用。第十一章描述了集中数据库中使用的索引类型。
用户查询必须在数据库内容上运行,数据库的内容位于存储设备上。通常,把查询分割为更小的操作,即对应的关系代数操作。第十二章描述了查询被处理的方式、实现单独操作算法,和有关这些操作如何同步执行以处理查询的概述。
处理查询的时候,有不少方式可以选用,它们的成本相当不同。查询优化的用处是在评估一个给定的查询时找出最小成本。第13章描述了查询优化的工作过程。
第四部分
术语“事务”指的是工作中一系列操作的集合形成的单一逻辑单元。例如,将金钱从一个账户转移到另一个的行为就是一个包含两个更新的事务,每个账户都有一个更新。
一个事务的所有行为都被完全执行,或者,为了防止某些失败,每个不完全事务部分的效果需要可以被撤销,这是很重要的。这个属性叫做“原子性”。进一步地,一旦一个事务成功执行,他的效果必须在数据库中保持着——系统错误不应该导致数据库忘记曾经成功完全执行的事务。这个属性被成为持久性。
在一个当前正在执行多个事务的数据库系统中,如果更新共享数据的行为不受控制,就会有潜在的可能性使得事务们看到其它事务创建的更新导致的不一致的中间状态。这样的情节可能会导致对数据库中存储的数据进行错误的更新。因此,数据库系统必须提供一个机制来使得每一个事务不受其它正在执行的事务的效果影响。这个属性叫做孤立性。
第十四章描述了事务原理的细节,包含原子性,持续性,孤立性和其它由事务抽象提供的属性。特别地,本章通过被称为可串行化的概念来精确说明了孤立性的原理。
第十五章描述了多个用于实现孤立性的并发控制技术。第十六章描述了数据库的恢复管理组件,它实现了原子性和持久性的属性。
总的来说,数据库系统的事务管理组件允许应用开发者聚焦于各自的事务实现,可以忽视并发和容错问题。