NoSQL再度面臨失敗危機(jī)
譯文【51CTO獨(dú)家特稿】在那篇文章收到的評(píng)論當(dāng)中,很多讀者朋友都糾結(jié)于對(duì)NoSQL的評(píng)估難題身上——相關(guān)利基解決方案數(shù)以百萬(wàn)計(jì),因此實(shí)際效果如何“取決于用戶的實(shí)際需求。”即使我們已經(jīng)明確了自己的需求,仍然需要通過(guò)深入的研究與學(xué)習(xí)來(lái)掌握特定NoSQL引擎是否有能力滿足這類需求。大家可能無(wú)法對(duì)這么多解決方案進(jìn)行一一評(píng)估,畢竟其數(shù)量實(shí)在太過(guò)龐大。更糟糕的是,我們還被迫閱讀大量特定引擎的說(shuō)明文檔,從而了解自己要如何借助NoSQL達(dá)到自己的預(yù)期效果——而其中大部分內(nèi)容似乎是在高度關(guān)注用戶是否擁有關(guān)系型數(shù)據(jù)或者是否喜愛(ài)ACID事務(wù)處理方式。
相比之下,關(guān)系型SQL數(shù)據(jù)庫(kù)就擁有非常突出的優(yōu)勢(shì),大家很清楚該引擎能夠在任何產(chǎn)品當(dāng)中發(fā)揮同樣的作用。我們需要面對(duì)的選擇數(shù)量也更少,而且這類選項(xiàng)往往更成熟也經(jīng)過(guò)了時(shí)間的檢驗(yàn)。也就是說(shuō),大家作出糟糕判斷的可能性要遠(yuǎn)遠(yuǎn)低于RDBMS。
NoSQL的***吸引力源自其向外擴(kuò)展的便捷性與強(qiáng)大的數(shù)據(jù)吞吐能力。盡管能夠擁有可以與RDBMS相媲美的可擴(kuò)展性確實(shí)令人心動(dòng),但現(xiàn)實(shí)告訴我們、99%的應(yīng)用程序在執(zhí)行流程中根本不會(huì)對(duì)擴(kuò)展性提出任何要求。大家可以看看Stack Exchange,他們是世界上現(xiàn)存的最繁忙的站點(diǎn),并且利用商用服務(wù)器運(yùn)行數(shù)據(jù)庫(kù)系統(tǒng)。為了承載這樣的工作負(fù)載,該網(wǎng)站直接購(gòu)買了一臺(tái)擁有60核心服務(wù)器并配備6TB的內(nèi)存容量,事實(shí)上我們很難想象這樣的設(shè)備還需要什么后續(xù)擴(kuò)展。因此,請(qǐng)大家認(rèn)真考慮這樣一個(gè)問(wèn)題:我們是否真能從NoSQL的可擴(kuò)展能力身上獲得實(shí)際收益?
NoSQL無(wú)存儲(chǔ)模式成弊端?
起初筆者認(rèn)為NoSQL文檔存儲(chǔ)的無(wú)模式特性會(huì)成為一大優(yōu)勢(shì),然而筆者在隨后的調(diào)查當(dāng)中逐漸改變了自己的觀點(diǎn)。至少就關(guān)系Web應(yīng)用程序而言,無(wú)模式機(jī)制只會(huì)造成代碼復(fù)雜程度的提升、并沒(méi)有任何其它貢獻(xiàn)。更進(jìn)一步,筆者喜歡結(jié)構(gòu)、特別是清晰的數(shù)據(jù)結(jié)構(gòu)。誠(chéng)然,如果大家打算構(gòu)建一套特殊類型的數(shù)據(jù)庫(kù),用于處理數(shù)據(jù)歸檔、文件存儲(chǔ)或者事件日志之類任務(wù),那么無(wú)模式機(jī)制確實(shí)有其獨(dú)特優(yōu)勢(shì)。但對(duì)于無(wú)此需求的Web應(yīng)用程序來(lái)說(shuō),NoSQL則顯得無(wú)甚意義——畢竟這不是社交網(wǎng)絡(luò)。
與關(guān)系型數(shù)據(jù)庫(kù)相比,采用文檔存儲(chǔ)機(jī)制會(huì)讓大家的軟件在各個(gè)層面上迎來(lái)更突出的復(fù)雜性難題。我們可以將NoSQL視為一套單純的文件存儲(chǔ)系統(tǒng),其中文件名代表鍵、而文件內(nèi)容則代表值。大家可以在這些文件當(dāng)中保存任何內(nèi)容,并快速對(duì)其進(jìn)行讀取與寫(xiě)入,然而存儲(chǔ)背后并不存在任何處理能力。(當(dāng)然,在這里筆者要?dú)w納一下,NoSQL引擎在對(duì)這些文件進(jìn)行管理與優(yōu)化方面表現(xiàn)優(yōu)異,但卻對(duì)數(shù)據(jù)內(nèi)容本身一無(wú)所知。)關(guān)系型數(shù)據(jù)庫(kù)當(dāng)中的內(nèi)容認(rèn)知特性全部消失,這迫使大家只能自行完成SQL代碼能夠自動(dòng)處理的各項(xiàng)事務(wù)……而且是針對(duì)每一款應(yīng)用程序。這樣的日常成本對(duì)于大多數(shù)應(yīng)用程序而言都是不必要也是不可接受的。
即使是那些有能力創(chuàng)建NoSQL引擎的卓越技術(shù)人才自己也很難對(duì)自己的產(chǎn)品進(jìn)行用例描述。通過(guò)相關(guān)評(píng)論可以看到,不少開(kāi)發(fā)者都在努力宣傳自己的產(chǎn)品、但卻無(wú)法給出讓用戶選擇NoSQL的真正有說(shuō)服力的理由。SaaS應(yīng)用程序其實(shí)基本不可能徹底擺脫與關(guān)系數(shù)據(jù)的交集。在這種情況下,大家從RDBMS系統(tǒng)當(dāng)中獲得的功能特性要遠(yuǎn)遠(yuǎn)勝過(guò)NoSQL系統(tǒng)。筆者認(rèn)為NoSQL引擎現(xiàn)在需要高度關(guān)注那些過(guò)去被嚴(yán)重忽略的層面與問(wèn)題。盡管目前充斥著大量NoSQL能夠?yàn)殛P(guān)系型應(yīng)用程序帶來(lái)突出性能表現(xiàn)的宣傳,但實(shí)際效果恐怕還要讓各位用戶親身驗(yàn)證。能夠切實(shí)從NoSQL身上受益的應(yīng)用程序在數(shù)量上明顯少于能夠從SQL身上受益的應(yīng)用。一旦宣傳炒作風(fēng)頭漸消、NoSQL引擎的數(shù)量也降低到合理的水平,筆者認(rèn)為到那時(shí)NoSQL才會(huì)真正在特定場(chǎng)景中成為一款優(yōu)秀的工具。筆者還認(rèn)為,NoSQL未來(lái)更可能成為SQL系統(tǒng)的一種有效補(bǔ)充而非替代方案。就目前而言,筆者將繼續(xù)堅(jiān)持自己的SQL路線不動(dòng)搖。
原文鏈接:
http://www.itworld.com/big-data/428717/nosql-no-go-once-again?source=ITWNLE_nlt_tonight_2014-07-25
原文標(biāo)題:NoSQL is a No Go Once Again