我在哪里可以找到Mumps全局变量的实现细节?

时间:2012-09-25 23:02:02

标签: mumps

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

总的来说,我试图深入讨论腮腺炎的数据库内部。

4 个答案:

答案 0 :(得分:3)

看看Frank Brown撰写的这篇文章A Unified Local, Global and Routine Design for Mumps Micro-Computer System。布朗博士是COMP Consultants标准MUMPS全球系统的设计者。我是8086大会的实施者!是的,早在1981年。

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

^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

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

除了您在上面引用的文档之外,我还会推荐其他一些文档。关于全局变量的一些基础知识以及它们是什么,我建议:

Extreme Database Programming with MUMPS globals

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

A Universal NoSQL Engine, Using a Tried and Tested Technology

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

答案 3 :(得分:0)

同意之前的回答;问题是指供应商认为是专有的实施细节。对开源/历史版本有深入了解,但Cache和当前版本在进入现代扩展功能时会有所偏差。