關(guān)于MUMPS的詳細(xì)解析
大?。?/span>0.6 MB 人氣: 2017-10-12 需要積分:1
標(biāo)簽:mumps(1852)
【編者按】是否聽說過有這樣一款數(shù)據(jù)庫,它可以完成RDBMS和Hadoop能做的一切,如今在全世界范圍內(nèi)廣泛采用,并已有50年歷史?從未聽說過MUMPS?看看下面這些驚人的事實(shí)吧。沒聽過MUMPS之名的人可不止你而已。筆者也是聽一個同事提到,并在他的督促下做了一點(diǎn)研究。研究結(jié)果卻令人震驚。
MUMPS誕生于1966年,旨在解決醫(yī)療保健行業(yè)的多用戶系統(tǒng)其中的大數(shù)據(jù)流問題。它的出現(xiàn)早于RDBMS,但卻包含了一切NoSQL的功能,如大規(guī)模并行處理、水平擴(kuò)容以及在商用硬件上的運(yùn)行。它很容易模擬四種類型的NoSQL數(shù)據(jù)庫(鍵值型數(shù)據(jù)庫、列式數(shù)據(jù)庫、文檔型數(shù)據(jù)庫、圖結(jié)構(gòu)數(shù)據(jù)庫)。在70、80年代,經(jīng)過修改后它可以模擬RDBMS并處理SQL查詢。由于完全與ACID兼容,部分功能與NewSQL相同。如今在各個領(lǐng)域,包括醫(yī)療保健的病患信息系統(tǒng)、銀行業(yè)、歐洲證券交易所還有旅行業(yè)等等,它都在發(fā)揮著活力與健康。
去醫(yī)院看病或使用ATM機(jī)的時候,數(shù)據(jù)很有可能就是通過基于MUMPS的系統(tǒng)來處理并存儲的。盡管到2016年,從初始設(shè)計至今,MUMPS已經(jīng)有了50年歷史,不過在醫(yī)療保健或大型金融機(jī)構(gòu)領(lǐng)域,它仍舊滿足著當(dāng)今的商業(yè)需求,幾乎沒有RDBMS或NoSQL代替的趨勢。要說MUMPS在被谷歌研究員發(fā)現(xiàn)之前,就是/曾是NoSQL也是沒錯的。
一點(diǎn)背景知識
MUMPS創(chuàng)建于1966年,多年來一直保持更新。它得名于麻省總醫(yī)院實(shí)用多程序系統(tǒng)(Massachusetts General Hospital Utility Multi-Programming System),或稱M。顧名思義,該技術(shù)最初的原始需求來自大型醫(yī)院(后來還包括銀行),以應(yīng)對高吞吐量的多用戶事務(wù)處理進(jìn)程。即便出現(xiàn)了RDBMS(還有后來的NoSQL和NewSQL),甚至到了今天,MUMPS在性能與功能上仍舊活力十足,甚至更為優(yōu)秀。
一開始,MUMPS是為了解決如何接收、存儲和處理在單個ICU病人身上、單就一天中所產(chǎn)生與聚集的大量測試數(shù)據(jù)還有其他變量數(shù)據(jù)而出現(xiàn)。變量數(shù)據(jù)包括了至少12種不同的變量,諸如體溫、心率、血氧濃度、血液酸堿度等等。生成的數(shù)據(jù)還包括:通過傳感器(電極)進(jìn)行的多項實(shí)時測量,再加上每天針對每個病人所做的多個實(shí)驗室測試。平均來講,每個病人的數(shù)據(jù)需要20名左右的醫(yī)生和醫(yī)療人員訪問,而病人數(shù)量多達(dá)幾十萬。
這很像是我們最近使用Spark和Storm解決的物聯(lián)網(wǎng)數(shù)據(jù)流問題,但在足足40到50年前就由MUMPS完全解決了。
MUMPS的各種版本
十年前,MUMPS最早的版權(quán)過期了。InterSystems Corp.以Caché之名推出了MUMPS的改進(jìn)版。還有一個版本叫做GT.M,在Linux上可用,有免費(fèi)開源許可。查找這些名字就像搜索MUMPS一樣有效。幾年前還有個活動,簡單稱其為M,因此在定義欄可以看到MUMPS/M的名字。
它是有自己語言的數(shù)據(jù)庫,還是有自己數(shù)據(jù)庫的語言呢?
這個問題就像那個經(jīng)典謎題:是巧克力上的花生醬,還是花生醬中的巧克力?但更為重要是理解:為什么MUMPS成功而有效?MUMPS兩者兼?zhèn)?。尤其它還是集成了自己的語言,而這種語言特別為訪問和操控做了優(yōu)化,這樣的一款數(shù)據(jù)庫。盡管這種語言被批評為過于古老,但現(xiàn)代用戶可將其與Python類比。
擁有“內(nèi)置”數(shù)據(jù)庫讓MUMPS對存儲有著高級別的訪問權(quán),而在其他程序或數(shù)據(jù)庫中卻沒有這樣的優(yōu)勢。這種訪問使用“變量”(鍵)與“數(shù)組”(表格)這樣的稀疏方式。默認(rèn)結(jié)構(gòu)是鍵值式(盡管MUMPS很容易被注釋為按照文檔型、列式、圖結(jié)構(gòu)數(shù)據(jù)庫,甚至RDBMS的方式),有JSON的現(xiàn)代并行庫。其結(jié)構(gòu)為無模式,數(shù)據(jù)存儲在多維分層的稀疏數(shù)組中(也被稱為鍵值節(jié)點(diǎn)、子樹或關(guān)聯(lián)存儲器)。每個數(shù)組可能有多達(dá)32個下標(biāo)或維度。天??!這聽起來就像我們剛發(fā)現(xiàn)了Hadoop的神圣起源。
其速度與效率的關(guān)鍵在于,這個數(shù)據(jù)庫是直接通過變量而不是查詢或檢索來訪問的。MUMPS語言/數(shù)據(jù)庫的一個功能就是:使用同樣的基本語法,訪問非永久性存儲器(易失性存儲器)和永久性存儲器,使得在本地(易失性)或全局(非易失性)變量中,函數(shù)都可使用。事實(shí)上,這樣提供了極高的數(shù)據(jù)訪問性能。Michael Byrne在Motherboard上撰文對此進(jìn)行了很好的解讀。
“變量(在本例中也指鍵)只在這些數(shù)組中標(biāo)出不同的存儲位置,它們在MUMPS被稱為全局變量。MUMPS系統(tǒng)可能由許多臺計算機(jī)組成,在非易失性內(nèi)存中存儲有自己的全局?jǐn)?shù)組集。因此,與C++這樣的語言所創(chuàng)建的數(shù)組不同,MUMPS的全局?jǐn)?shù)組集不止存在于程序存續(xù)期間或是計算機(jī)內(nèi)存中,還存在于服務(wù)器上,在任何指定的時間內(nèi),可通過系統(tǒng)的某臺計算機(jī)來訪問。我們稱其為持久性。”
“結(jié)果就是:MUMPS程序員可以直接接觸數(shù)據(jù)庫,而不用通過查詢的手段。這樣速度更快,不再需要查詢抽象,而是直接訪問,并允許一系列編程思想的替換。首先,作為編程人員,我可以從這些存儲的全局變量中選取一個,賦予其“children”——就是該項的一些額外屬性。因此,最終我們得出了一個列表,里面的內(nèi)容可以快速用不同的方式來描述與添加。其關(guān)系為層次化的?!?br /> 如今使用的領(lǐng)域
MUMPS因VistA——退伍軍人衛(wèi)生信息系統(tǒng)與技術(shù)架構(gòu)(Veterans Health Information Systems and Technology Architecture)而著名,這個套組十分巨大,包含80多種不同的軟件模塊,支持著美國最大的醫(yī)療系統(tǒng)。它還維護(hù)著163家醫(yī)院、800家診所和135家療養(yǎng)院的800萬份退伍軍人的電子病歷,使用者多達(dá)18萬名醫(yī)療人員。還被認(rèn)為是創(chuàng)建全國性病歷網(wǎng)絡(luò)的當(dāng)前工作模型。
印度衛(wèi)生服務(wù)國防部CHCS醫(yī)院系統(tǒng)的大部分
現(xiàn)使用MUMPS的大型醫(yī)療保健公司包括:
Care CentricAllsEpicCoventry HealthcareEMISPartners HealthCare(包括麻省總醫(yī)院)MEDITECHGE Healthcare(從前的IDX Systems and Centricity)Sunquest Information Systems許多參考實(shí)驗室,比如DASAQuest DiagnosticsDynacare
金融機(jī)構(gòu)包括:
Ameritrade,美國最大的在線交易服務(wù)商,每天處理逾120億個事務(wù)英格蘭銀行巴克萊銀行
在2010年,歐洲航天局選擇了MUMPS/Cache作為Gaia任務(wù)的后備支持,用前所未有的精度繪制銀河系的三維星圖。
優(yōu)勢
MUMPS與NoSQL是一致的,而且明顯很成熟。
在多個低成本的商業(yè)服務(wù)器上可以水平彈性擴(kuò)展。由于就是為了支持大量的數(shù)據(jù)而設(shè)計,其性能極其優(yōu)秀,遠(yuǎn)勝于RDBMS。管理起來極其簡單,基本上不需要DBA。所使用的商用硬件和開源代碼成本很低。靈活的數(shù)據(jù)建模,易于復(fù)制RDBMS、鍵值式數(shù)據(jù)庫、列式數(shù)據(jù)庫、文檔型數(shù)據(jù)庫、圖結(jié)構(gòu)數(shù)據(jù)庫的功能。易于支持SQL高級分析和商業(yè)智能。完全支持聯(lián)機(jī)事務(wù)處理,兼容ACID。
劣勢
了解人群不多。在醫(yī)療保健與金融業(yè)之外市場份額較小。相關(guān)的程序精英較少。在InterSystems之外(商業(yè)供應(yīng)商)幾乎沒有代碼庫存在。
這門技術(shù)是否需要升級?
也許有人在想,為什么不將MUMPS與Hadoop結(jié)合起來?事實(shí)上,MUMPS能夠以Hadoop的所有方式擴(kuò)展執(zhí)行。將其結(jié)合起來只會增加復(fù)雜度,在規(guī)模和性能上沒有明顯的改善。此外,還需要懂兩種系統(tǒng)的人將其保持同步。因此MUMPS這樣就好了,沒必要再結(jié)合Hadoop了。
這里有機(jī)遇嗎?
一方面,會有人在新建項目時選擇MUMPS而不是Hadoop或者RDBMS嗎?也許沒有。對MUMPS,人們欠缺足夠的了解,這方面的程序員也不多。
然而在醫(yī)療保健或金融業(yè)工作的人,特別是已經(jīng)在使用MUMPS的地方會考慮這個問題。針對LinkedIn的一個搜索發(fā)現(xiàn),整個LinkedIn只有699名MUMPS開發(fā)者,77名Cache開發(fā)者。如果有人已經(jīng)掌握了NoSQL,并想增加競爭力,這也能增加很小的一些競爭優(yōu)勢。掌握MUMPS可以享有更好的薪酬和工作保障。這里是一份優(yōu)秀的MUMPS編程教程。
?
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%
