JSON并不是問題的關(guān)鍵:當心NoSQL在RDBMS中的大肆清洗
譯文想用數(shù)據(jù)庫,我們該選關(guān)系型還是NoSQL?曾幾何時,二者之間還存在著明顯的差異,但隨著近年來一系列關(guān)系型數(shù)據(jù)庫中對JSON支持能力的引入,原本明確的邊界開始變得愈發(fā)模糊。
但納入JSON支持能力不是應該讓RDBMS擁有更為雄厚的競爭資本,從而與NoSQL展開更加激烈的市場對抗么?話是沒錯,但從長遠角度看卻并非如此。關(guān)系型數(shù)據(jù)庫與NoSQL產(chǎn)品之間的真正差異仍然深在root與core層面,而且二者絕不可能因此而“攻守之勢異也”,即Oracle沒辦法憑借著JSON支持轉(zhuǎn)型、Hadoop也絕不會借助SQL查詢而倒戈。
JSON并不是問題的關(guān)鍵
首先,JSON支持能力本身并不是決定一款數(shù)據(jù)庫產(chǎn)品應否屬于NoSQL陣營的標準。AdRem軟件公司的Tomasz Kunicki(曾創(chuàng)造出NetCrunch監(jiān)控系統(tǒng),其中使用了內(nèi)存內(nèi)、SQL以及NoSQL等多種技術(shù))贊同道:“JSON本身其實決定不了什么。它只是一種更為便捷的數(shù)據(jù)表示方式,特別是在大家利用JavaScript編寫代碼的場景之下。”
根據(jù)Kunicki的意見,NoSQL類方案的真正核心在于其“無模式數(shù)據(jù)庫與可擴展能力——但與大多數(shù)人的印象相左,這并不意味著NoSQL不需要數(shù)據(jù)庫建模。”他同時指出,這種誤解引發(fā)了關(guān)于NoSQL技術(shù)的大量不切實際宣傳與濫用。事實上,此類方案“特別適用于以時間為基礎的數(shù)據(jù)(且這些數(shù)據(jù)由該應用程序生成)處理場景”。
作為長期效力于微軟公司的老員工兼Snowflake數(shù)據(jù)倉庫即服務方案的聯(lián)合***之一,Bob Muglia認為關(guān)系型與NoSQL數(shù)據(jù)庫之間的本質(zhì)差異在于二者在目標用途方面的設計思路。
Muglia指出,關(guān)系型數(shù)據(jù)庫在創(chuàng)建過程中強調(diào)高度一致性,但同時以速度與規(guī)模作為妥協(xié)因素——至少以此構(gòu)建起速度出色且規(guī)模龐大的數(shù)據(jù)庫體系需要付出高昂的成本并面臨一系列難題。NoSQL則在一定程度上犧牲了不同節(jié)點之間的一致性水平,但借上實現(xiàn)了理想的速度表現(xiàn)與可擴展能力。
但這并沒有阻止人們嘗試將NoSQL類型的速度與規(guī)模引入關(guān)系型數(shù)據(jù)庫的野心,只不過通常而言這是一項極難完成的突破。“我們構(gòu)建起Snowflake作為起點,并將MySQL作為原初系統(tǒng)來保存元數(shù)據(jù),從而滿足事務對于基于ACID數(shù)據(jù)的全面需求,”Muglia指出。“除了規(guī)模擴展,我們還需要實現(xiàn)理想的可用性水平,也就是五個九——要想在關(guān)系型數(shù)據(jù)庫當中獲得五個九級別的可用性表現(xiàn)幾乎是癡人說夢……因此為了實現(xiàn)元數(shù)據(jù)存儲,我們將其由MySQL遷移到了全面基于ACID的NoSQL系統(tǒng)FoundationDB當中。”
添加了SQL查詢機制的NoSQL存儲體系仍然算是NoSQL
將JSON支持能力加入關(guān)系型數(shù)據(jù)庫并不會使其轉(zhuǎn)變?yōu)镹oSQL系統(tǒng),反過來、將SQL查詢機制納入NoSQL存儲體系也絕不會把它變成關(guān)系型數(shù)據(jù)庫——二者甚至連競爭關(guān)系都談不上。利用SQL對NoSQL存儲內(nèi)容進行查詢能夠為用戶帶來極大便利,且在其內(nèi)部無需對SQL(或者NoSQL)的運作方式進行任何再次定義。
正如Muglia所指出,由于SQL作為查詢系統(tǒng)的定位,目前已經(jīng)有趨勢將SQL引入分析體系,“無論其中包含哪些影響因素”(也就是深層當中運行的究竟是怎樣的機制),而由此引發(fā)的結(jié)果就是由SQL向事務系統(tǒng)轉(zhuǎn)型,“至少體現(xiàn)在高擴展能力與高可用性方面”。
Kunicki認為不同數(shù)據(jù)庫系統(tǒng)之間的固有差異必須得到認同與尊重。“將SQL添加到NoSQL數(shù)據(jù)庫當中,”他表示,“并將JSON文件的支持能力加入SQL數(shù)據(jù)庫只不過是一種嘗試欺騙用戶的表面性處理方式。”
當然,也有不少從業(yè)者真心看好將關(guān)系型數(shù)據(jù)庫(ACID事務)與NoSQL(速度與可擴展能力)雙方優(yōu)勢加以合并的可行性與重要性。除了FoundationDB之外,目前還有包括Splice Machine(間接脫胎于Hadoop與Apache Derby項目)在內(nèi)的一系列其它項目與產(chǎn)品正努力實現(xiàn)這項目標。
這一領域仍然處于起步階段,但真正的下一代產(chǎn)品很可能正來源于那些積極甚至有些激進的實驗性嘗試,而非簡單將數(shù)據(jù)格式或者查詢系統(tǒng)等底層技術(shù)組件進行彼此互換。
英文:http://www.infoworld.com/article/2863018/nosql/watch-out-for-nosql-washing-in-your-rdbms.html