No.434 第8届图灵奖得主、数据库之父:理查德·巴赫曼

自上世纪60年代中期起,随着数据库技术的崛起和不断成熟,计算机数据处理技术实现了一次飞跃,极大地推动了计算机的广泛应用。正是在这一背景下,1973年图灵奖首次颁发给了数据库领域的先驱查尔斯·巴赫曼(Charles W. Bachman),以表彰他在此领域做出的杰出贡献。

为了说明巴赫曼的功绩,让我们先简要回顾一相计算机数据处理发展的历史。如果你要说明一个东西牛不牛,至少要做个测试吧?在计算机中叫AB测试,在医学中叫双盲测试。在数据库领域,如果你要说数据库牛,要说明一下没有数据库的情况下,会有什么困难。在社会领域也是如此,如果物业管理小区,作为物业,你不能只说自己多牛,要引入竞争机制,至少两家,让业主选举,来评比一下到底哪家物业厉害。不能搞一堆保安,再买通一些不要脸的业主当托,永远在这个小区里为业主服务。有业主不服,还要挨打。这是不对的。

如果我说数据库厉害,肯定有人不相信,那就研究一下,没有数据库的时候是什么情况。

在数据库出现之前,人们通常使用各种手工记录和存储数据的方式。这些方式可能包括使用纸质文件、卡片、档案柜、手工记账册以及其他类似的物理记录方式。人们可能会将信息按照特定的分类系统进行整理,以便于检索和使用。然而,这种手工方式存在着很多限制,如数据的存储容量有限、检索效率低下、数据安全性难以保障等问题。随着计算机技术的发展,数据库的出现填补了这些不足,使得数据的管理和处理变得更加高效、灵活和安全。

在20世纪40年代初期,计算机的应用局限于科学和工程计算,因为当时的计算机只能处理数字,而无法处理字母和符号,而这些恰恰是数据处理的主要对象。此外,当时的计算机也缺乏数据处理所需的大容量存储器。直到20世纪50年代初,字符发生器的发明使得计算机能够显示、存储和处理字母及各种符号。

同时,高速磁带机的成功应用作为计算机存储器,标志着计算机进入数据处理领域的重要进展。然而,磁带只能顺序读写,速度较慢,并非理想的存储设备。直到1956年,IBM公司和Remington Rand公司相继实验成功了磁盘存储器方案,并推出了商用磁盘系统。磁盘不仅转速快、容量大,还能够随机读写,为数据处理提供了更理想的大容量、高速存储设备。这些硬件技术的发展为计算机数据处理的逐步发展奠定了基础。

然而,在早期,数据处理软件仅限于文件管理这一形式,其中数据文件与应用程序一一对应,导致了数据的冗余、不一致性和数据依赖的问题。数据依赖指的是编写程序时依赖于特定数据的情况。以常用的商业语言COBOL为例。COBOL(Common Business-Oriented Language)是一种面向业务的编程语言,通常用于处理大型商业数据处理应用程序。COBOL的语法结构主要基于英语,更关注数据的组织和处理,如文件记录、数据类型、程序流程等。它的语法相对冗长,对于数据的定义和处理比较详细。

比如说,程序员必须在数据部的文件节(DATA DIVISION,FILE SECTION)中详细定义文件中各数据项的类型、长度和格式。在设备部的输入—输出节(ENVIRONMENT DIVISION, INPUT-OUTPUT SECTION)中,他们还必须使用SELECT语句和ASSIGN语句将文件与具体设备关联,并使用ORGANIZATION语句和ACCESS MODE语句严格规定文件的组织方式和访问方式。基于这些具体规范,程序员才能在过程部(PROCEDURE DIVISION)中使用一系列命令语句来导航系统,以完成预期的数据处理任务。这种情况导致了应用程序与数据的存储和访问方式之间密切相关,给程序的编制和维护带来了极大的麻烦。

