你从未听说过的最重要的数据库,人类登月计划的功臣
作者:Sinclair Target
編譯:碼農(nóng)翻身
原文:
https://twobithistory.org/2017/10/07/the-most-important-database.html
1962年,肯尼迪總統(tǒng)向美國人發(fā)起挑戰(zhàn),這十年結(jié)束前能把人送往月球,而一個英勇的工程計劃將此推上頂峰,即尼爾·阿姆斯特朗邁出了探索月球表面的第一步。?
這一開拓性嘗試可謂是碩果累累,清晰可見而又令人振奮——新型宇宙飛船,嶄新太空服,月球車等等。然而阿波羅計劃龐雜多樣,不得不發(fā)明新技術(shù),IBM的信息管理系統(tǒng)(IMS)就是這些技術(shù)之一。?
IMS是一個數(shù)據(jù)庫管理系統(tǒng),NASA(美國國家航空航天局)需要這樣的系統(tǒng)來追蹤了解所有建造土星五號運載火箭的部件,因為足足有兩百萬個零件,這肯定是一個巨大的挑戰(zhàn)。 ?
1965年,NASA命IBM和北美航空公司以及卡特彼勒公司展開合作共建數(shù)據(jù)庫。到1968年,IBM已在NASA安裝有IMS的工作版本,盡管當(dāng)時稱其為ICS/DL/I,即信息控制系統(tǒng)和數(shù)據(jù)語言/接口。
兩年后,IBM將ICS/DL/I重塑為“IMS”的形象,并開始出售給其他客戶。這是最早的商業(yè)化的數(shù)據(jù)庫管理系統(tǒng)之一。?
不可思議的是,IMS今天仍在使用,而且使用范圍可不小,銀行,保險公司,醫(yī)院以及政府機(jī)構(gòu)仍利用IMS執(zhí)行各種各樣的艱巨任務(wù)。超過95%的財富1000強(qiáng)公司使用IMS ,而美國五大銀行也是如此。
不管何時從ATM中取錢,你有極大概率在交易過程中與IMS產(chǎn)生聯(lián)系。在這個世界上,雖然IMS是使人“憎厭的”、1970年關(guān)系數(shù)據(jù)庫發(fā)明之前的那一時代的遺留物,但仍然是負(fù)責(zé)重要數(shù)據(jù)的數(shù)據(jù)庫。?
IMS基于層次模型工作,這意味著IMS不會將數(shù)據(jù)視為可以Join的二維表,而是將數(shù)據(jù)視為樹。?
舉個例子,假設(shè)你要存儲銀行客戶的信息。你可能有一種類型的記錄來表示客戶(Customer),另一種類型的記錄來表示該客戶的帳戶(Account)。?
關(guān)系數(shù)據(jù)庫中每個表都有列,在層次數(shù)據(jù)庫中,這些記錄將有不同的字段; 例如給每個客戶提供名字字段,姓氏字段和城市字段。 ?
然后,我們必須決定是首先查找Customer,然后查詢有關(guān)該客戶的Account信息,或者反過來。假設(shè)我們決定首先訪問Customer,那么將使我們的Account成為Customer的子項。如圖所示,我們的數(shù)據(jù)庫模型看起來像這樣:
實際的數(shù)據(jù)可能如下所示:?
每個父記錄都包含指向其子節(jié)點的指針,這意味著我們可以從根節(jié)點向下移動。(實際上,每個父記錄基本上只存儲一個指向第一個子節(jié)點的指針。子節(jié)點們包含指向其他子節(jié)點的指針。這確保了記錄的大小不會隨著子節(jié)點的數(shù)量而變化。) ?
(碼農(nóng)翻身注:圖中的箭頭并不是“指針”,而是表達(dá)父子關(guān)系)?
只要我們以第一次構(gòu)建數(shù)據(jù)庫時預(yù)期的方式訪問數(shù)據(jù)(先訪問Customer,再訪問Account),就可以非常快速地進(jìn)行數(shù)據(jù)訪問。?根據(jù)IBM的說法,IMS實例每秒可處理超過100,000個事務(wù),這可能是IMS仍在使用的主要原因,特別是在銀行。?
然而,缺點是我們失去了很多靈活性。 如果我們想要以未經(jīng)預(yù)設(shè)的方式訪問數(shù)據(jù),可能會遭遇困難,比如,用戶給出了一個Account Number, 然后想更新自己的地址(在Customer類型當(dāng)中),怎么辦呢? 所有的訪問都是從樹的根部(即Customer)開始,這個時候想要找到Account Number的記錄,代價是非常高的。?
一種解決辦法是引入使用重復(fù)的數(shù)據(jù),比如新建一個層次模型,這個模型的根是Account,然后把Cutomer作為子節(jié)點。 ?
正是這種不靈活性和信息重復(fù)的問題促使E. F. Codd(埃德加·弗蘭克·科德)在1970年的論文“大型共享數(shù)據(jù)庫的數(shù)據(jù)關(guān)系模型”中提出了關(guān)系模型。使用這種模型,用戶就不必關(guān)心數(shù)據(jù)的具體存儲方式。?
從某種意義上看,分層模型是一種自下而上的模型,是對具體現(xiàn)實的表示。而關(guān)系模型是基于關(guān)系代數(shù)的抽象模型,并且是自上而下的,因為數(shù)據(jù)存儲方案可以是任意的,只要它適應(yīng)模型。 ?
不像MySQL,IMS并不是你可以自行下載并在計算機(jī)上隨心使用的東西。首先,IMS不是免費的,因此你必須從IBM購買它。但更大的問題是IMS只能在像IBM z13這樣的IBM大型機(jī)上運行,這是很遺憾的,因為嘗試IMS將是一件樂事,還能確切了解到它與MySQL之類的區(qū)別。?
但即使沒有這個機(jī)會,想到軟件系統(tǒng)以我們意料之外或尚不習(xí)慣的方式工作,也很有趣。特別有趣的是,盡管這些系統(tǒng)看起來不為人知,實際上卻是當(dāng)?shù)蒯t(yī)院,整個金融部門甚至聯(lián)邦政府的支柱。
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的你从未听说过的最重要的数据库,人类登月计划的功臣的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实用技巧:教你如何在没有网络的Linux
- 下一篇: 基于 Netty 如何实现高性能的 HT