IBM i與其他平臺(tái)有很多不同之處,其中最獨(dú)特的就是集成了DB2數(shù)據(jù)庫,專門供IBM i客戶使用。但現(xiàn)在是不是到了IBM i支持多元數(shù)據(jù)庫的時(shí)候了?
在許多方面,DB2 for i都是平臺(tái)最大的優(yōu)勢。IBM i以其交付處理能力而著稱,推動(dòng)了ERP和其他業(yè)務(wù)應(yīng)用程序的發(fā)展,DB2 for i為這些系統(tǒng)提供堅(jiān)定的動(dòng)力引擎。
理論上來講,沒有DB2 for i的IBM i服務(wù)器也是可以運(yùn)行的,例如你可能想在X86服務(wù)器上單獨(dú)運(yùn)行Oracle或SQL Server數(shù)據(jù)庫。但是這樣做,就完全失去了IBM i平臺(tái)的優(yōu)勢,更別說計(jì)算規(guī)律了。在Oracle JD Edwards和SAP Business Suite的常見異構(gòu)設(shè)置中,IBM i服務(wù)器幾乎總是為數(shù)據(jù)庫供電,而主流X86服務(wù)器及其Windows和Linux操作系統(tǒng)為應(yīng)用程序和HTTP服務(wù)器提供動(dòng)力。
這個(gè)以數(shù)據(jù)庫為中心的身份幾十年來一直服務(wù)于IBM中端平臺(tái)。DB2 for i數(shù)據(jù)庫非常成熟強(qiáng)大,支持SQL和DDS編程結(jié)構(gòu),支持ANSI SQL。更重要的是,IBM i平臺(tái)每發(fā)布一個(gè)新版本,在我看來,DB2的性能也越好。所以,我們是否需要IBM i有更多的東西?
這個(gè)問題的重點(diǎn)可能是在數(shù)據(jù)本身的性質(zhì)正在發(fā)生改變,所以存儲(chǔ)方式也需要改變。IBM首次開發(fā)AS / 400時(shí),存儲(chǔ)(主要指磁盤)相對(duì)于今天來說是昂貴的,因此公司希望將其存儲(chǔ)量減到最少。IBM的存儲(chǔ)架構(gòu)也反映了這一事實(shí),因此寫入磁盤的數(shù)據(jù)是高度精煉或結(jié)構(gòu)化的。
這對(duì)關(guān)注結(jié)構(gòu)化數(shù)據(jù)的行業(yè)提供了很多便利,關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)也得到了飛速的發(fā)展。
但是隨著時(shí)間的飛逝和存儲(chǔ)成本的降低,需要優(yōu)化數(shù)據(jù)以適應(yīng)小空間的數(shù)據(jù)越來越少。2000年左右,可擴(kuò)展標(biāo)記語言(XML)開始流行,它將通過數(shù)據(jù)自我參照(即每個(gè)數(shù)據(jù))大大地?cái)U(kuò)展了我們可以通過數(shù)據(jù)和應(yīng)用程序做的事情。XML文檔,可以用來標(biāo)記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對(duì)自己的標(biāo)記語言進(jìn)行定義的源語言。
雖然XML大大簡化了數(shù)據(jù)集成的挑戰(zhàn),但是它自身也存在很多挑戰(zhàn),其中最明顯的就是XML文檔解析慢,如果要解析成DB2 for I 所理解的格式,XLS運(yùn)行程序的處理器會(huì)耗盡。這對(duì)于重視簡單性和易用性的傳統(tǒng)RPG程序員來說,明顯是有點(diǎn)復(fù)雜。
10年前,Web 2.0革命剛剛開始時(shí),JSON開始走入了我們的視線。與XML一樣,JSON也是一種自定義的半結(jié)構(gòu)化數(shù)據(jù)格式,但是JSON比XML要快得多。
NoSQL的興起
如今JSON已經(jīng)超過XML成為了Web開發(fā)十分受歡迎的數(shù)據(jù)格式,而且還激發(fā)了新的非關(guān)系型數(shù)據(jù)庫管理系統(tǒng)的誕生——NoSQL。目前比較流行的NoSQL數(shù)據(jù)庫之一——MongoDB,它就是將數(shù)據(jù)以類似JSON的格式存儲(chǔ),名為BSON。Couchbase也是一款十分受開發(fā)人員歡迎的NoSQL數(shù)據(jù)庫,它也是以JSON格式存儲(chǔ)數(shù)據(jù)。
從DB-Engine來看,目前四大流行數(shù)據(jù)庫分別是Oracle、MySQL、SQL Server和PostgreSQL 。關(guān)系型數(shù)據(jù)庫還是占據(jù)主導(dǎo)地位,而且全球很多企業(yè)之前都部署了關(guān)系型數(shù)據(jù)庫,而且耗資數(shù)萬億美元用于開發(fā)應(yīng)用,所以關(guān)系型數(shù)據(jù)庫是不會(huì)輕易狗帶的。
但是NoSQL數(shù)據(jù)庫也在以迅猛的速度來獲得更多的市場份額,尤其是在Web和移動(dòng)應(yīng)用程序領(lǐng)域。NoSQL數(shù)據(jù)庫的巨大進(jìn)步使得開發(fā)人員在為應(yīng)用程序讀取數(shù)據(jù)時(shí)更愿意選擇NoSQL數(shù)據(jù)庫而不是關(guān)系型數(shù)據(jù)庫。NoSQL數(shù)據(jù)庫專注于存儲(chǔ)自定義數(shù)據(jù)類型,隨著時(shí)間的推移,它的優(yōu)勢會(huì)更加明顯。
當(dāng)然諸如DB2這樣的RDBMS也在發(fā)展,支持一些NoSQL功能,如水平可擴(kuò)展性、JSON支持等等。IBM早期也為i添加了對(duì)JSON的支持,但是這種支持還不完整,未來的技術(shù)更新可能會(huì)支持更多的功能。
為什么需要其他數(shù)據(jù)庫?
雖然DB2 for IBM是IBM i平臺(tái)的故事主線,但是它并不是該平臺(tái)正式支持的唯一數(shù)據(jù)庫。
差不多十年之前,IBM正式支持了一個(gè)由Monty Widenius創(chuàng)建的開源關(guān)系數(shù)據(jù)庫,該數(shù)據(jù)庫主要用于支持PHP應(yīng)用程序。而現(xiàn)在隨著Oracle對(duì)MySQL的一些自私作為,再加上2001年IBM i平臺(tái)放棄了對(duì)于MySQL的支持,MariaDB正在全球慢慢取代MySQL。
MariaDB和MySQL都是關(guān)系數(shù)據(jù)庫,他們有PHP,Perl和Python開發(fā)社區(qū)的支持,所以IBM i平臺(tái)上以這些語言編寫的程序都會(huì)得到簡化,但是它們不提供與DB2 for i完全不同的數(shù)據(jù)存儲(chǔ)。
MariaDB和MySQL是平臺(tái)上替代數(shù)據(jù)庫的最佳示例,除了它們還有一些其它項(xiàng)目。其中之一是由IBM i開發(fā)人員Christopher Burns牽頭的Inuendo項(xiàng)目。
Inuendo是IBM i的關(guān)聯(lián)數(shù)據(jù)庫,旨在大大簡化數(shù)據(jù)存儲(chǔ)的方式,從而加快交易處理量。關(guān)聯(lián)數(shù)據(jù)庫不是使用數(shù)十個(gè)相互關(guān)聯(lián)的表、索引和訪問路徑構(gòu)建數(shù)據(jù)庫模式,而是依賴于一組唯一的標(biāo)識(shí)符來提供對(duì)存儲(chǔ)在數(shù)據(jù)庫中的業(yè)務(wù)實(shí)體的訪問。雖然支持SQL,但訪問主要是通過一定數(shù)量的API。
IBM i的另一個(gè)數(shù)據(jù)庫是ERROS connectionist數(shù)據(jù)庫,由英國IBM i開發(fā)人員Rob Dixon開發(fā)。Dixon最初開發(fā)了ERROS的初衷是支持他正在開發(fā)的S / 38應(yīng)用程序,其在尊重權(quán)威和維持高性能的同時(shí)支持了靈活性。
作為connectionist數(shù)據(jù)庫,ERROS特別適用于定義雙向關(guān)系,無需查詢語言即可導(dǎo)向關(guān)系的任一方,擁有幾乎存儲(chǔ)無限深度的層級(jí)能力。
值得注意的是,與其它數(shù)據(jù)庫想要提到DB2相比,ERROS更像是站在DB2的肩膀上。Dixon表示,ERROS核心的“通用數(shù)據(jù)結(jié)構(gòu)”存儲(chǔ)了所有數(shù)據(jù)定義、應(yīng)用程序定義和權(quán)限以及所有用戶數(shù)據(jù)。
Dixon 表示ERROS允許增量開發(fā),沒有詳細(xì)的用戶規(guī)范,沒有物理文件設(shè)計(jì)或規(guī)范化,沒有SQL,我創(chuàng)建ERROS的初衷是為人文創(chuàng)造一個(gè)先進(jìn)的系統(tǒng),但它同樣也適用于在商業(yè)環(huán)境中創(chuàng)建主要的互聯(lián)網(wǎng)系統(tǒng),包括事務(wù)處理。”
數(shù)據(jù)庫作為工具
即使數(shù)據(jù)的性質(zhì)發(fā)生了變化,我們也要使用數(shù)據(jù)庫來存儲(chǔ)它。IBM在交易處理方面的優(yōu)勢存在并將長期存在下去。但是現(xiàn)在大部分企業(yè)的數(shù)據(jù)都不是關(guān)系型的,并不適合整合在RDBMS中。
所以IBM也在積極的適應(yīng)這些改變,向MariaDB為開源編程語言開發(fā)的插件提供兼容性。正如程序員的開發(fā)工具正在逐漸變化,數(shù)據(jù)庫的數(shù)量和種類也在變化。為了確保能夠和快速變化的IT保持同步,IBM會(huì)將更多更新的開發(fā)技術(shù)整合到IBM i 平臺(tái)中,讓程序員更容易的將不同類型的數(shù)據(jù)處理引擎插入到IBM i中。