细心的听众可能听出来了,COBOL语言中的关键字,跟现在我们使用的SQL语句是相同的。确实是这样,就像Java在向C++致敬一样,SQL语句也是在向COBOL语言致敬。保时捷的CEO最近不是说:优秀的设计心灵相通。不存在抄袭的问题。

在SQL语句中可以找到一些与COBOL类似的关键字,这可能是因为它们都是用于处理数据的编程语言,且在某些方面存在功能上的重叠。例如:

  • SELECT:在SQL中,SELECT用于从数据库中检索数据。在COBOL中,SELECT也用于处理文件记录,但其功能和语法与SQL中的SELECT有所不同。
  • INSERT:在SQL中,INSERT用于向数据库中插入新的数据行。在COBOL中,INSERT用于向数据项中插入值。
  • UPDATE:在SQL中,UPDATE用于修改数据库中现有数据行的内容。在COBOL中,UPDATE通常用于更新文件记录。
  • DELETE:在SQL中,DELETE用于从数据库中删除数据行。在COBOL中,DELETE通常用于删除文件记录。

后来出现了文件管理系统FMS(File Management System),作为应用程序和数据文件之间的接口。通过FMS,一个应用程序可以轻松地处理多个文件,这在一定程度上增加了数据处理的灵活性。但是,这种方式仍然以分散、相互独立的数据文件为基础,导致数据冗余、不一致性和处理效率低等问题难以避免。这些缺点在规模较大的系统中尤为突出。

以美国在20世纪60年代初制定的阿波罗登月计划为例,阿波罗飞船由约200万个零部件组成,它们分散在世界各地的制造厂生产。为了掌握计划进度和协调工程进展,阿波罗计划的主要承包商Rockwell公司曾研制和开发了一个基于磁带的零部件生产计算机管理系统。该系统共使用了18盘磁带,虽然能够运作,但效率极低。事实上,18盘磁带中有60%的数据都是冗余的,而且维护起来非常困难。这个系统的状况一度成为实现阿波罗计划的重大障碍之一。

针对上述问题,各国的学者、计算机公司、计算机用户以及计算机学术团体纷纷展开了研究,试图改革数据处理系统,探索新的方向和方法。他们的目标主要是要克服文件系统分散管理的弱点,实现对数据的集中控制和统一管理。结果就是出现了一种全新而高效的管理技术——数据库技术。

Rockwell公司与IBM公司合作,在当时新推出的IBM 360系列上成功研制了世界上最早的数据库管理系统之一,名为IMS(Information Management System)。这一系统为确保阿波罗飞船在1969年顺利登月作出了重要贡献。IMS采用了层次模型。

几乎与此同时,巴赫曼在通用电气公司领导设计和实现了网状的数据库管理系统IDS(Integrated Data System)。

这里出现了一个网状数据库管理系统(Network Database Management System),跟咱学习的不是一个东西,现在都用的大部分是关系数据库。网状数据库管理系统是一种早期的数据库管理系统,其数据模型采用了网状结构。在网状数据库中,数据之间的关系呈现为一种复杂的网状结构,其中每个数据元素都可以与多个其他数据元素相连接,形成一个网状的关系网络。这种结构允许数据之间存在多对多的关系,而不像层次结构数据库那样只允许一对多的关系。

在网状数据库管理系统中,数据通常由记录和关系组成,而记录之间的关系通过指针(或链接)来表示。这些指针定义了记录之间的连接方式,从而构成了一个复杂的网络结构。网状数据库管理系统通常需要熟练的数据建模和编程技能,以有效地管理和操作这种复杂的数据结构。

尽管网状数据库管理系统在一段时间内被广泛使用,但它们的复杂性和难以维护的特点逐渐被更简单、更灵活的关系数据库管理系统(RDBMS)所取代。

第一个搞出网状数据库系统的人就是本次电台的主人公:查尔斯·巴赫曼,接下来,来介绍这位数据库的先驱。

