3

我正在寻找 Mumps 全局实现的详细定义/讨论。有一个名为“MUMPS Globals 及其实施”的文档,但我找不到任何订购它的方法,更不用说访问数字副本了。(它是在 75 年印刷的)

一般来说,我试图找到对 Mumps 数据库内部结构的深入讨论。

4

4 回答 4

3

看一看Frank Brown的这篇论文,腮腺炎微型计算机系统的统一本地、全局和常规设计。Brown 博士是 COMP Consultants Standard MUMPS 全球系统的设计师。我是执行者,在 8086 汇编中!是的,早在 1981 年。

它本质上是一个带有压缩键的简单B 树。

于 2013-01-23T16:45:06.497 回答
1

我假设数据库内部结构在各种 MUMPS 实现之间会有很大差异。所以,我认为你最好的选择是看看它是如何在开源 MUMPS 实现中完成的:

于 2012-09-27T15:38:17.420 回答
1

我不确定你在追求什么。Mumps 全局变量只是一个稀疏的多维数组。程序员可以自由地实施他们认为合适的数据库策略。例如,客户数据库可以实现为:

^CUSTOMER(custnum,"NAME")=name
^CUSTOMER(custNum,"ADDRESS")=address
^CUSTOMER(CustNum,"PHONE")=phone

或者,客户数据库可以实现为:

^CUSTOMER(custNum)=name|address|phoneNum

在这里,我使用了竖线字符“|” 作为客户记录中的分隔符。在大多数 mumps 实现中,记录字符串长度限制为 32k。

在关系意义上,可以将 CUSTOMER 全局视为一个表,其中 custNum 为键,名称、地址和电话为列。

类似的方案可用于订单表:

^ORDERS(orderNum)=date|invoiceNum|totalPrice

要将客户与订单相关联,我们可以使用单独的全局:

^custOrders(custNum,orderNum)=""

或者将它们添加到客户全局:

^CUSTOMER(custNum)=name|address|phone
^CUSTOMER(custNum,orderNum)=""

甚至将这两个表合并为一个全局表:

^CUSTOMER(custNum)=name|address|phone
^CUSTOMER(custNum,orderNum)=date|invoiceNum|totalPrice

使用的策略取决于开发人员,它非常灵活和强大。

除了您上面引用的文档之外,我还推荐其他一些文档。对于全局变量及其含义的一些基础知识,我建议:

使用 MUMPS 全局变量进行极限数据库编程

对于更高级的主题,我建议:

通用 NoSQL 引擎,使用久经考验的技术

这两份文件均由 Rob Tweed 撰写,他是M/Gateway Developments公司的一名腮腺炎传道者。第一个文档提供了有关腮腺炎全局变量的良好背景,第二个文档介绍了在包括 noSQL 在内的各种策略中使用它们。

于 2012-09-27T17:06:16.663 回答
0

同意前面的回答;问题指向供应商认为专有的实施细节。对开源/历史版本有洞察力,但缓存和当前版本会随着它们的现代扩展能力而偏离。

于 2012-12-13T21:00:51.910 回答