Mumps 语言基础和历史

几句话来说下 Mumps:Mumps 是一个程序语言被设计用来读取文本数据,主要是病人的病历数据等等,有点类似我们现在用的 NoSQL 数据库。

MongoDB 有多块,Mumps 设计的数据库就有多快。

主要原因就是麻省总医院在 1960年代中期的时候拿到了一个小型机 PDP-11,上面又没有操作系统,又没有编程语言,又没有数据库,那么多病历总要管起来不。

这样他们就设计了一个程序语言叫做 Mumps,然后用这个语言构建了一套数据库系统,并且在 MGH 内部开始使用了。

为什么不用关系数据库

IBM 的 System R 理论是在 1974 年发布的,Oracle 发布的基于 System R 论文设计的表数据库是在 1979,这里差了 10 多年了,所以 Mumps 设计的数据库在 System R 论文发布之前,因此就没有表的概念了。

一些裹脚布的文字说明

下面就是 Mumps 的历史和怎么来的,以及为什么有这么设计的一些裹脚布的说明,不看也行。

看看也是情怀,可以了解下当时的大型机的概念。

Mumps(麻省总医院实用程序多程序设计系统)是一种通用编程语言环境,它通过程序级访问来提供 ACID(原子的、一致的、隔离的和持久的)数据库访问,以访问组织为树的磁盘驻留数据,这些数据也可以被视为 spa/s 下标数组和变量。

Mumps 数据库允许无模式、键值多维数组从 1966 年开始,Mumps(也称为 M)由麻省总医院 (MGH) 的 Octo Bamett 实验室的 Neil Pappalardo 等人在 PDP-7 上开发,使用同一体系架构的 Unix 也被实现了。

在最开始的时候, Mumps 的体验非常积极,因此很快的就被移植到许多其他架构,包括 PDP-11、VAX、Data General、Prime,最终被应用到了 Intel x86 系统上。

因此,很快 Mumps 成为了在计算机健康科学上早期应用的基础和事实上的标准。

当最初设计 Mumps 的时候,几乎没有通用的数据库系统。有关“数据库” 这个词的定义也可以追溯到这个时期。当时此类系统主要是特定于特定应用程序的实现,既不可移植也不可扩展。

通用数据库设计的走起发展是 GE / Honeywell 最初设计的 IDS(Integrated Data Store)整合数据存储。这种类型的数据库存储开发于上个世纪的 60 年代中期。

基于通用数据库的使用是CODASYL是美国数据系统语言协会(Conference on Data System Language)的英文缩写,该协会成立于1957年,主要目的是为了开发一种用于创建商业应用的通用语言。1959年5月28日该协会召开了首次会议,就语言开发进行讨论。这个语言实际上就是Cobol语言。

基于网络的数据库模型非常复杂,在但是也只有非常少的软件供应商来进行实施,这些产品通常被用在大型上面,例如 GE / Honeywell 的 IDS / 2、Cullinet 的集成数据库管理系统(IDMS),Univac 的 DMS-1100 和 Digital Equipment Corporations 基于 DEC-10 的 DBMS32。

大约在同一时间,IBM 的 IMS(信息管理系统)是与 NASA 阿波罗计划一同开发的。 它于 1968 年首次投入使用,运行在 IBM 360 大型机上。

IMS 与 Mump 一样是一种分层结构数据库。

基于表的关系数据库模型最初由 E.F. Codd 于 1970 年提出,但直到 1974 年 IBM 才开始开发 System R,这是第一个使用该模型的系统 ,作为一个研究项目。

1979 年 Oracle 发布了第一个商用关系数据库系统。

在 20 世纪 60 年代后期,微型计算机虽然价格昂贵,但越来越广泛使用,但它们仍然主要局限于专用的,主要是实验室应用程序。

这些系统上可用的操作系统是原始的,而且大部分是单用户的。在许多情况下,用户都是打开电影开关后,安装引导代码并且手动加载编译器,从纸质或磁带载入程序后运行

DEC 公司的 RSX-11 是一个基于 PDP-11 的第一个多用户系统,是在 1972 年推向市场的。

RSTS/E是第一个使用 Basic 语言设计的第一分时系统系统,于 1970 年实现。这个计算机只能支持一小部分的编程语言,例如 FORTRAN、BASIC 和汇编语言。

虽然 Unix 操作系统在这个时候已经存在了,但是一直到 1984 年后才逐步在 AT&T 公司外部逐步流行开来。

