我正在寻找关于Mumps全局实现的详细定义/讨论。有一份名为"MUMPS全球化及其实施"的文件,但我一直找不到任何订购方式,更不用说访问数字副本了。(75页)
总的来说,我试图找到一个关于Mumps数据库内部的深入讨论。
看看Frank Brown的这篇论文,Mumps微型计算机系统的统一本地、全局和例程设计。Brown博士是COMP Consultants Standard MUMPS全球系统的设计师。我是8086程序集中的实现者!是的,早在1981年。
它本质上是一个带有压缩密钥的简单B树。
我认为不同的MUMPS实现之间的数据库内部结构会有很大的不同。所以,我认为你最好看看它是如何在开源MUMPS实现中完成的:
- GT.M
- 腮腺炎V1
- 流行性腮腺炎
- GUMP/FreeM
我不太确定你在追求什么。Mumps全局只是一个稀疏的多维数组。程序员可以自由地执行他们认为合适的数据库策略。例如,客户数据库可以实现为:
^CUSTOMER(custnum,"NAME")=name
^CUSTOMER(custNum,"ADDRESS")=address
^CUSTOMER(CustNum,"PHONE")=phone
或者,客户数据库可以实现为:
^CUSTOMER(custNum)=name|address|phoneNum
在这里,我在客户记录中使用了管道字符"|"作为分隔符。在大多数流行性腮腺炎实现中,记录字符串的长度被限制为32k。
从关系的意义上讲,CUSTOMER全局可以被认为是一个表,其中custNum是键,name、address和phone是列。
订单表可以使用类似的方案:
^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在内的各种策略中使用流行性腮腺炎。
同意前面的回答;问题指向了供应商认为专有的实现细节。我们可以深入了解开源/历史版本,但Cache和当前版本在进入现代扩展功能时会有所不同。