## 导航者:程序员的未来 文/Charles W. Bachman >查尔斯 · 威廉 · “查理” · 巴赫曼(Charles William “Charlie” Bachman),数据库之父,于7月13日逝世,享年92岁。1973年,他因“数据库技术方面的杰出贡献”被授予图灵奖。在当年的 ACM 年会上,他接受了这份荣誉,并做了题为“导航者:程序员的未来”的图灵奖演说。他以哥白尼的《天体运行论》颠覆地心说做类比,指出过去几十年间,人们对信息系统的理解,并不比托勒密学说强多少,“新”时代应当抛弃那种“以计算机为中心”的思维模型,转而采用“以数据库为中心”。 巴赫曼是第一个没有博士学位的图灵奖获得者,第一个工程学背景而不是科学背景的图灵奖,是第一个因将计算机应用于工商管理而赢得图灵奖,第一个因特定的软件而赢得图灵奖,第一个在职业生涯完全在企业中度过的图灵奖获得者。他的主要贡献不是在学术界任教研工作,而是在工业界开发实际的产品。 ### 求学经历 1924年12月11日巴赫曼出生于美国堪萨斯州曼哈顿,高中在密歇根州东兰辛度过。二战爆发后,他加入美国陆军防空高炮师;从1944年3月至1946年2月,他在西南太平洋战场待了两年,到过新几内亚,澳大利亚和菲律宾群岛等地。在这里,他首次使用 90mm 炮弹的火力控制系统。之后,他离开军队,进入密歇根州立大学学习,并于两年后获得了机械工程的学士学位。1950年,他在宾夕法尼亚大学获取硕士学位。同年,他在沃顿商学院完成了三个季度的学习,获取 MBA 学位。 ### 工作和成就 #### 运筹 1950年他进入位于密歇根州米德兰的陶氏化工,任工程师,后来升至数据处理经理。在陶氏化工,巴赫曼作为工程师主要负责运筹方面的问题,在穿孔卡片机上开发投资回报率的计算程序。1957年,他被任命为中央数据处理部门的第一负责人,负责筹备公司的第一台大型数字计算机。巴赫曼主持了一项可行性研究以选择新机器,并聘请了一些程序员和分析员。他研究信息论,并参与了程序设计以简化文件维护和报告生成过程。 #### 通用生产信息和控制系统 1961年,巴赫曼来到纽约市,任职于通用电气,在这里他提供企业集团内部咨询服务。他负责了一个涉及 GE 的所有部门的综合系统项目,即使用全新的 GE 225 计算机,制造一个通用的生产信息和控制系统(MIACS)。 该 MIACS 应用系统包含了许多要素,最底层的是生产控制系统。它完成生产计划,配件扩充,工厂调度,新订单反馈、处理以及正确变更工厂状况等许多功能。该系统的底层是集成数据存储(IDS,Integrated Data Store),是原始的数据库管理系统,IDS 建造在存储器上的虚拟内存系统上,用于检索动态和静态的数据。它是通用电气 IDS、IDS II,Cullinet 的 IDMS 和其他基于巴赫曼网状模型的数据库的基础,也是第一个用于生产的基于磁盘数据库管理系统。巴赫曼抓住了当时的许多新机会,成就了一个独特的产品。 #### 数据库管理系统 1964年,巴赫曼来到位于亚利桑那州的通用电气计算机部门。在这里,他和朗伯一起完成了许多数据库相关的项目,如 GE 400 IDS、GE 600 IDS、DataBASIC、个人数据存储系统、以及 WEYCOS 1、2 等。WEYCOS 是一个复杂的在线数据库管理信息系统,巴赫曼认为 WERCOS 2 是第一个能支持多个应用程序并行访问的数据库管理系统。他们开发了“dataBasic”这个产品,为使用 BASIC 语言的分时系统用户提供数据库接口支持。1960年代末,他还与沃伦 · 西蒙斯、比尔 · 奥莱等人在 CODASYL 数据库任务组一起工作,他们制作的数据库标准深受 IDS 和巴赫曼想法的影响。 #### 三层结构模型 1970年霍尼韦尔收购 GE 的计算机事务后,巴赫曼来到波士顿,在霍尼韦尔高级研究组从事合并后的运筹工作。仍然从事数据库方面的工作。他把自己研究数据模型称之为角色数据模型(role data model)。巴赫曼曾为 ISO 委员会开发开放系统互连(Open Systems Interconnection,OSI)。曾担任美国国家标准学会-标准规划和规定委员会(ANSI-SPARC)的 DBMS 研究组副主席,并尝试将数据库管理语言标准化。1971年 DBTG 小组提出了 DBTG 报告,描述了网状数据库系统参数接口和协议,以支持与数据无关的概念。报告也确立了现在被称为“三层模式方法”(Three schema approach)的数据库模型,即外部,抽象和内部的分层模型。虽然申请美国国家标准失败,但该模型非常有影响力。1974年,巴赫曼与关系数据库理论的首创者埃德加 · 科德在参加了一个会议时,就两者的功过展开了讨论。 #### 企业数据库设计 巴赫曼也为许多标准化组织工作,他积极推动与促成了数据库标准的制定,在美国数据系统语言委员会 CODASYL 下属的数据库任务组 DBTG 提出了网状数据库模型以及数据定义(DDL)和数据操纵语言(DML)规范说明,于1971年推出了第一个正式报告——DBTG 报告。 ### 图灵奖颁奖词 1973年8月28日在亚特兰大召开的 ACM 年会上,图灵奖委员会主席 Richard G. Canning 宣读了当年的图灵奖颁奖词: 在过去的五到八年里,计算机领域的一个重大变化就是我们对待和处理数据的方式。在我们这个领域的早期,数据与使用它的应用程序密切相关。而现在,我们要打破这层关系的想法越发迫切。我们希望数据可以独立于使用它的应用程序,也就是说,被重新组织和构建的数据可以同时为许多应用程序和许多用户提供服务。我们所寻求的就是数据库。 这种向数据库的转变现在还处于起步阶段。即便如此,目前全世界也已经安装了1,000至2,000个真实的数据库管理系统。在未来十年内,很可能会有成千上万的这样的系统。哪怕仅从安装的系统数量来看,数据库的影响也是巨大的。 今年图灵奖将授予的正是数据库技术的真正开拓者之一。再没有其他人可以像他一样,在我们这个领域有过这样的影响。 我来列举一下他所做的三项主要工作。 他是1961年到1964年期间开发完成的第一个商业数据库管理系统-集成数据存储的创建者和首席设计师。I-D-S 是当今三个最广泛使用的数据库管理系统之一。同样的,他也是 CODASYL 数据库项目组的创始成员之一,并在1966年到1968年期间一直担任该项目组的成员。这个项目组的技术规范正在由那些散布在世界各地的众多供应商制定。实际上,这些规范目前代表了数据库管理系统通用架构的唯一推荐标准。值得肯定的是,经过长时间的辩论和讨论,这些规范也体现了集成数据存储的许多原始思想。第三,他是一种可以显示数据关系的强大方法的创造者,这种方法也是数据库设计人员和应用系统设计人员的工具。 因此他的贡献代表了想象力和实践性的结合。他的丰富工作已经并将继续对我们的领域产生重大影响。哥白尼提出的“日心说”,完全颠覆了人们对天文现象的想象,重新定义了人类的仰望星空的视角。同样地,在数据处理领域,这样一个思想也在日渐盛行:数据处理人员如果可以接受一个全新的观点,一种将那些应用程序员从传统核心系统的集中式存储思想中解放出来,并让数据处理人员得以在数据库中充当真正的导航者的观点,那么他们也一定会受益匪浅。要做到这一点,他们还必须先学习各种导航技能;然后必须学习“交通法规”。以避免与其他程序员一同在数据库的信息空间中航行时撞到一起。 当然,这种重新定位给程序员带来的痛苦,也势必会如日心说理论给古代天文学家和神学家带来的那样猛烈。 以下为巴赫曼演讲全文。 今年,全世界都在庆祝波兰著名天文学家,数学家尼古拉 · 哥白尼(Nicolaus Copernicus)诞辰五百周年。1543年,哥白尼在临终前出版了他的著作 “天体运行论”,其中描述了关于地球,行星和太阳之间的相对物理运动新理论。这与一千四百年前托勒密建立的以地球为中心的理论有着直接的矛盾。 哥白尼提出了日心说,即行星围绕太阳旋转。这个理论受到了猛烈而持续的抨击。近一百年后,伽利略被命令站在罗马的宗教裁判所面前,并被迫声明他已经放弃了对哥白尼理论的信仰。但即使这样也没有让他的审判官减轻责罚,他被判处无期徒刑,而哥白尼的书被放在“禁书”索引之列,生生搁置了200年。 我今天提出哥白尼的例子,是想说明我相信现在在计算或信息系统世界中存在的一种类似的情况。在过去的50年里,我们用的几乎全是托勒密一般的信息系统。这些系统和大部分有关系统的思想都是基于“以计算机为中心”的概念。(我选择说50年的历史而不是25年,是因为我认为今天的信息系统是从有效的打孔卡片设备开始的,而不是从具备储存功能的编程计算机开始的。) 就像古人看到太阳在地球周围转动一样,我们信息系统的古人也看到了一个类似的制表机器或一台拥有顺序文件流的计算机。它们每个都是时间和地点的模型。但过了一段时间,每一个都被认为是不正确和不足的,以至于不得不被另一个能够更准确地刻画现实世界和行为的模型所取代。 哥白尼向我们提出了一个新的观点,为现代天体力学奠定了基础。这种观点为我们提供了通过上帝视角来了解太阳和行星以前神秘的轨迹的基础。信息系统领域也有一个新的理解基础。这是通过从以计算机为中心转向以数据库为中心的观点来实现的。这种新的理解将带来我们的数据库问题的新的解决方案,并加速征服 n 维数据结构,从而最好地模拟现实世界的复杂性。 最早的数据库,最初是通过顺序文件技术在打孔卡上实现的,当它们被移动时,从打孔卡到磁带,再到磁盘,并没有明显的改变。关于唯一改变的是文件的大小和处理速度。 在顺序文件技术中,搜索技术已经很成熟。从感兴趣记录的主数据键开始,并遍历核心存储器传递文件中的每条记录,直到找到期望的记录或更高的键的记录。(主数据键是记录中的一个字段,它使得记录在文件中是唯一的。)社会保险号码,采购订单号码,保险单号码,银行帐号都是主数据键。几乎没有例外,它们是专门为唯一性而设计和创建的综合属性。自然属性,例如人名和地名,日期,时间和数量,并不一定是唯一的,因此不能使用。 直接存取存储器的可用性为哥白尼式的转变奠定了基础。“进”和“出”的方向是相反的。当顺序文件世界的输入概念意味着“从磁带进入计算机”时,新的输入概念就变成了“进入数据库”。这种思维方式的革命正在将程序员从一个固定的观察者身上转移到一个能够随意探测和遍历数据库的移动导航者身上。 直接存取存储器也为主数据键提供了新的记录检索方式。第一个被称为随机化,计算寻址或哈希。它涉及用专门的算法处理主数据键,其输出为该记录确定了首选存储位置。如果所寻找的记录没有在首选位置找到,则使用溢出算法来搜索记录交替存储的地方(如果存在的话)。 当记录一开始被存储时,若首选位置已满,则会创建溢出。 作为随机化技术的替代方法,索引顺序访问技术被开发了出来。 它还使用主数据键控制记录的存储和检索,并通过使用多级索引来实现这些功能。 从顺序文件处理升级到索引顺序访问或随机访问处理,程序员的访问时间会大大减少,因为他现在可以自由探索记录,而不用顺序地浏览文件中的所有记录。 然而,由于他只处理一个主数据键,所以他仍然处于一个一维世界,这是他唯一的存取控制手段。 从这一点来说,我想从成为一个成熟的 n 维数据空间导航员的角度开始程序员的培训。 但是,在我开始描述这个过程之前,我想先回顾一下“数据库管理”是什么。 它涉及存储,检索,修改以及删除那些和人员、生产、航空公司预订或实验室实验有关的文件中的数据的所有层面,其中的数据会被反复地使用和不断地更新信息。这些文件通过某种存储结构映射到磁带或磁盘组以及支持它们的驱动器中。 数据库管理有两个主要功能。首先是查询或检索活动,重新访问先前存储的数据,以确定某个现实世界实体或关系的记录状态。这些数据之前已经通过其他一些工作存储下来,几秒钟前,几分钟前,几小时前甚至更早的时间前,并且已经被数据库管理系统信任。数据库管理系统在数据存储和随后需要检索的时间之内保持数据的持续性。这种检索活动的目的是产生决策所需的信息。 其中一部分查询活动是准备报告。在顺序存取存储设备的最初几年以及由此产生的批处理过程中,除了格式化为报告的大规模文件转储之外,没有其他可行的替代方案。检查特定支票帐户余额,库存余额或生产计划的自发要求无法被有效地执行,因为那必须绕过整个文件来提取任何数据。 这种形式的查询现在虽然相对重要,但是正逐渐消失,除了档案的目的或者为了满足某些有病的官僚机构的要求,最终将会消失。 数据库管理的第二个活动是更新,它包括原始的数据存储,随着事物的改变而不断地修改,最终当数据不再需要时从系统中删除。 更新活动是对现实世界中必须记录的变化的响应。雇用新员工就要存储新记录。减少可用库存就要修改库存记录。而取消航班预订则要删除记录。所有这些都将被记录和更新下来,以待日后的查询。 文件的排序一直是计算资源消耗的一个大头。在批量顺序更新之前,它被用于对事务进行排序,还被用于准备报告。事务模式更新、按需查询以及按需报告准备这些改变正在一步步降低着文件级别排序的重要性。 现在让我们回到关于程序员如何成为导航员的主题上。我们给他留下了随机或索引顺序技术,以便根据主数据键加速查询或更新文件。 除了主键的记录之外,通常还可以根据其他字段的值来检索记录。例如,在计划十年奖励时,可能希望选择出所有“雇佣年份”等于1964年的雇员记录。这样的访问是通过辅助数据键来检索的。由辅助数据键检索的实际记录数是不可预知的,从可能为零一直到可能包括整个文件。相比之下,一个主数据键最多只能检索到一个记录。 随着辅助数据键检索的出现,以前的一维数据空间不得不扩展其他维度,使得维度数等于记录中的字段数。对于小型或中型文件,数据库系统可以将记录中每个字段中的每个记录编入索引。这种完全索引的文件被归类为倒排文件。然而,在大型的活动文件中,对每个字段都进行索引是不经济的。因此,选择出那些包含的内容会被频繁使用的字段来作为检索标准,并且只为这些字段创建辅助索引是很值得考虑的。 文件和数据库之间的区别并没有被清楚地确立。但是,目前在我们讨论看来,有一个不同之处。在数据库中,有多种或多种不同的记录是很常见的。例如,在人员数据库中可能有员工记录,部门记录,技能记录,扣除记录,工作历史记录和教育记录。每种类型的记录都有自己独特的主数据键,其他所有字段都是潜在的辅助数据键。 在这样的数据库中,当一种类型的记录的主键是另一种记录的辅助键时,主键和辅助键之间会存在有趣的关系。以员工数据库为例——在员工记录和部门记录中都会出现名为“部门代码”的字段。 它是员工记录的几个可能的辅助数据键之一,也是部门记录的唯一的主数据键。 主数据键和辅助数据键的这种平等性反映了真实世界的关系,并从计算机处理的角度来重新建立了这些关系。使用相同的数据值作为一个记录的主键和一组记录的辅助键是声明和维护数据结构集的基本概念。集成数据存储(I-D-S)系统和基于其概念的所有其他系统都认为,它们对程序员的基本贡献是将记录关联到数据结构集以及将这些集合用作检索路径的能力。所有的 COBOL 数据库任务组系统实现都属于这个类。 将几个文件(每个文件都只有一种记录类型)转换为具有多种类型的记录和数据库集合的数据库有很多好处。一个这样的好处是由于使用数据库集取代了主索引和辅助索引,来获得具有特定数据键值的所有记录,可以带来显著的性能改善。使用数据库集,可以消除所有的冗余数据库,减少所需的存储空间。如果有意维护冗余数据,以维护为代价提高检索性能,那么冗余数据就可以被控制,以确保一个记录中的值的更新将适当地反映在所有其他应有的记录中。性能还会通过数据库的所谓“集群”能力得到提升,其中一个集合的所有者以及大部分成员都将被记录在同一个 block 或 page 上以物理地存储和访问。并且自1962年以来,这些系统就一直在虚拟内存中运行。 另一个重要的功能和性能优势是能够基于声明的排序字段或插入时间指定集合内记录的检索顺序。 为了可以让程序员可以作为导航员来工作,我们来列举一下他的访问记录的方式。这些代表了当他通过数据选择解决查询或完成更新时,他可以给数据库系统的命令——单独使用,相乘或者相互结合。 - 他可以从数据库的开始处开始,或者从任何已知的记录开始,然后依次访问数据库中的“下一个”记录,直到他找到感兴趣记录或达到记录结尾。 - 他可以将一个数据库键输入到数据库中,直接访问记录的物理位置。(数据库键是创建时分配给记录的永久虚拟内存地址。) - 他可以将主数据键的值输入到数据库中。(索引顺序或随机存取技术也将产生相同的结果。) - 他可以将辅助数据键值输入到数据库中,并按顺序访问具有该字段的特定数据值的所有记录。 - 他可以从一个集合的所有者开始,并顺序访问所有的成员记录。(这相当于将主数据键转换为辅助数据键。) - 他可以从任何成员记录开始,访问该组的下一个或之前的成员。 - 他可以从一组中的任何成员开始并访问该组的所有者,从而将辅助数据键转换为主要数据键。 这些访问方法本身都很有趣,而且都非常有用。然而,这是整个系列的协同使用才最终使得程序员拥有极大的扩展权力,来在大型数据库中来回访问,并且只需访问那些有兴趣回应查询的记录,同时可以更新数据库以备将来查询。 下面我们来说明处理单个事务的过程是如何涉及到数据库的路径。想象一下下面的场景:该事务携带着用于获取数据库入口点的记录的主数据键值或数据库键。该记录将被用来访问其他记录(无论是所有者还是成员)。这些记录中的每一个都能被用作出发点来检查另一组记录。 例如,考虑在给定部门代码时列出特定部门的雇员的请求。这个请求可以由仅包含两种不同类型记录的数据库支持:人员记录和部门记录。为了简单起见,部门记录可以设想为只有两个字段:部门代码,它是主数据键;和部门名称,这是描述性的。人事记录可以设想为只有三个字段:员工编号,这是记录的主数据键;雇员的名字,这是描述性的;和员工的部门代码,这是控制集合选择和记录在集合中的位置的辅助键。这两个记录联合使用部门代码和基于这个数据键的一组声明,这为创建和维护部门记录同代表该部门雇员的所有记录之间的集合关系提供了基础。因此,使用该组员工的记录可以提供一种机制,便于在相应部门记录的主数据键检索之后立即列出特定部门的所有雇员。而不需要访问其他记录索引。 将部门经理的员工编号加入部门记录,大大拓展了导航员在数据库中自由探索的方法,为第二类集合提供了基础。这个新类每次出现都包含由特定员工管理的所有部门的部门记录。现在,单个员工编号或部门代码为企业的集成数据结构提供了一个切入点。给定一个员工编号和部门管理的记录集合,他所管理的所有部门就都可以列出。并且可以进一步列出这些部门的人员。每个员工管理的部门都可以反复被查询,直到所有的下属员工和部门都显示出来。反之,同样的数据结构可以很容易地识别出员工的经理,经理的经理,以及经理的经理的经理等等,直到访问到公司总裁。 对于已经掌握了 n 维数据空间的程序员来说,还有更多的风险和冒险在等待着他。作为导航员,他必须勇敢地在海里摸索和发现浅滩和礁石,这是因为他必须在共享的数据库环境中导航。对他来说,没有其他很显而易见的方式可以达到所要求的表现。 共享访问是协同编程或时间共享的新型复杂变体,它们是为了共享但是独立地使用计算机资源而发明的。在协同编程的过程中,只要他确信自己的地址空间与其他任何程序的地址空间无关,某项工作的程序员就不需要知道或者在乎他的工作是不是共享计算机。这项工作被留给操作系统来保证每个程序的完整性,并充分利用内存,处理器和其他物理资源。共享访问是协同编程的专用版本,其中关键的共享资源是数据库记录。数据库记录与主存储器或处理器有着本质的不同,因为它们的数据字段通过更新而改变了值,并且之后不返回到其原始状态。因此,重复使用数据库记录的工作可能会发现自上次访问记录的内容或集合成员发生了更改。结果,一个算法尝试复杂的计算可能会得到一个有点不稳定的场景。就好像变量被随机改变时,系统试图收敛于一个迭代解决方案!就好像当某人仍然在账户上进行交易时,系统在试图进行试算平衡!就好像航空公司的两个预订系统同时试图出售航班上的最后一个座位! 人们的第一反应是,这种共享访问是没有意义的,应该被遗忘。但是,共享访问的需求是紧迫的,使用压力也很大。从现在一直到可预见的未来,可用的处理器将比可用的直接存取存储设备快得多。而且,即使存储设备的速度赶上了处理器的速度,还有两个问题会带给共享访问的成功实现以压力。首先是将许多单一目的文件集成到一些集成数据库中的趋势;其次是交互式处理的趋势,即处理器只能以手动创建的输入消息所允许的速度,来推进一项工作。如果没有共享访问权限,那么在此期间整个数据库都将被锁定,直到批处理程序或事务及其人员交互终止。 现在直接存取存储设备的性能在很大程度上,受到了使用模式的影响。如果使用方式是交替模式,则性能就会非常低:访问、处理、访问、处理……每一次访问都取决于前一个的解释。当通过协同编程产生许多独立访问时,它们通常可以并行执行,因为那是针对不同的存储设备而言的。 而且,当对同一个设备存在访问请求队列时,实际上可以通过搜索和延迟减少技术来增加该设备的传输容量。而这种提高吞吐量的潜力恰恰就是共享访问的最大压力。 在数据库管理的两个主要功能:查询和更新中,只有更新会造成共享访问中的潜在问题。哪怕有无限数量的工作都要在同一时间扫描并从数据库中提取数据,也不会有麻烦。但是,一旦有某个工作开始更新数据库,就会存在潜在的麻烦。那项事务的处理可能只需要更新数据库中的数千或数百万条记录中的少数几条记录。这样一开始的时候,还可以同时处理数百个工作的事务,实际上没有冲突。但是,两个工作要同时处理同一个记录的时刻很快就会到来了。 共享访问中的两个基本原因是干扰和污染。干扰被定义为一项工作的更新活动对另一项工作的结果的负面影响。一个示例是一项正在运行会计试算平衡的工作,而另外一项正在开展财务活动的工作则显示了干扰问题。当一个工作受到干扰时,必须中止并且重新启动,给它另一个运行正确输出的机会。而之前执行的任何输出也必须被移除,因为新的输出将会被创建。污染被定义为由于两个事件的组合而产生的对工作的负面影响:当另一工作已中止,并且其输出(即对数据库或消息发送做出的改变)已被第一项工作读取时。被中止的工作和它的输出将被从系统中移除。此外,被中止工作的输出污染的工作也必须中止并且重新启动,以使他们能够输入正确的数据。 共享访问问题的解决方案设计中,关键问题是应用程序员应具有的可见程度。Weyerhaeuser 公司的 I-D-S 共享访问版本是在程序员不应该意识到共享访问问题的前提下设计的。该系统会自动阻止每项记录的更新以及被工作发送出来的每条消息,直到该工作正常结束,从而完全消除污染问题。这种记录动态阻塞的一个副作用是,当两个或多个工作要等待另一个工作解锁所需的记录时,会创建死锁情况。在检测到死锁情况时,I-D-S 数据库系统会通过中止造成死锁情况的工作来做出响应,恢复由该工作更新的记录,并使这些记录可用于等待的工作。而被终止的工作本身随后会重新开始。 那么这些僵局是真的存在吗?后来我听说,在 Weyerhaeuser 的面向交易的系统中开始的大约10%的工作都不得不中止僵局。每小时有大约100项工作被中止和重新启动!这非常可怕吗?这非常低效吗?这些问题很难回答,因为我们在这方面的效率标准还没有明确的定义。此外,结果依赖于应用程序。 Weyerhaeuser 的 I-D-S 系统在成功完成的工作中效率高达90%。 但是,真正的问题是: - 避免共享访问是否会让每小时完成的工作变得更多或更少? - 基于检测而不是避免污染的其他策略是否更有效率? - 让程序员知道共享访问权限允许他编写这个问题,结果会提高效率吗? 所有这些问题都已经开始在冲击着作为导航员的程序员以及那些正在设计和建造着他的导航设备的人。 我今天的主张是,应用程序员们是时候放弃以内存为中心的观点,接受在 n 维数据空间内导航的挑战和机会了。支持这种可能所需的软件系统现在已经出现了,并且正变得越来越易用。 著名的英国数学家兼哲学家罗素(Bertrand Russell)曾经说过,相对论要做的就是改变我们对世界的想象。而在我们对信息系统世界的想象图景中,需要做出同样程度的变化。 这其中的主要问题是数据处理人员思维的重新定位。这不仅包括程序员,还包括负责基本应用程序编写任务的应用系统设计人员,以及负责创建未来的操作系统、消息系统和数据库系统产品的产品规划人员和系统工程师。 哥白尼为四百多年前的天体力学奠定了基础。正是这种科学现在使我们能够用最低能耗解决方案来通往月球和其他行星。同样,我们必须开发一种类似的科学,它将让我们有能力实现数据库访问的相应最低能耗解决方案。这个主题是非常有趣的,因为它包括了遍历现有数据库的问题,如何在一开始就构建一个方案的问题,以及如何在之后重构它以最好地适应不断变化的访问模式的问题。你能想象重建我们的太阳系,来减少行星之间的旅行时间那样的场景吗? 把这些数据结构的机制看做一个基于健全设计原则的工程学科来研究是很重要的。重要的是它可以被教授和教授。现在我们估计一台在二十世纪八十年代安装数据库系统的设备成本约为1000亿美元(按1970年的价值计算)。跟据进一步估算,缺乏有效的技术标准还可能会增加20%或200亿美元的花费。因此,放弃目前进展缓慢的保守主义,情绪主义和神学论证在很大程度上是值得考虑的。大学在很大程度上忽视了数据结构的机制,而偏向于更符合研究生论文要求的问题。大型数据库系统也是大学预算几乎无法承担的昂贵项目。因此,现在十分有必要要求那些联合大学/工业和大学/政府的项目提供必要的资金,并且进行持续的发力,如此才能取得进展。在 Weyerhaeuser 的系统中,埋有足够发六本博士论文的足够资料,等待有人来挖掘。我在这里不是指新的随机化算法的研究。我的意思是,研究那些将近十亿个真实的商业数据字符组织成现在已知的、最纯粹的数据结构的机制。 技术文献的出版政策也是一个问题。ACM SIGBDP 和 SIGFIDET 这两种出版物是最好的,这些组织的成员也应该扩充。《ACM 通讯》的审稿规则和做法会导致在提交和发表之间延迟十二个月到十八个月。除此之外,作者还需要时间来准备发表意见。以至于从发现重要结果到尽早发表文章之间至少会有两年的时间间隔。 当然,阻止这一进步的最大障碍可能是由于单一供应商垄断市场而导致大部分计算机用户缺乏一般的数据库信息。如果这个组织能承担在完全公开的信息交流中推广经验,要求和解决问题的能力,那么这一进步变化的速度肯定会增加。SHARE 最近向所有供应商和所有用户开放其会员资格就是一个重大的进步。1973年7月在蒙特利尔举行的由 SHARE 赞助的数据库系统工作会议提供了一个论坛,使得各种设备和数据库系统的用户能够描述他们的经验和要求。 日益扩大的对话已经开始。我希望并相信我们可以继续。如果我们秉持着这种精神相互接触,并且没有任何一个组织试图主宰这个想法,那么我相信我们终将可以为程序员提供有效的导航工具。