我正在寻找Mumps全局实现的详细定义/讨论。有一个标题为“MUMPS Globals及其实现”的文档,但我找不到任何订购方式,更不用说访问数字副本了。 (它印在75年)
总的来说,我试图深入讨论腮腺炎的数据库内部。
答案 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和当前版本在进入现代扩展功能时会有所偏差。