巴赫曼生于1924年12月11日,出生在堪萨斯州的曼哈顿。他的父亲小查尔斯·巴赫曼 (Charles Bachman Jr.) 是堪萨斯州立大学橄榄球队的主教练。他在密歇根州东兰辛就读高中。跟我讲的大多数美国科学家一样,他也参加二战了,从这个角度来说,美国肯定是要赢得二战的。这么多文武双全的人才,搞科学能当科学家,上前线能上战场,这在其它国家,几乎是不存在的。要么是一介武夫,要么是文弱的书生,在这里,他们又是武夫,又是书生。他更厉害了,其它的科学家可能是在大后方计算弹道什么的,巴赫曼在第二次世界大战期间,他加入美国陆军,并于 1944 年 3 月至 1946 年 2 月在西南太平洋战区的新几内亚、澳大利亚和菲律宾群岛的防空炮兵部队服役。在那里,他第一次接触并使用火控计算机来瞄准 90 毫米火炮。是个专门打炮的美国大兵。

战争结束以后,回去读大学,1948年他在密歇根州立大学获得了工程学士学位,之后在1950年又在宾夕法尼亚大学获得了硕士学位,在读书期间,拿到了Tau Beta Pi 协会(通常称为 Tau Beta Pi、ΤΒΠ 或 TBP)是美国最古老的工程荣誉协会,也是美国第二古老的大学荣誉协会的奖章。1949 年中期,他与康妮·哈德利 (Connie Hadley) 结婚。

随后成了快乐的打工人,在20世纪50年代,他曾在Dow化工公司工作。随后,在1961年到1970年期间,他担任通用电气公司的程序设计部门经理。接着,他在1970年至1981年期间担任了Honeywell公司的总工程师职务,同时也兼任了Cullinet软件公司的副总裁和产品经理。

尽管Cullinet公司对于一般人来说并不太熟悉,但在当时它在美国颇有名气。事实上,它是1978年在纽约股票交易所上市的第一家软件公司。与之相比,微软当时在新墨西哥州的阿尔伯克基还很少人知道,直到1986年才上市,比Cullinet晚了整整8年。不过,Cullinet最终被CA公司收购。

1983年,巴赫曼创办了自己的公司Bachman Information Systems, Inc.

巴赫曼在数据库领域做出了两大贡献。首先,他在通用电气公司任职程序设计部门经理时,领导设计开发了最早的网状数据库管理系统IDS。这个系统于1964年推出,成为当时备受欢迎的数据库产品之一。它的设计理念和技术被后来的许多数据库产品所模仿。

其次,巴赫曼积极推动并促成了数据库标准的制定。他参与了美国数据系统语言委员会(CODASYL)下属的数据库任务组(DBTG)的工作,提出了网状数据库模型以及数据定义语言(DDL)和数据操纵语言(DML)的规范说明。这项工作于1971年发布了第一个正式报告——DBTG报告,成为数据库领域具有里程碑意义的文献。报告中所确定的方法被称为DBTG方法或CODASYL方法,所描述的网状模型称为DBTG模型或CODASYL模型。

DBTG曾希望美国国家标准委员会(ANSI)接受DBTG报告为数据库管理系统的国家标准,但未成功。此后,DBTG发布了一系列新版本,包括1973年、1978年、1981年和1984年的修改版本。DBTG后来更名为DBLTG(Data Base Language Task Group,数据库语言工作小组)。

DBTG首次确定了数据库的三层体系结构,明确了数据库管理员(DBA)的概念,规定了DBA的作用与地位。尽管DBTG系统并非实际数据库,但其提出的基本概念具有普遍意义。大多数网状数据库管理系统(如IDMS、PRIME、DBMS、DMS 170、DMS II和DMS 1100等)都遵循DBTG模型,而且对后来产生和发展的关系数据库技术也有很重要的影响。其体系结构也遵循DBTG的三级模式(尽管名称有所不同)。

