文章 cheng yu · 1 小时 前 4m read

从 The Roots 到 InterSystems

这是对Caché问世前历史的一种相当个人化的看法。
这绝非意在与前文中讨论的迈克·卡多(Mike Kadow)所著的那些优秀书籍相抗衡。
我们的经历各不相同,因此本文旨在从另一个角度来审视过去。

整个故事始于 1966 年,地点在MGH(马萨诸塞州总医院),当时一台序列号为 103 的PDP-7
,该机配备 8K 内存(18 位字)[相当于今天的 18K 字节],当时作为备用系统使用。

“序列号103——当时位于现已拆除的塞耶大楼(Thayer Building)地下室,地址为
,目前 [2014年]该地是MGH考克斯癌症中心(Cox Cancer Center)的所在地。”
“尼尔·帕帕拉多(Neil Papparlardo)和柯特·马布尔(Curt Marble)在奥克托·巴内特(Octo Barnett)的指导下,开发并发布了
——这是该机器上的首款软件。” 
他们将其命名为MUMPS。(来源)


PDP-7

该语言本身与旧式的Basic语言相当接近。
但与其他编程语言相比,它有着显著的改进:

  • 其核心理念在于无需处理文件系统即可存储和检索持久数据。与当时其他系统相比,这是一次巨大的飞跃——在那些系统中,存储和读取持久数据往往会占用30%以上的可用内存,且无法预知排序、索引等操作会带来何种影响……
  • 不再有强类型,也不再有由名称强加的数据类型(如ALGOL、FORTRAN等)——这些曾是形式错误和数据转换问题的无尽根源。
  • 动态(稀疏)数组,没有固定的结构,也不会在内存中预先分配半空的空间
  • 使用可变长度的结构化索引(下标)对持久化数据进行索引,从而轻松实现排序、分组、子分组等操作

不妨将其与 COBOL、FORTRAN 或 PL/1 中的旧代码进行比较,以估算这场革命的规模。
这款新软件随着硬件的飞速发展而不断演进,最终发展到 PDP-11 阶段
,并最终被命名为 MUMPS 4b。

1978年是值得铭记的一年:
- Terry Ragon 创立了InterSystems
- DEC推出了首款VAX-11集群(在卡内基梅隆大学?)
- DEC完成了DSM-11(Digital Standard Mumps)的开发:
   除了遵循这一相对较新的标准外,它还拥有新的全局模块
   ,该模块极大地提升了存储性能。
   其性能轻松地以数量级的优势超越了当时任何其他名为“数据库”的产品。
   该全局模块的作者是一位拥有国际经验的杰出工程师:特里·拉贡(Terry Ragon)。
- 我本人也是在1978年加入DEC的,担任DSM-11的销售与支持工程师
   并在梅纳德举行的首次技术支持培训中结识了特里。

当时的DEC正因新推出的VAX-11和VAX-Cluster而意气风发。
这款高性能的新数据库却被忽视了,其强大功能也完全被误解了。
软件开发人员提出的“让DSM原生运行在VAX上以充分发挥新系统优势”的所有请求均被无视。

这种对客户需求的长期漠视,促使我的一个客户向我发出邀请:
“如果他们不做,就加入我们,由我们来做!”[你有多少次收到过这样的邀请,要从零开始编写一个操作系统?]
我实在无法抗拒,于是加入了团队,我们从零开始,在配置极简的 VAX-750 上将其开发出来。
该操作系统被命名为 VISOS,其生命周期与受支持的 VAX 机型存在的时间一样长。

一段时间后,DEC推出了DSM,作为构建在VMS之上的分层产品。
起初,其性能受底层RMS的制约,未能体现处理能力的提升。  
这已经超出了我的工作范围,我也不再关心它了。
多年后,在我看来,DEC做得最好的事情是:他们将这款不受欢迎的产品DSM卖给了InterSystems。
没过多久,他们自己也被收购了。

20 年后,当我加入 InterSystems 时,我发现 Caché 中还有许多我亲自实现过的细节。
因此,我享受到了“回家”般的温暖感觉。

如今的 Caché 虽然与所有前身相去甚远,但仍然保持源代码兼容。
Globals 的强大功能依然存在。可能只有极少数情况下,你
无法超越竞争对手的数据库。在众多例子中,我最喜欢的一个是:
       欧洲航天局(ESA)负责的GAIA项目

这显然是对技术史的一种相当个人化的视角,也是我个人故事的一部分。
如果您有任何疑问或认为需要纠正我的观点,欢迎提出。
身处维也纳(奥地利),我总有一种感觉,仿佛是在
剑桥、梅纳德、波士顿的决策,仿佛身处银河系边缘,遥遥远远地观望。 wink