**篇 通用基础篇
空间数据库管理系统根植于传统数据库之上,因此,在学习空间数据库管理系统之前,先要学习计算机领域数据管理的相关概念、理论和知识点。具体内容如下:
第1章介绍了数据库领域的常用术语;以数据库领域的图灵奖为主线,梳理了数据库领域近百年做出的重要理论成就。这些成就也是后续章节介绍的重点。
第2章介绍了数据库管理模型的发展史,引出了成熟的关系数据库和对象-关系数据库;介绍了关系数据库的核心理论基础——关系范式和关系代数,其中,关系范式是空间数据库表结构设计的重要基础理论,而关系代数是后续学习结构化查询语言(structured query Language, SQL)的重要基础理论;*后介绍了关系数据库管理系统的七大优势。
第3章重点介绍了结构化查询语言的历史、特点,以及相关的语法规则和查询案例,通过本章的学习希望读者掌握SQL的撰写。
第4章重点介绍了数据库的设计过程与设计步骤,以及关键步骤所需的设计工具和文档范例,使读者掌握数据库设计的相关流程和规范。
第5章介绍了常见的索引数据结构及其查询执行过程,便于读者理解数据库内部的机制,为后续实践中数据库的调优工作奠定基础。
第6章介绍了关系数据库中并发访问控制机制与安全访问控制机制的基本理论和知识点,以及在并发和安全方面需要注意的问题。
从20世纪60年代至今,数据库技术经历了四代演变,造就了巴赫曼(Bachman)、科德(Codd)、格雷(Gray)和斯通布雷克(Stonebraker)四位图灵奖得主,形成了相对丰富、完善的基础理论体系,带动了一个巨大的软件产业。
第1章 绪论
1.1 基本术语
1. 数据库
目前,数据库(database,DB)尚无统一公认的定义。但具体地讲,可以将其理解为:反映某一主题信息的数据集合。这些数据按一定的数据模型组织、描述与存储,具有较小的冗余度、较高的数据*立性和可扩展性,并可供用户共享使用。
2. 数据库管理系统
数据库是数据的集合,而数据库管理系统(database management system,DBMS)则是位于用户与操作系统之间管理数据库的软件系统,用于科学、合理地组织管理数据,实现数据的高效存取和维护;即数据库的所有操作(建立、使用和维护)都是在数据库管理系统的统一管理和控制下进行。常见的数据库管理系统有甲骨文的Oracle、微软的MSQL、开源的PostgreSQL等。
与操作系统一样,数据库管理系统也是个复杂的基础软件系统,主要功能包括:
(1)数据的定义与操作:DBMS提供数据定义语言(data definition language,DDL)与数据操作语言(data manipulation language,DML)等。DDL可以帮助用户对数据库中的数据进行定义;DML可以帮助用户对数据库中的数据进行插入、删除和修改等操作。
(2)数据的组织、存储和管理:DBMS需要对元数据(描述数据的数据)和用户数据等各类数据进行分类、组织、存储和管理,需要确定以何种文件结构和存取方式存储上述数据、并实现数据间的联系,旨在提高磁盘利用和存取效率。
(3)后台事务的管理和运行:DBMS的统一管理与控制可以保证数据的安全性和完整性,保证多用户并发的正常使用以及发生故障后的系统恢复。
(4)数据库的建立和维护:DBMS通常会提供一系列用于建库和维护的实用程序和管理工具,主要包括:数据入库、数据备份与恢复、性能监视与分析等。
3. 数据库系统
数据库系统(database system,DBS)是由数据库及其DBMS和相关应用软件组成,是为适应数据处理的业务逻辑发展而来的数据管理应用系统。数据库系统一般由四部分组成:①数据库:存储在磁带、磁盘、光盘或其他外存介质上,并按一定结构组织在一起的相关数据的集合。②数据库管理系统(DBMS):描述、管理、维护数据库的程序系统;它用一种公用、可控制的方法,实现数据的插入、修改和检索。③数据库管理员(database administrator,DBA):是管理和维护数据库管理系统(DBMS)的相关工作人员的统称,属于运维工程师的一个分支,主要负责业务数据库从设计、测试到部署交付的全生命周期管理;④应用系统:根据业务逻辑,程序员采用开发工具研发的应用程序;⑤*终用户:应用系统的使用者。DBS中上述各部分的关系可用图1-1表示。
图1-1 DB、DBMS、DBS的区别与联系
数据库管理系统、数据库系统有时也会简称为数据库;因此有时需要读者结合上下文理解“数据库”一词的真正含义。本书主要介绍数据库管理系统,后续多数“数据库”其实都对应“数据库管理系统”的概念。
1.2 数据库领域的四个图灵奖
数据库经历了半个多世纪的发展,从概念的提出到早期的数据库,再到流行至今的关系数据库,可谓是发展迅猛。数据库技术的繁荣发展与兴盛不衰,也得益于以数据库领域四位图灵奖获得者为代表的许多优秀科学家。
查理斯 巴赫曼(Charles W.Bachman)(1924~2017)是网状数据库的创始人。1961年任职于通用电器公司,负责公司生产信息和控制系统的研发。该系统底层(integrated data store,IDS)就是一种较为原始的数据库管理系统,即建立在存储器和虚拟内存之上的用于检索动态和静态数据的系统。IDS是巴赫曼网状模型数据库的基础,也是**个基于磁盘的数据库管理系统。1964年,IDS推出后成为*受欢迎的数据库产品之一。后来,巴赫曼开始在许多标准化组织任职,积极推动、促成数据库标准的制定,特别是网状数据库模型及其数据的定义和数据操作规范。后来,巴赫曼的设计思想和实现技术被许多数据库产品仿效。巴赫曼被誉为数据库观念的践行者。1973年,因“数据库技术方面的杰出贡献”被授予图灵奖,并做了题为“作为导航员的程序员(the programmer as navigator)”的演讲。他以哥白尼的《天体运行论》颠覆地心说做类比,指出过去几十年间,人们对信息系统的理解,并不比托勒密学说强多少,“新”时代应当抛弃那种“以计算机为中心”的思维模型,而应该“以数据库为中心”。
埃德加 科德(Edgar F.Codd)(1923~2003)作为密歇根大学计算机科学博士,是IBM公司(International Business Machines Corporation)研究员,被誉为“关系数据库之父”。1970年,科德发表了题为“大型共享数据库的关系模型”的论文,*次提出了数据库的关系模型。论文建议不要将数据保存在层次结构中,而是保存在由行和列组成的表中,且这些数据应*立于硬件存储,并使用一种非过程化的语言访问,即数据库用户和应用程序不需要知道数据结构就可以查询数据。论文发表后,科德又发布了更详细的指导关系数据的理论和方法,逐步发展为存储和操作大量业务数据的一套复杂、完整的理论体系。起初科德的理论并未受到IBM重视,后来因关系模型简单明了且具有坚实的数理基础,逐步受到学术界和产业界的高度重视和广泛响应,并很快成为数据库市场的主流技术基础。1981年,因“在数据库管理系统理论和实践方面的杰出贡献”被授予图灵奖;鉴于科德对关系型数据库奠基性的贡献,也被誉为“关系数据库之父”。1980年以来,基于关系模型发展出的关系型数据库(例如,Oracle、MSSQL、PostgreSQL等)基本占据了数据库市场的主导地位。当今,许多单位、企业的数据库都构建在关系模型基础上,例如,银行依赖关系数据库追踪资金流动,零售商使用关系数据库监控库存水平,人力资源部使用它来管理员工账户,图书馆、医院和政府机构在其中存储百万条记录。事实上,世界上几乎所有单位都在使用关系数据库管理自己的业务数据。
詹姆斯 格雷(Jim N. Gray)(1944~2012)于1969年获得加州伯克利分校*个计算机科学博士学位后,在IBM研究院参与了科德等在关系型数据库、结构化查询语言(SQL)等方面的开拓性研发。格雷进入数据库领域时,关系数据库的基本理论已经成熟,但各公司在关系数据库管理系统(relational DBMS,RDBMS)的研发中都遇到了一系列技术问题,特别是在数据库规模越来越大、结构越来越复杂、用户越来越多的情况下,如何保障数据的完整性(integrity)、安全性(security)、并发性(concurrency),以及一旦出现故障后,数据库如何从故障中恢复(recovery)。这些问题严重制约了关系数据库管理系统的大规模推广与应用。格雷转向数据库底层,思考大规模数据库面临的并发和故障恢复等基本问题,厘清了事务的基本概念以及著名的ACID特性,并给出许多具体实现机制。事务处理广泛应用于数据库和操作系统领域,并在多用户并发、数据共享与一致性维护等方面起着重要作用。今天所有商务和金融系统的可靠运行都离不开格雷的成就。1998年,作为“事务处理”的发明人,格雷被授予图灵奖,成为数据库领域第三位图灵奖得主。此后,他还创立了微软研究院,致力于用计算机的海量数据处理技术解决各学科领域的问题。根据他的一次学术演讲,2009年微软出版了The Fouth Paradigm:Data-Intensive Scientific Discovery(《第四范式:数据密集型的科学发现》)。格雷被业界称为“天才科学家”,是大数据浪潮当之无愧的先驱。
迈克尔 斯通布雷克(Michael Stonebraker)(1943~)于1966年在普林斯顿大学获得学士学位,分别于1967年、1971年在密歇根大学获得硕士、博士学位。在科德关系数据库论文的启发下,他组织伯克利师生研发了*早的关系数据库之一Ingres。在Ingres的基础上发展出Informix、Sybase和SQL Server三大主流商用数据库。Ingres在查询语言设计、查询处理、存取方法、并发控制和查询重写等方面都有重大贡献。1990年,他又开启了Postgres项目,目的是在关系数据库之上增加对更复杂的数据类型的支持,例如对象数据、地理数据、时间序列数据等,该项目后来演变为知名的开源数据库管理系统PostgreSQL。此后,多家公司的产品都是在PostgreSQL的基础上研发而来,其中包括他自己创办的Ilustra(后被Informix收购)等。上述主流数据库管理系统之间的关系大致如图1-2虚线框内所示。
之后,斯通布雷克启动的联邦数据库Mariposa与稍早的XPRS、Distributed Ingres两个项目合作,开启了分布式数据库的先河。Shared Nothing架构这一重要概念,也是那个时期提出来的;这已经成为当今大型数据系统的基石之一。2001年,他到麻省理工学院(MIT)后,与多所大学合作积极研发了系列新型的数据库系统。2002年研发了流数据库Aurora,以此创办StreamBase公司,产品用于许多金融机构的CEP系统;公司后被TIBCO收购。2005年,研发并行的列式数据仓库系统C-Store,创办Vertica公司,后被HP以3.4亿美元收购。2006年,依托数据集成项目Morpheus创办本地搜索公司Goby。2007年,依托分布式内存的OLTP(OnLine Transaction Processing)系统H-Store创办VoltDB公司,获得1360万美元投资。2008年,依托数据库SciDB创办Paradigm4公司。2013年,与卡塔尔年轻人共同创办企业数据集成公司Tamr,次年获得Google公司等1600万美元投资。
图1-2 斯通布雷克培育的**数据库产品
展开