下面我们简要介绍一下DBTG的系统结构。它包括模式(schema)、子模式(subschema)、物理模式(physical schema)、数据操纵和数据库管理系统(DBMS)等几个部分。

  • 模式描述了数据库整体数据逻辑结构,由数据库管理员通过模式数据描述语言DDL建立。
  • 子模式描述了某一用户关心的部分数据结构,对应于数据库的用户视图,由用户自行或委托数据库管理员通过子模式数据描述语言定义。
  • 物理模式描述了数据库的数据存储组织方式,对应于数据库的物理层,由数据库管理员通过数据存储描述语言DSDL加以定义。

数据库可以由多个用户、多个应用共享。数据库应用程序使用数据操纵语言DML对数据库数据进行操作,但一个应用程序必须在某一模式的某一子模式上进行操作。

DML语句可以嵌入宿主语言(如COBOL、Fortran等)中,通过数据库管理系统的控制访问数据库中的数据,并通过用户工作区UWA与数据库通信,完成对数据库的操作。

数据库管理系统的其他功能包括维护数据库中数据的一致性、完整性、安全性和故障恢复,以及处理并发访问问题,避免出现“脏数据”或“丢失更新”等异常现象。

总之,DDL是建立数据库的工具,DML是操作数据库、访问数据的工具,而DBMS是执行这些操作并负责维护和管理数据库的工具。它们各司其职,完成了数据库整个生命周期中的所有活动。

由于巴赫曼在以上两个领域做出的杰出贡献,他理所当然地被公认为“网状数据库之父”或“DBTG之父”。他在数据库技术的产生、发展和推广应用等各方面都发挥了巨大的作用。

在数据库的文档资料中,有一种描述网状数据库模型的数据结构图,这种图解技术就是巴赫曼发明的,通常被称为“巴赫曼图”(Bachman diagram)。此外,担任ISO/TC 97/SG-16主席时,巴赫曼还主持制定了著名的“开放系统互连”标准,即OSI(Open System Interconnection)。OSI为计算机、终端设备、人员、进程或网络之间的数据交换提供了标准规范,实现了系统之间的互操作性,具有重要意义。巴赫曼还是建立在波士顿的计算机博物馆的创始人之一。

尽管在20世纪70年代以后,随着关系数据库的兴起,网状数据库受到了冷落,但随着面向对象技术的发展,有人预言网状数据库有可能重新受到人们的青睐。无论这个预言是否成真,巴赫曼作为数据库技术的先驱,其历史作用和地位在学术界和产业界都得到了普遍承认。

巴赫曼是在1973年8月28日在亚特兰大举行的ACM年会上接受图灵奖的,他发表了题为“作为导航员的程序员”(The Programmer as Navigator)的图灵奖演说。

他这一生主要获奖如下:

  • 1973年,巴赫曼因其“对数据库技术的杰出贡献”而获得计算机协会(ACM)颁发的图灵奖。
  • 1977年,他因其在数据库系统方面的开创性工作而被选为英国计算机学会杰出会员。
  • 2012年,巴赫曼因“在数据库管理、事务处理和软件工程方面的基础发明”而被授予国家技术与创新奖章。
  • 2014年,他因“对数据库技术,特别是集成数据存储的贡献”而被任命为ACM院士。
  • 2015年,由于他在开发数据库系统方面的早期工作,他被任命为计算机历史博物馆的研究员。

退休后,巴赫曼自愿帮助记录早期软件开发的历史。2002年,他在计算机历史博物馆发表了关于组装集成数据存储的讲座,并于2004年为ACM进行了口述历史。你可以在明尼苏达大学查尔斯巴贝奇研究所获取1951年至2007年的巴赫曼论文。2011年,他向电气和电子工程师协会贡献了口述历史。这些资料都有影音文字,大家可以自己搜索一下。

在2017年7月13日,他因年龄去世,享年92岁。

5 1 投票
文章评分
订阅评论
提醒

2 评论
最旧
最新 最多投票
内联反馈
查看所有评论
CJ.Zhang
6 天 前

加油,看看栋哥如何介绍2000年图灵奖!!!能挖出出身家庭,轶事传说吗?

2
0
希望看到您的想法,请您发表评论x
滚动至顶部