正是基于但是的计算机使用条件的限制,在 1966 年,DEC 的 PDP-7 被送到麻省总医院(MGH)的时候几乎没有操作系统,没有可用的软件,数据库就别想了。

因此,MGH 的人们就从头开始,设计了一个 Mumps 语言,Mumps 不仅仅是一个计算机语言,同时还是一个数据库。

对于他们的数据库设计,他们选择了分层模型,因为这与病历的树结构性质非常匹配。

为了用语言表示数据库树,他们决定使用数组引用,其中每个连续的数组索引都是从数组的根到中间节点和终端节点的路径描述的一部分。他们称这些磁盘驻留结构为全局阵列。

虽然在那些日子里,Mumps 是一套自己的独立操作系统,但是到今天,Mumps 显然已经没有这个必要了,Mumps 在当前的环境中都会基于操作系统来运行的,这个操作系统可以是 Unix、Linux、OS/X 和 Windows 。

早期的 Mumps 操作系统将早期小型计算机中可用的非常有限的内存划分为小分区,每个分区分配给一个单独的用户系统通常以循环协议分配和管理内存分区并向每个用户分区授予时间片。 Mump 操作系统本身提供了 Mumps 语言解释器( Mumps 没有被编译) 、集中式 I/O 和通过集中式全局阵列文件管理器管理对分层数据库的访问。

早期微型计算机的内存有限,有时只有几千个字符。

Mumps 程序作为源代码而不是编译后的二进制文件加载到内存中。这样做的原因是人们发现载入编译后的程序比使用源代码大很多。

特别是如果源代码使用缩减缩写的大小虽然解释的程序运行速度较慢,但由于不需要分页而节省的时间弥补了损失的时间导入编译后的二进制程序最初的时候是使用磁带完成的,这样会导致 I/O 的时间远远大于程序编译运行的时间。

同时,与大多数的数据应用程序都一样,大量的时间被用于等待数据的访问。

还有一个好处就是小的源代码模块的使用不占用太多的存储空间,要知道在当时存储空间是非常昂贵的。

直到现在,我们还可以看到因为 Mumps 被设计为针对小内存的机器,所以程序员可能会倾向于过度简化他们的代码,导致的问题就是可读性的下降。

尽管针对当前的计算机硬件水平,这些要求已经没有意义了。

Mumps 由于在当时情况下的简单,低成本和易用性,很快就被很多医院使用了。例如,COSTAR(计算机存储的门诊记录)是一种医疗记录、财务管理和报告系统,于 20 世纪 70 年代中期开发用于门诊护理设置,并在全球范围内广泛使用。

如今,Mumps 程序广泛应用于金融和临床应用。

如果您看过医生、在医院看过病或使用过 ATM 机,您的数据可能已由 Mumps 程序处理过。

Mumps 程序是美国退伍军人管理局的基础计算机化医疗记录系统 Vista(退伍军人健康信息系统和技术架构),是世界上同类系统中最大的。 Vista 是 80 种不同的软件子系统的集合,支持美国最大的医疗记录系统。它支持超过 800 万退伍军人的医疗记录,被 163 家医院、800 多家诊所和 135 家疗养院的 180,000 名医务人员使用。

Mumps 被用在很多医疗健康有关的系统中,包括 MEDITECH、GE Healthcare(前身为 IDX Systems 和 Centricity)、Sunquest InformationSystems、DASA、Quest Diagnostics 和 Dynacare 等

很多医疗机构也会使用 Mumps 来用于处理他们的病历系统,其中包括:Kaiser Permanente、Cleveland Clinic、Johns Hopkins Medicine Hospitals、UCLA Health、Texas Health Resources、Massachusetts GeneralHospital,同时也有不少金融机构在使用 Mumps,包括有 Mount Sinai Health System 和 Duke University HealthSystem 在金融机构中,它被 Ameritrade、英格兰银行和巴克莱银行。

Mumps 通过提供保持活力 除了顺序和直接文件访问之外,Mumps 还作为语言的一个组成部分实现了分层和多维数据库范例。

当被视为树时,数据节点可以作为路径描述来寻址,这种方式对于新手程序员来说很容易在相对较短的时间内掌握;或者,树可以被视为有效无限大小的稀疏 n 维矩阵 Mumps 支持内置的字符串操作运算符和为程序员提供访问有效方法以完成复杂字符串操作和模式匹配操作的功能 Mumps 在廉价的商品服务器上运行,并且可以随着需求的增长轻松扩展。性能和吞吐量 Mumps 无需数据库管理员即可轻松管理 Mumps 数据库符合 ACID(原子性、一致性、隔离性、持久性)。