我正在寻找 Mumps 全局实现的详细定义/讨论。有一个名为“MUMPS Globals 及其实施”的文档,但我找不到任何订购它的方法,更不用说访问数字副本了。(它是在 75 年印刷的)
一般来说,我试图找到对 Mumps 数据库内部结构的深入讨论。
我正在寻找 Mumps 全局实现的详细定义/讨论。有一个名为“MUMPS Globals 及其实施”的文档,但我找不到任何订购它的方法,更不用说访问数字副本了。(它是在 75 年印刷的)
一般来说,我试图找到对 Mumps 数据库内部结构的深入讨论。
看一看Frank Brown的这篇论文,腮腺炎微型计算机系统的统一本地、全局和常规设计。Brown 博士是 COMP Consultants Standard MUMPS 全球系统的设计师。我是执行者,在 8086 汇编中!是的,早在 1981 年。
它本质上是一个带有压缩键的简单B 树。
我假设数据库内部结构在各种 MUMPS 实现之间会有很大差异。所以,我认为你最好的选择是看看它是如何在开源 MUMPS 实现中完成的:
我不确定你在追求什么。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
使用的策略取决于开发人员,它非常灵活和强大。
除了您上面引用的文档之外,我还推荐其他一些文档。对于全局变量及其含义的一些基础知识,我建议:
对于更高级的主题,我建议:
这两份文件均由 Rob Tweed 撰写,他是M/Gateway Developments公司的一名腮腺炎传道者。第一个文档提供了有关腮腺炎全局变量的良好背景,第二个文档介绍了在包括 noSQL 在内的各种策略中使用它们。
同意前面的回答;问题指向供应商认为专有的实施细节。对开源/历史版本有洞察力,但缓存和当前版本会随着它们的现代扩展能力而偏离。