Full transcript
0:021969 年,Ted Codd 在论文中提出关联式
0:06模型资料库的想法,没人理解,
0:09一年后,他又写了一篇论文,这次让人大吃一惊。
0:14他的关联式资料模型将资料结构化为表格,并倡导
0:18「资料独立性」的理念,让用户免受资料物理储存方式的影响。
0:25这是很激进的概念。但 Codd 的论文只说了这软体应该如何运作,
0:29没有产品,也还有很多疑问:
0:33这种资料库可以在没有超级电脑的情况下有效处理 query(查询)吗?
0:38在导览上,自动系统能否做得比人类好?只有一种方法能找出答案。
0:44在本影片中,我们将谈谈 SQL 和关联式资料库产业的发迹和崛起。
0:58## 第 0 阶段
1:06当 Codd 的论文发表时,
1:08IBM 已有一个资料库产品:资讯管理系统:IMS(Information Management System),
1:15IMS 很好用。IBM 对其他种资料库软体也抱持开放态度,
1:20只要软体能让他们卖更多机台就行(稍后还会提到),但 IMS
1:24占据了大部分精力和资源,在关联式模型上花功夫可说是分散注意力。
1:29因此在 1973 年,IBM 高层将所有在实验关联式模型资料库
1:34的人员转移到 San Jose 的 IBM Santa Teresa 实验室,
1:39以便他们可以与 Codd 本人一起工作。
1:43在那里,团队开始开发实现 Codd 想法的软体。
1:46第一步称为第 0 阶段。为什么这么称呼?
1:52IBM System/360 设计师 Fred Brooks 在名着 The mythical man-month《人月神话》中写道:
1:58「打算要丢弃,无论如何都会丢弃」,这个第 0 阶段产物注定要被丢掉,
2:04是个速成而杂乱的东西,用来测水温、了解问题。
2:10第 0 阶段的核心是实作 Don Chamberlin 和 Ray Boyce
2:13刚发明的新查询语言,称为 Sequel,
2:17后来改称为 SQL。他们后来发表了一篇关于 SQL 的论文,并在 1974 年的着名会议上发表。
2:25总之,这个 Sequel 实作是在另一个 IBM 的软体 XRM 的基础上编写的。
2:29XRM 处理较低层的东西,例如资料的实体存取,
2:35比喻来说,像是从架子上拉下来的。
2:40第 0 阶段的产品限制很多,XRM 一次只支援一名使用者,并且只
2:46实作了某一些 SQL 函数,例如,无法执行 “joins”,是个相当大的问题。
2:53在演示创建新表格、新 SQL 语言,甚至
2:58短暂测试单一使用者操作的可行性后,第 0 阶段按原计划被废弃,
3:04然后在 1975 年,这个有超过 12 名成员的团队开始开发面向客户的产品:第 1 阶段。
3:12## Ingres 与此同时,在 UC Berkeley(加州大学柏克莱分校),另一项
3:15建构关联式资料库软体的工作正顺利进行中。
3:191971 年,UC Berkeley 教授 Eugene “Gene” Wong 和 Michael Stonebraker
3:25读了 Codd 的论文,很喜欢,
3:28因此 1972 年,他们从美国国家科学基金会和
3:32其他组织获得赞助,开始进行名为 Ingres 的小研究计画。
3:37这名字出自某顾问,是「互动式图形和检索系统」Interactive Graphics and Retrieval System 的缩写。
3:43Ingres 没有使用 Sequel 作为资料查询语言,而是使用 Wong 设计的新东西,
3:48称为 QUEL,是「查询语言」Query Language 的缩写。Stonebraker 和 Wong 读了原来的 Sequel 论文,很不喜欢。
3:57经过几次重写后,QUEL 和 SQL 很大程度上变得很相似,
4:01除了处理 "joins" 的方式可能不同。
4:05到了 1975 年,Ingres 已能执行 query(查询)。尽管 Berkeley 团队资源少得多,只有一、两名博士生,
4:13不是 12 人,但 Ingres 有进展,到 1977 年,采用 Ingres 的数量增加到了 50 至 60 套,
4:21部份原因是运气。Stonebraker 有一台 DEC 迷你电脑,请了 Unix 先驱
4:26Ken Thompson(当时在 Berkeley 工作)在上面安装 Unix,
4:32Stonebraker 喜欢说这台是 Bell Labs 之外第一批安装 Unix 的电脑之一,
4:37不一定是真的,但满有趣的,某天可能会上 Reddit。
4:43总之,Ingres 因为这层关系,成了 Unix 上第一批资料库软体之一,
4:48Ingres 也随着 Unix BSD 散播到世界各地的大学。
4:56## System R(R 系统)
4:56让我们回到 IBM。在第 1 阶段,关联式资料库专案有了名字——System R(R 系统)。
5:02据说名字中的 R 是由 "Relations"(关联)或
5:04"Rufus"(某团员的一只狗的名字)而来。
5:08System R 由两部分组成:较高层和较低层两个部分。较高层系统的
5:14顶端是关联式资料介面,此处是 Sequel 语言提交 query 的地方。
5:20下层是关联式储存系统,取代了 XRM,优化了
5:26query 并找出存取资料的方法,增加了一些机制使系统
5:32更健全,防止故障,并支援多用户同时使用(concurrency、并发性),做起来比听起来难。
5:38在做并发性相关工作时,System R 团员 Jim Gray 使 "transaction"(交易)
5:43这个概念成形,这概念后来演变成现在的 ACID:Atomicity(原子性)、
5:50Consistency(一致性)、Isolation(隔离性)和 Durability(持久性)。
5:53当不可避免的错误、失败和事故发生时,这些原则
5:57保障了数据的正确性,若没有这些原则,
6:00今天我们就无法信任电子商务和其他重要的电子交易,这可是一件大事。
6:07Gray 因其在 transaction(交易)方面的贡献获得 1998 年 Turing Award(图灵奖)——
6:12资讯科学界的诺贝尔奖。不幸的是,他后来在旧金山附近海域航行时失踪了。
6:19到 1976 年底,团队已经觉得可以把 System R 传给潜在客户试用,
6:25早期用户包括康乃狄克州的 Pratt & Whitney(普惠)公司和
6:29西雅图的 Boeing(波音)公司,两个用户都用这个系统来控制库存。
6:34## 竞争
6:34IBM San Jose 和 Berkeley 两个团队当时就互相认识,
6:38这给整件事情注入了一点竞争气氛,
6:42他们也互相联络,实际上 Ted Codd 在两团队之间
6:46穿梭,检查进展... 可能同时传播想法。
6:51他没有被任命负责 System R,对 System R 没有特别的忠诚度。
6:56前面提到的 Jim Gray 是在 Berkeley 获得博士学位,
7:00早期也在两个团队之间传递讯息,
7:04甚至带 Ingres 团队到 IBM 办公室、或带 IBM 团队到 Berkeley。
7:09现在我们有 System R 和 Ingres 两套软体。System R 有大公司 IBM 的支持,但还没做好,
7:16而且 IBM 已经有资料库产品了,不太急于推出 System R。
7:23另一方面,Ingres 就在那和 Unix 一起在外传播。
7:26但 Ingres 不是个商业产品,只是个研究计画,
7:31Stonebraker 只是为了获得足够名声以获得终身教职,
7:35因此市场上有一个商用关联式产品机会的
7:40大缺口。大海是分开的,让人自由穿越。
7:46## Oracle(甲骨文)
7:47Oracle(甲骨文)公司的历史挺混乱,我们就几个重点谈谈。
7:52这公司由 Larry Ellison、Bob Miner 和 Ed Oates
7:55于 1977 年创立,当时名为 Software Development Laboratories(软体开发实验室),最初是
8:01为客户开发软体的顾问公司,后来想转型做产品。
8:06当时,资料库产业正蓬勃发展,推出的产品如 Software AG 的 ADABAS、
8:12IBM 的 IMS 或 Cincom 的 Total 等。1978 年此类软体总销售额估计为 1.3 亿美元。
8:22Ellison 和公司认为,大家可能会对持续成长的小型电脑市场的
8:26资料库软体感兴趣,他们碰巧看了 Ted Codd 关于关联式模型的论文
8:31和 IBM 关于 SQL 的刊物,都是公开的。
8:37Ellison 立即看到了潜力。与市场上现有产品相比,
8:41关联式模型对于不熟练的使用者来说,查询资料库要容易得多,
8:46在资料完整性上也有优点,因为资料存在表格里单一行中。
8:53因此 Ellison 将公司名称改为 Relational Software Inc(关联软体公司),
8:57即 RSI。他们利用谘询计画的剩余资金、及从客户那借来的
9:01PDP-11 电脑,拼凑出 Oracle 资料库的第 1 版。
9:07Oracle 的名称源自于 Ellison 在 Ampex 公司时,
9:10为 CIA(中情局)开发的 Terabit(兆位元)记忆体产品。
9:15Ampex 听起来很熟吧?Ampex 是家生产磁带录音机的美国公司,
9:20在谈日本录影机的影片里提到过,去看一下吧。
9:26总之,CIA 发现 Ellison 盗用了他们的产品名称,很气脑地找上门。
9:32Ellison 不知怎办到的,说服了 CIA,CIA 还签约成为这软体的第一个用户!
9:39于是在 1979 年,Oracle 第 2 版问世了,这是个简单但完整的
9:45SQL 实作,包含 joins(连接)、subquery(子查询)和 views(检视)。版本 1 从未发表。
9:51## Oracle 原则
9:51Ellison 顺应主要技术趋势来制定 Oracle 产品原则:
9:56第一,Oracle 资料库必须与 SQL 完全相容,
10:00他认为 IBM 最终会推出自己的 SQL 产品,
10:04当这情况发生时,SQL 将成为行业标准。
10:09有一件出名的事:Ellison 致电 IBM System R 团队,想了解他们的错误代码,他希望
10:14Oracle 能够与 IBM 正在建置的任何产品相容,
10:19但 IBM 高层将这些错误代码视为机密,这是整个专案的唯一被视为机密的部分。
10:24第二,Ellison 希望资料库与所有类型的电脑硬体相容,
10:29这要求最初来自中央情报局,他们希望这软体能够在他们
10:34所有的电脑上运作,Ellison 随之将这个要求转化为竞争优势,
10:40当时与 Unix 一起横空出世的高阶 C 程式语言帮上了忙。
10:45Oracle 第 3 版于 1983 年发布,完全以 C 编写,
10:51这意味着可以编译作为大型主机、迷你电脑、甚至微型电脑或 PC 使用。
10:581977 年底,DEC 发布了 VAX-11 迷你电脑,拥有与大型主机
11:04类似的功能,但价格低很多,获得了巨大成功,
11:08发行后 10 年内售出超过十万张。
11:12VAX-11 快速启动 BSD Unix 的流行,也为 Oracle 提供了全新的机会。
11:19实际上 DEC 为了他们自己的迷你电脑做了一个资料库软体,但却是非关联性,
11:25因此,团队移植了 Oracle 第 2 版,这原来是为旧的
11:31PDP-11 迷你电脑编写的,但与 VAX 相容,
11:35在第 3 版原生版出现之前,做了无缝接轨,这也要感谢 C 语言。
11:41结果 Oracle 资料库是这个广受欢迎的系统上
11:44唯一的 SQL 软体,VAX 在 Oracle 的崛起过程发挥了巨大作用。
11:50RSI 的程式设计师将 Oracle 软体移植到每个硬体平台:
11:53Pyramid、Sequent、Data General、Apollo 等等。
12:00有一个笑话说,Oracle 可以在所有平台上运行,但运行最好的平台是幻灯片投影机,
12:05我不知道有几个人会笑。
12:10为了进一步发展下一个 portability(可移植性)的想法,Ellison 设想了
12:14一个透过网路连接的分散式资料库,这很符合
12:19当时电脑联网的发展趋势,是最后一件小事,但很重要。
12:26## 领先优势
12:26攀上中央情报局后,Oracle 资料库很快又找到更多政府用户,
12:31包括 Wright-Patterson 空军基地和
12:35Fort Meade 等军事客户,及美国食品药物管理局 (FDA),FDA 还反过来
12:40促使药商采用 Oracle 软体,以便能和 FDA 分享资料。
12:46当时 Oracle 软体还没有那么稳定,所幸许多早期
12:52客户是内部部门和小型企业,只想查询资料获取内容,
12:58他们不需要 IMS,不需要太多功能,SQL 的可读性对他们来说已经足够,
13:05这是在正确的时间为正确的客户提供正确的产品。
13:09在接下来的十年里,RSI 这家公司每年都翻倍成长。1982 年,
13:14他们将公司名称改为 Oracle Systems,反映了旗舰产品的受欢迎程度。
13:21## Ingres 商业化
13:21到 1978 年底、1979 年,Ingres 已有大约 300 人使用,基本上免费,
13:28依授权使用,只需签署 20 页的授权同意书,
13:32并付 75 美元即可获得一盘包含原始码的大磁带。
13:38根据该授权同意书,任何人都可以使用,
13:41但不能用于商业活动。据说缅因州的一个小镇用它来计票。
13:46后来出现了一些正经的客户,想用它来做正经事。1977 年,
13:53纽约电话公司(New York Telephone Company)采用 Ingres 来储存曼哈顿电话资讯,
14:00从那时起,Ingres 团队才真正开始了解客服的意义。
14:061978 年,亚利桑那州立大学想使用 Ingres 来保存
14:1140,000 名学生的记录,愿意采用 Unix、愿意处理那些
14:16奇怪的所有权问题,但在发现 COBOL 没有 Unix 版本时
14:20停手了,毕竟他们广泛使用 COBOL 语言。
14:25这个惨痛的事件给了一个教训,Ingres 是款很棒的产品,但,
14:30引用我之前的 Unix 影片中的某人所说:它必得是门生意。
14:37约莫那时,Larry Ellison 到处跟人说
14:40Oracle 是有史以来最伟大的东西,而且比其他东西快十倍,
14:45所以 Ingres 团队取得一套 Oracle 资料库进行
14:48比较测试,发现 Ingres 执行许多查询的速度比 Oracle 快,
14:54这让他们决定创办一家公司。
14:571979 年,Berkeley 教职员 Larry Rowe 加入了该团队,
15:02着眼于将 Ingres 商业化。
15:05Wong、Stonebraker 和 Rowe 三人招募了第四位联合创始人负责销售工作,并于 1980 年
15:12以一部分来自着名的 Sutter Hill Ventures 公司的资金创办了 Relational Technology Inc。
15:19## 其他公司
15:19Ingres 是进入该市场最着名的关联式资料库新创公司,
15:23但不是唯一一家。我们应该提到的两个名字是 Informix 和 Sybase。
15:29Informix 由另一位 UC Berkeley 校友 Roger Sippl 于 1980 年创立。
15:35他早期在 Bechtel 建筑公司工作,得使用惠普的
15:39资料库软体,很讨厌它,非常糟糕的查询语言,限制非常多。
15:45他偶然看到 Codd 的论文,更确切地说,是 Codd 的弟子 Chris Date 写的书,
15:52这些书显然更具可读性。Sippl 是个老实人,不理解 Codd 的早期论文。
15:57Sippl 意识到每个企业都需要一个资料库软体,在多用户的
16:02Unix 机器上执行,于是他成立了一家公司,资金是
16:08经由将公司 10% 的股份出售给前女友筹来的 2 万美元。真是个好女孩。他们后来结婚,育有三子。
16:15这个故事的启示是什么?女生喜欢资料库。
16:19好吧。Informix 这个名称源于「Information on Unix」,
16:25没有使用 SQL 作为资料查询语言,而是使用专有语言 Informer,
16:29这会在以后会形成障碍。
16:33接下来谈 Sybase,是稍后由 Mark Hoffman 和 Bob Epstein 于 1984 年
16:39在 Bob 位于 Berkeley 的家后门廊创立,他们想为处理
16:43高频交易的高效能电脑建立资料库软体,
16:49当他们终于建立 Sybase SQL 软体时,
16:53电脑已经变得更快,快到 Sybase 可以直接在配备
16:58强大微处理器(例如 Intel、Motorola 或 Sun 的微处理器)的通用电脑上运作。
17:04因此 Sybase SQL Server 将目标瞄准了 Sun Microsystems 的网路工作站,
17:09这让他们在 1980 年代中期,和华尔街等等金融公司有大量交易,
17:13而随着 Sun 系统高速飞向... Sun(太阳)。
17:20这后来也引起了微软的兴趣,Bill Gates 拿出巨额资金,
17:25达成了一项利润丰厚的 6 年期授权协议,将 Sybase SQL 转变为 Microsoft SQL Server。
17:33## IBM 进入市场 当这一切的发生的同时,
17:34每个人都知道巨人 IBM 在 San Jose 有一个 System R 专案。
17:40但 IBM 会发行这个软体吗?他们还真发行了。这要追溯到一家名为 National CSS 的分时系统软体公司。
17:471975 年,他们开发、发布了 NOMAD 资料库产品,这个软体是
17:52直接受到 Codd 论文影响,通常被称为
17:56第一个商业关系资料库软体,但实际上有多么「关联性」,很难说。
18:03National CSS 将 NOMAD 移植到 IBM 的单处理器大型主机上运行,
18:09并被多家大客户采用,他们非常喜欢这个软体,并且频繁使用。
18:15然而 NOMAD 并不是为 IBM 更新的多处理器大型主机编写的,
18:20而是为了较旧的单处理器主机,后者无法处理大笔的 NOMAD 查询。
18:27结果两个超大客户:美国银行、
18:30和旧金山的雪佛龙放弃了 IBM,转而使用 Amdahl 大型主机。
18:36发生这么大的事,消息直接传到执行长
18:39Frank Cary 那。他们让他知道有这种新的关联式技术,
18:45Cary 问道,嘿,IBM 不是第一个提出这概念的吗?
18:49他们说是,当下他决定将这个技术纳入产品线。
18:55## IBM 向关联式迈进
18:57IBM 多花了两年时间才推出了第一个关联式产品,
19:01此时,IBM 组织分为三个硬体组和作业系统,
19:04最大且最重要的组是
19:08System/370 和 System/390 大型主机的多虚拟储存系统 MVS(Multiple Virtual Storage)。
19:14该作业系统包含 IMS,
19:17IBM 的另一款大型资料库产品。为 MVS 建立关联性资料库产品、
19:23并让客户了解这产品与 IMS 的差异是很棘手的。
19:29因此,IBM 的第一个关联式资料库产品
19:31(称为 SQL/DS)是在两个较小的作业系统上运行:DOS/VSE 和 VM/CMS,
19:38通常被中型企业用来进行交易处理。
19:45SQL/DS 于 1981 年首次进入市场,随后旗舰版
19:51MVS 作业系统所用的旗舰版关联式资料库 DB2 在两年后、
19:551983 年发行。两个版本在一开始都卖不好,
20:01但 IBM 不断推陈出新,1986 年初发布的 DB2 第二版获得了更好的关注。
20:10## SQL 胜利
20:10IBM 的参战并没有一举消灭新兴的关联式软体资料库产业。
20:151984 年,IBM 的 IMS 占整个资料库市场 50% 市占率,但仅占新销售额的 20%,
20:24换句话说,他们正逐渐败给关联式,他们必须有所反应,这是个防御性举动:
20:31IBM 加入 SQL 战局,验证了 Ellison 让 Oracle 资料库
20:35与 SQL 相容的决定。Ingres 和 Informix 使用
20:40自己的资料查询语言:QUEL 和 Informer,
20:45像 fetch 一样没发生,它们因与 IBM(即 SQL)不相容,
20:50而陷入困境。这时 Oracle 已抢先进入市场。
20:571986 年 3 月,Oracle 股票上市,关联式资料库已将他们变为
21:02营收超过 1 亿美元的软体巨头。由于 Oracle 很大程度是自食其力起家,
21:08Ellison 等联合创始人持有大部分股份并变得非常富有。
21:14## 结论 IBM 创建了关联式资料模型,
21:16本应该为 IBM 自己带来其他人无法得到的声望和荣耀,
21:20但当时 IBM 的高阶主管仍然是硬体人员,对他们来说,
21:25软体的存在只是为了帮助他们销售更多机器,
21:28觉悟时已经太晚,他们没有看到把 DB2 移植到非 IBM 机器
21:34(例如 DEC 的机器等等)的价值。Oracle 和其他新创公司做到了,他们像喝醉酒的兔子一样
21:41疯狂移植,抢攻市占的领先优势,让 IBM 无法撼动。
21:47短短十年里,关联式模型资料库从学术论文中的疯狂想法,
21:51发展成为一个由巨头和新创组成的价值数百万美元的产业,
21:59只要市场不断成长,一切都欣欣向荣。但这种情况不会永远持续下去,
22:05软体资料库产业巨头间的冲突一触即发。